]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blobdiff - gdb/gdbserver/win32-arm-low.c
update copyright year range in GDB files
[thirdparty/binutils-gdb.git] / gdb / gdbserver / win32-arm-low.c
index 6c4b80a4819b0c56ed390302cb8c743101cc6be5..45a919b107938ceab6ddabd13cc0323ab809c2ca 100644 (file)
@@ -1,10 +1,10 @@
-/* Copyright (C) 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2017 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 2 of the License, or
+   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,
@@ -13,9 +13,7 @@
    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, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "server.h"
 #include "win32-low.h"
 #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 (win32_thread_info *th, DEBUG_EVENT* current_event)
+arm_get_thread_context (win32_thread_info *th)
 {
   th->context.ContextFlags = \
     CONTEXT_FULL | \
@@ -34,12 +36,6 @@ arm_get_thread_context (win32_thread_info *th, DEBUG_EVENT* current_event)
   GetThreadContext (th->h, &th->context);
 }
 
-static void
-arm_set_thread_context (win32_thread_info *th, DEBUG_EVENT* current_event)
-{
-  SetThreadContext (th->h, &th->context);
-}
-
 #define context_offset(x) ((int)&(((CONTEXT *)NULL)->x))
 static const int mappings[] = {
   context_offset (R0),
@@ -91,33 +87,48 @@ regptr (CONTEXT* c, int r)
 
 /* Fetch register from gdbserver regcache data.  */
 static void
-arm_fetch_inferior_register (win32_thread_info *th, int r)
+arm_fetch_inferior_register (struct regcache *regcache,
+                            win32_thread_info *th, int r)
 {
   char *context_offset = regptr (&th->context, r);
-  supply_register (r, context_offset);
+  supply_register (regcache, r, context_offset);
 }
 
 /* Store a new register value into the thread context of TH.  */
 static void
-arm_store_inferior_register (win32_thread_info *th, int r)
+arm_store_inferior_register (struct regcache *regcache,
+                            win32_thread_info *th, int r)
+{
+  collect_register (regcache, r, regptr (&th->context, r));
+}
+
+static void
+arm_arch_setup (void)
 {
-  collect_register (r, regptr (&th->context, r));
+  init_registers_arm ();
+  win32_tdesc = tdesc_arm;
 }
 
 /* Correct in either endianness.  We do not support Thumb yet.  */
-static const unsigned long arm_wince_breakpoint = 0xe6000001;
+static const unsigned long arm_wince_breakpoint = 0xe6000010;
 #define arm_wince_breakpoint_len 4
 
 struct win32_target_ops the_low_target = {
+  arm_arch_setup,
   sizeof (mappings) / sizeof (mappings[0]),
   NULL, /* initial_stuff */
   arm_get_thread_context,
-  arm_set_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,
-  "arm" /* arch_string */
+  /* 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 */
 };