diff options
author | Kevin Buettner <kevinb@redhat.com> | 2013-08-08 00:10:01 +0000 |
---|---|---|
committer | Kevin Buettner <kevinb@redhat.com> | 2013-08-08 00:10:01 +0000 |
commit | a0713a1a921ef4c75ee5dda9772ba88fd0f8ee76 (patch) | |
tree | 9fe648ab571d21386a4245a85bb1ec93beb8bddd /sim/rl78/gdb-if.c | |
parent | f6ed19b83f2cb8f27a4505250930deb77b9e695d (diff) | |
download | gdb-a0713a1a921ef4c75ee5dda9772ba88fd0f8ee76.tar.gz |
* gdb-if.c (hw_breakpoints): Remove.
(sim_store_register): Add an assert() to make sure PC is in range.
Delete code which referenced hw_breakpoints[].
Diffstat (limited to 'sim/rl78/gdb-if.c')
-rw-r--r-- | sim/rl78/gdb-if.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/sim/rl78/gdb-if.c b/sim/rl78/gdb-if.c index 04d4f0e1107..6b4660063bb 100644 --- a/sim/rl78/gdb-if.c +++ b/sim/rl78/gdb-if.c @@ -55,8 +55,6 @@ static struct sim_state the_minisim = { static int open; -static unsigned char hw_breakpoints[MEM_SIZE/8]; - static struct host_callback_struct *host_callbacks; /* Open an instance of the sim. For this sim, only one instance @@ -341,7 +339,15 @@ sim_store_register (SIM_DESC sd, int regno, unsigned char *buf, int length) val = get_le (buf, length); if (regno == sim_rl78_pc_regnum) - pc = val; + { + pc = val; + + /* The rl78 program counter is 20 bits wide. Ensure that GDB + hasn't picked up any stray bits. This has occurred when performing + a GDB "return" command in which the return address is obtained + from a 32-bit container on the stack. */ + assert ((pc & ~0x0fffff) == 0); + } else memory[reg_addr (regno)] = val; return size; @@ -456,13 +462,6 @@ sim_resume (SIM_DESC sd, int step, int sig_to_deliver) break; } - if (hw_breakpoints[pc >> 3] - && (hw_breakpoints[pc >> 3] & (1 << (pc & 0x7)))) - { - reason = sim_stopped; - siggnal = GDB_SIGNAL_TRAP; - break; - } rc = setjmp (decode_jmp_buf); if (rc == 0) rc = decode_opcode (); |