diff options
Diffstat (limited to 'gdbserver/win32-arm-low.cc')
-rw-r--r-- | gdbserver/win32-arm-low.cc | 168 |
1 files changed, 0 insertions, 168 deletions
diff --git a/gdbserver/win32-arm-low.cc b/gdbserver/win32-arm-low.cc deleted file mode 100644 index aacf2cdf8cd..00000000000 --- a/gdbserver/win32-arm-low.cc +++ /dev/null @@ -1,168 +0,0 @@ -/* Copyright (C) 2007-2020 Free Software Foundation, Inc. - - This file is part of GDB. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. */ - -#include "server.h" -#include "win32-low.h" - -using namespace windows_nat; - -#ifndef CONTEXT_FLOATING_POINT -#define CONTEXT_FLOATING_POINT 0 -#endif - -/* Defined in auto-generated file reg-arm.c. */ -void init_registers_arm (void); -extern const struct target_desc *tdesc_arm; - -static void -arm_get_thread_context (windows_thread_info *th) -{ - th->context.ContextFlags = \ - CONTEXT_FULL | \ - CONTEXT_FLOATING_POINT; - - GetThreadContext (th->h, &th->context); -} - -#define context_offset(x) ((int)&(((CONTEXT *)NULL)->x)) -static const int mappings[] = { - context_offset (R0), - context_offset (R1), - context_offset (R2), - context_offset (R3), - context_offset (R4), - context_offset (R5), - context_offset (R6), - context_offset (R7), - context_offset (R8), - context_offset (R9), - context_offset (R10), - context_offset (R11), - context_offset (R12), - context_offset (Sp), - context_offset (Lr), - context_offset (Pc), - -1, /* f0 */ - -1, /* f1 */ - -1, /* f2 */ - -1, /* f3 */ - -1, /* f4 */ - -1, /* f5 */ - -1, /* f6 */ - -1, /* f7 */ - -1, /* fps */ - context_offset (Psr), -}; -#undef context_offset - -/* Return a pointer into a CONTEXT field indexed by gdb register number. - Return a pointer to an dummy register holding zero if there is no - corresponding CONTEXT field for the given register number. */ -static char * -regptr (CONTEXT* c, int r) -{ - if (mappings[r] < 0) - { - static ULONG zero; - /* Always force value to zero, in case the user tried to write - to this register before. */ - zero = 0; - return (char *) &zero; - } - else - return (char *) c + mappings[r]; -} - -/* Fetch register from gdbserver regcache data. */ -static void -arm_fetch_inferior_register (struct regcache *regcache, - windows_thread_info *th, int r) -{ - char *context_offset = regptr (&th->context, r); - supply_register (regcache, r, context_offset); -} - -/* Store a new register value into the thread context of TH. */ -static void -arm_store_inferior_register (struct regcache *regcache, - windows_thread_info *th, int r) -{ - collect_register (regcache, r, regptr (&th->context, r)); -} - -static void -arm_arch_setup (void) -{ - init_registers_arm (); - win32_tdesc = tdesc_arm; -} - -/* Implement win32_target_ops "num_regs" method. */ - -static int -arm_num_regs (void) -{ - return sizeof (mappings) / sizeof (mappings[0]), -} - -/* Correct in either endianness. We do not support Thumb yet. */ -static const unsigned long arm_wince_breakpoint = 0xe6000010; -#define arm_wince_breakpoint_len 4 - -/* Implement win32_target_ops "get_pc" method. */ - -static CORE_ADDR -arm_win32_get_pc (struct regcache *regcache) -{ - uint32_t pc; - - collect_register_by_name (regcache, "pc", &pc); - return (CORE_ADDR) pc; -} - -/* Implement win32_target_ops "set_pc" method. */ - -static void -arm_win32_set_pc (struct regcache *regcache, CORE_ADDR pc) -{ - uint32_t newpc = pc; - - supply_register_by_name (regcache, "pc", &newpc); -} - -struct win32_target_ops the_low_target = { - arm_arch_setup, - arm_num_regs, - NULL, /* initial_stuff */ - arm_get_thread_context, - NULL, /* prepare_to_resume */ - NULL, /* thread_added */ - arm_fetch_inferior_register, - arm_store_inferior_register, - NULL, /* single_step */ - (const unsigned char *) &arm_wince_breakpoint, - arm_wince_breakpoint_len, - 0, - arm_win32_get_pc, - arm_win32_set_pc, - /* Watchpoint related functions. See target.h for comments. */ - NULL, /* supports_z_point_type */ - NULL, /* insert_point */ - NULL, /* remove_point */ - NULL, /* stopped_by_watchpoint */ - NULL /* stopped_data_address */ -}; |