| Index: sim/cr16/simops.c
|
| diff --git a/sim/cr16/simops.c b/sim/cr16/simops.c
|
| index f8fee8a0d234ed6c281a7e37f98e4f4b95732148..fd922ed6fef30c0bb29899d590febb0503bd340c 100644
|
| --- a/sim/cr16/simops.c
|
| +++ b/sim/cr16/simops.c
|
| @@ -1,5 +1,5 @@
|
| /* Simulation code for the CR16 processor.
|
| - Copyright (C) 2008-2012 Free Software Foundation, Inc.
|
| + Copyright (C) 2008-2013 Free Software Foundation, Inc.
|
| Contributed by M Ranga Swami Reddy <MR.Swami.Reddy@nsc.com>
|
|
|
| This file is part of GDB, the GNU debugger.
|
| @@ -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
|
|
|