X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fppc-ravenscar-thread.c;h=fca826bc8468ebadc47ad3a016759cc4bb591d9a;hb=7abb8d81115a2a748443f041e37cc13a70b34faa;hp=f430aa5fe6606c77a8b9ea9198d8af3ffbaee9fd;hpb=debb1f09a1d44c72b1a8c4c34d0408f991a3947b;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/ppc-ravenscar-thread.c b/gdb/ppc-ravenscar-thread.c index f430aa5fe6..fca826bc84 100644 --- a/gdb/ppc-ravenscar-thread.c +++ b/gdb/ppc-ravenscar-thread.c @@ -1,6 +1,6 @@ /* Ravenscar PowerPC target support. - Copyright 2011-2012 Free Software Foundation, Inc. + Copyright (C) 2011-2019 Free Software Foundation, Inc. This file is part of GDB. @@ -119,13 +119,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 @@ -147,15 +147,14 @@ ppc_ravenscar_generic_fetch_registers (const struct ravenscar_reg_info *reg_info, struct regcache *regcache, int regnum) { - struct gdbarch *gdbarch = get_regcache_arch (regcache); - const int sp_regnum = gdbarch_sp_regnum (gdbarch); + struct gdbarch *gdbarch = regcache->arch (); const int num_regs = gdbarch_num_regs (gdbarch); int current_regnum; CORE_ADDR current_address; CORE_ADDR thread_descriptor_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 registers. */ for (current_regnum = 0; current_regnum < num_regs; current_regnum++) @@ -170,15 +169,6 @@ ppc_ravenscar_generic_fetch_registers } } -/* to_prepare_to_store when inferior_ptid is different from the running - thread. */ - -static void -ppc_ravenscar_generic_prepare_to_store (struct regcache *regcache) -{ - /* Nothing to do. */ -} - /* to_store_registers when inferior_ptid is different from the running thread. */ @@ -187,18 +177,18 @@ ppc_ravenscar_generic_store_registers (const struct ravenscar_reg_info *reg_info, 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 (reg_info, regnum)) register_address - = ptid_get_tid (inferior_ptid) + reg_info->context_offsets [regnum]; + = inferior_ptid.tid () + reg_info->context_offsets [regnum]; else return; - regcache_raw_collect (regcache, regnum, buf); + regcache->raw_collect (regnum, buf); write_memory (register_address, buf, buf_size); @@ -212,32 +202,27 @@ static const struct ravenscar_reg_info ppc_reg_info = ARRAY_SIZE (powerpc_context_offsets), }; -/* Implement the to_fetch_registers ravenscar_arch_ops method - for most PowerPC targets. */ +struct ppc_ravenscar_powerpc_ops : public ravenscar_arch_ops +{ + void fetch_registers (struct regcache *, int) override; + void store_registers (struct regcache *, int) override; +}; -static void -ppc_ravenscar_powerpc_fetch_registers (struct regcache *regcache, int regnum) +void +ppc_ravenscar_powerpc_ops::fetch_registers (struct regcache *regcache, int regnum) { ppc_ravenscar_generic_fetch_registers (&ppc_reg_info, regcache, regnum); } -/* Implement the to_store_registers ravenscar_arch_ops method - for most PowerPC targets. */ - -static void -ppc_ravenscar_powerpc_store_registers (struct regcache *regcache, int regnum) +void +ppc_ravenscar_powerpc_ops::store_registers (struct regcache *regcache, int regnum) { ppc_ravenscar_generic_store_registers (&ppc_reg_info, regcache, regnum); } /* The ravenscar_arch_ops vector for most PowerPC targets. */ -static struct ravenscar_arch_ops ppc_ravenscar_powerpc_ops = -{ - ppc_ravenscar_powerpc_fetch_registers, - ppc_ravenscar_powerpc_store_registers, - ppc_ravenscar_generic_prepare_to_store -}; +static struct ppc_ravenscar_powerpc_ops ppc_ravenscar_powerpc_ops; /* Register ppc_ravenscar_powerpc_ops in GDBARCH. */ @@ -255,11 +240,14 @@ static const struct ravenscar_reg_info e500_reg_info = ARRAY_SIZE (e500_context_offsets), }; -/* Implement the to_fetch_registers ravenscar_arch_ops method - for E500 targets. */ +struct ppc_ravenscar_e500_ops : public ravenscar_arch_ops +{ + void fetch_registers (struct regcache *, int) override; + void store_registers (struct regcache *, int) override; +}; -static void -ppc_ravenscar_e500_fetch_registers (struct regcache *regcache, int regnum) +void +ppc_ravenscar_e500_ops::fetch_registers (struct regcache *regcache, int regnum) { ppc_ravenscar_generic_fetch_registers (&e500_reg_info, regcache, regnum); } @@ -267,20 +255,15 @@ ppc_ravenscar_e500_fetch_registers (struct regcache *regcache, int regnum) /* Implement the to_store_registers ravenscar_arch_ops method for E500 targets. */ -static void -ppc_ravenscar_e500_store_registers (struct regcache *regcache, int regnum) +void +ppc_ravenscar_e500_ops::store_registers (struct regcache *regcache, int regnum) { ppc_ravenscar_generic_store_registers (&e500_reg_info, regcache, regnum); } /* The ravenscar_arch_ops vector for E500 targets. */ -static struct ravenscar_arch_ops ppc_ravenscar_e500_ops = -{ - ppc_ravenscar_e500_fetch_registers, - ppc_ravenscar_e500_store_registers, - ppc_ravenscar_generic_prepare_to_store -}; +static struct ppc_ravenscar_e500_ops ppc_ravenscar_e500_ops; /* Register ppc_ravenscar_e500_ops in GDBARCH. */