X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fsparc-ravenscar-thread.c;h=3455677ab65f3ead3845cf9d38e781af8b46194b;hb=2f4fcf00399bc0ad5a4fed6b530128e8be4f40da;hp=43a20690daef65a958e0cd5a24c78cf778c298eb;hpb=0b1afbb37b6c21c50564ead74decadc13eba73c5;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/sparc-ravenscar-thread.c b/gdb/sparc-ravenscar-thread.c index 43a20690da..3455677ab6 100644 --- a/gdb/sparc-ravenscar-thread.c +++ b/gdb/sparc-ravenscar-thread.c @@ -1,6 +1,6 @@ /* Ravenscar SPARC target support. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2020 Free Software Foundation, Inc. This file is part of GDB. @@ -24,12 +24,13 @@ #include "inferior.h" #include "ravenscar-thread.h" #include "sparc-ravenscar-thread.h" +#include "gdbarch.h" -static void sparc_ravenscar_fetch_registers (struct regcache *regcache, - int regnum); -static void sparc_ravenscar_store_registers (struct regcache *regcache, - int regnum); -static void sparc_ravenscar_prepare_to_store (struct regcache *regcache); +struct sparc_ravenscar_ops : public ravenscar_arch_ops +{ + void fetch_registers (struct regcache *, int) override; + void store_registers (struct regcache *, int) override; +}; /* Register offsets from a referenced address (exempli gratia the Thread_Descriptor). The referenced address depends on the register @@ -62,13 +63,13 @@ static void supply_register_at_address (struct regcache *regcache, int regnum, CORE_ADDR register_addr) { - struct gdbarch *gdbarch = get_regcache_arch (regcache); + struct gdbarch *gdbarch = regcache->arch (); int buf_size = register_size (gdbarch, regnum); - char *buf; + gdb_byte *buf; - buf = (char *) alloca (buf_size); + buf = (gdb_byte *) alloca (buf_size); read_memory (register_addr, buf, buf_size); - regcache_raw_supply (regcache, regnum, buf); + regcache->raw_supply (regnum, buf); } /* Return true if, for a non-running thread, REGNUM has been saved on the @@ -100,10 +101,10 @@ register_in_thread_descriptor_p (int regnum) /* to_fetch_registers when inferior_ptid is different from the running thread. */ -static void -sparc_ravenscar_fetch_registers (struct regcache *regcache, int regnum) +void +sparc_ravenscar_ops::fetch_registers (struct regcache *regcache, int regnum) { - struct gdbarch *gdbarch = get_regcache_arch (regcache); + struct gdbarch *gdbarch = regcache->arch (); const int sp_regnum = gdbarch_sp_regnum (gdbarch); const int num_regs = gdbarch_num_regs (gdbarch); int current_regnum; @@ -112,7 +113,7 @@ sparc_ravenscar_fetch_registers (struct regcache *regcache, int regnum) ULONGEST stack_address; /* The tid is the thread_id field, which is a pointer to the thread. */ - thread_descriptor_address = (CORE_ADDR) ptid_get_tid (inferior_ptid); + thread_descriptor_address = (CORE_ADDR) inferior_ptid.tid (); /* Read the saved SP in the context buffer. */ current_address = thread_descriptor_address @@ -140,29 +141,20 @@ sparc_ravenscar_fetch_registers (struct regcache *regcache, int regnum) } } -/* to_prepare_to_store when inferior_ptid is different from the running - thread. */ - -static void -sparc_ravenscar_prepare_to_store (struct regcache *regcache) -{ - /* Nothing to do. */ -} - /* to_store_registers when inferior_ptid is different from the running thread. */ -static void -sparc_ravenscar_store_registers (struct regcache *regcache, int regnum) +void +sparc_ravenscar_ops::store_registers (struct regcache *regcache, int regnum) { - struct gdbarch *gdbarch = get_regcache_arch (regcache); + struct gdbarch *gdbarch = regcache->arch (); int buf_size = register_size (gdbarch, regnum); - char buf [buf_size]; + gdb_byte buf[buf_size]; ULONGEST register_address; if (register_in_thread_descriptor_p (regnum)) register_address = - ptid_get_tid (inferior_ptid) + sparc_register_offsets [regnum]; + inferior_ptid.tid () + sparc_register_offsets [regnum]; else if (register_on_stack_p (regnum)) { regcache_cooked_read_unsigned (regcache, SPARC_SP_REGNUM, @@ -172,18 +164,13 @@ sparc_ravenscar_store_registers (struct regcache *regcache, int regnum) else return; - regcache_raw_collect (regcache, regnum, buf); + regcache->raw_collect (regnum, buf); write_memory (register_address, buf, buf_size); } -static struct ravenscar_arch_ops sparc_ravenscar_ops = -{ - sparc_ravenscar_fetch_registers, - sparc_ravenscar_store_registers, - sparc_ravenscar_prepare_to_store -}; +static struct sparc_ravenscar_ops sparc_ravenscar_ops; /* Register ravenscar_arch_ops in GDBARCH. */