mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2025-02-04 08:08:01 +00:00
sim: cr16: improve trap handling
This commit is contained in:
parent
4881a75b8b
commit
5a06d7c470
@ -1,6 +1,8 @@
|
||||
2012-08-28 Kaushik Phatak <kaushik.phatak@kpitcummins.com>
|
||||
|
||||
* cr16_sim.h: Add defines for TRAP handling.
|
||||
* interp.c (sim_complete_command): New stub function.
|
||||
* simops.c: Breakpoint handling code.
|
||||
|
||||
2012-06-17 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
|
@ -472,3 +472,9 @@ extern void write_longlong PARAMS ((uint8 *addr, int64 data));
|
||||
PSR is masked for zero bits. */
|
||||
|
||||
extern creg_t move_to_cr (int cr, creg_t mask, creg_t val, int psw_hw_p);
|
||||
|
||||
#ifndef SIGTRAP
|
||||
#define SIGTRAP 5
|
||||
#endif
|
||||
/* Special purpose trap */
|
||||
#define TRAP_BREAKPOINT 8
|
||||
|
@ -1192,7 +1192,11 @@ sim_resume (SIM_DESC sd, int step, int siggnal)
|
||||
iaddr = imem_addr ((uint32)PC);
|
||||
if (iaddr == State.mem.fault)
|
||||
{
|
||||
#ifdef SIGBUS
|
||||
State.exception = SIGBUS;
|
||||
#else
|
||||
State.exception = SIGSEGV;
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -5059,6 +5059,8 @@ OP_14C_14 ()
|
||||
void
|
||||
OP_C_C ()
|
||||
{
|
||||
uint32 tmp;
|
||||
uint16 a;
|
||||
trace_input ("excp", OP_CONSTANT4, OP_VOID, OP_VOID);
|
||||
switch (OP[0])
|
||||
{
|
||||
@ -5465,9 +5467,24 @@ OP_C_C ()
|
||||
#endif
|
||||
|
||||
default:
|
||||
cr16_callback->error (cr16_callback, "Unknown syscall %d", FUNC);
|
||||
a = OP[0];
|
||||
switch (a)
|
||||
{
|
||||
case TRAP_BREAKPOINT:
|
||||
State.exception = SIGTRAP;
|
||||
tmp = (PC);
|
||||
JMP(tmp);
|
||||
trace_output_void ();
|
||||
break;
|
||||
case SIGTRAP: /* supervisor call ? */
|
||||
State.exception = SIG_CR16_EXIT;
|
||||
trace_output_void ();
|
||||
break;
|
||||
default:
|
||||
cr16_callback->error (cr16_callback, "Unknown syscall %d", FUNC);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ((uint16) result == (uint16) -1)
|
||||
RETERR (cr16_callback->get_errno(cr16_callback));
|
||||
else
|
||||
|
Loading…
x
Reference in New Issue
Block a user