diff options
author | Andrew Cagney <cagney@redhat.com> | 2003-06-20 13:32:34 +0000 |
---|---|---|
committer | Andrew Cagney <cagney@redhat.com> | 2003-06-20 13:32:34 +0000 |
commit | 601cecf016bc104dc20b12630be28d3a73767ba6 (patch) | |
tree | f178ead92957cc6cce09dcd2c34b0fa165ba2ba0 /sim/ppc/sim_calls.c | |
parent | 8f3bab57754eb34346df536d6b7d5ec4a4255cbc (diff) | |
download | gdb-601cecf016bc104dc20b12630be28d3a73767ba6.zip gdb-601cecf016bc104dc20b12630be28d3a73767ba6.tar.gz gdb-601cecf016bc104dc20b12630be28d3a73767ba6.tar.bz2 |
2003-06-20 Andrew Cagney <cagney@redhat.com>
* sim_calls.c (sim_create_inferior): Assert that
psim_write_register succeeded.
(sim_fetch_register, sim_store_register): Make "regname" constant.
Delete Altivec hack. Return result from psim_read_register /
psim_write_register.
* psim.h (psim_read_register, psim_write_register): Change return
type to int. Update comments.
* psim.c: Update copyright.
(psim_stack): Assert that the psim_read_register worked.
(psim_read_register, psim_read_register): Return the register's
size. Allocate the cooked buffer dynamically.
* hw_register.c: Update copyright.
(do_register_init): Check that psim_write_register succeeded.
* hw_init.c: Update copyright.
(create_ppc_elf_stack_frame, create_ppc_aix_stack_frame): Assert
that the register transfer worked.
Diffstat (limited to 'sim/ppc/sim_calls.c')
-rw-r--r-- | sim/ppc/sim_calls.c | 32 |
1 files changed, 11 insertions, 21 deletions
diff --git a/sim/ppc/sim_calls.c b/sim/ppc/sim_calls.c index 22aa21b..040ce83 100644 --- a/sim/ppc/sim_calls.c +++ b/sim/ppc/sim_calls.c @@ -1,6 +1,6 @@ /* This file is part of the program psim. - Copyright (C) 1994-1996,1998, Andrew Cagney <cagney@highland.com.au> + Copyright 1994, 1995, 1996, 1998, 2003 Andrew Cagney 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 @@ -180,7 +180,7 @@ sim_write (SIM_DESC sd, SIM_ADDR mem, unsigned char *buf, int length) int sim_fetch_register (SIM_DESC sd, int regno, unsigned char *buf, int length) { - char *regname; + const char *regname; if (simulator == NULL) { return 0; @@ -194,43 +194,33 @@ sim_fetch_register (SIM_DESC sd, int regno, unsigned char *buf, int length) But there are loops that just walk through the entire list of names and try to get everything. */ regname = gdbarch_register_name (current_gdbarch, regno); - /* FIXME: ezannoni 2002/04/15 Remove the 'vr' and 'vscr' check - once AltiVec support is committed. */ - if (! regname || regname[0] == '\0' - || (regname[0] == 'v' && regname[1] == 'r') - || (strcmp (regname, "vscr") == 0)) + if (! regname || regname[0] == '\0') return -1; TRACE(trace_gdb, ("sim_fetch_register(regno=%d(%s), buf=0x%lx)\n", regno, regname, (long)buf)); - psim_read_register(simulator, MAX_NR_PROCESSORS, - buf, regname, raw_transfer); - return -1; + return psim_read_register(simulator, MAX_NR_PROCESSORS, + buf, regname, raw_transfer); } int sim_store_register (SIM_DESC sd, int regno, unsigned char *buf, int length) { - char *regname; + const char *regname; if (simulator == NULL) return 0; /* See comments in sim_fetch_register, above. */ regname = gdbarch_register_name (current_gdbarch, regno); - /* FIXME: ezannoni 2002/04/15 Remove the 'vr' and 'vscr' check - once AltiVec support is committed. */ - if (! regname || regname[0] == '\0' - || (regname[0] == 'v' && regname[1] == 'r') - || (strcmp (regname, "vscr") == 0)) + if (! regname || regname[0] == '\0') return -1; TRACE(trace_gdb, ("sim_store_register(regno=%d(%s), buf=0x%lx)\n", regno, regname, (long)buf)); - psim_write_register(simulator, MAX_NR_PROCESSORS, - buf, regname, raw_transfer); - return -1; + return psim_write_register(simulator, MAX_NR_PROCESSORS, + buf, regname, raw_transfer); } @@ -263,8 +253,8 @@ sim_create_inferior (SIM_DESC sd, psim_init(simulator); psim_stack(simulator, argv, envp); - psim_write_register(simulator, -1 /* all start at same PC */, - &entry_point, "pc", cooked_transfer); + ASSERT (psim_write_register(simulator, -1 /* all start at same PC */, + &entry_point, "pc", cooked_transfer) > 0); return SIM_RC_OK; } |