X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fmips-arch.c;h=7b68e65f5349c7673f8276596a6de83c4e6a09ec;hb=c3699db2053ff3b5ac6a98d4431c3789496002d8;hp=a65a38164d35e33cc8fd13c7256e7c3838fc4265;hpb=4ae1b794a5d6a90794468cf8017f5307f2c30dfe;p=sbcl.git diff --git a/src/runtime/mips-arch.c b/src/runtime/mips-arch.c index a65a381..7b68e65 100644 --- a/src/runtime/mips-arch.c +++ b/src/runtime/mips-arch.c @@ -106,10 +106,18 @@ emulate_branch(os_context_t *context, unsigned long inst) void arch_skip_instruction(os_context_t *context) { /* Skip the offending instruction */ - if (os_context_bd_cause(context)) + if (os_context_bd_cause(context)) { + /* Currently, we never get here, because Linux' support for + bd_cause seems not terribly solid (c.f os_context_bd_cause + in mips-linux-os.c). If a port to Irix comes along, this + code will be executed, because presumably Irix' support is + better (it can hardly be worse). We lose() to remind the + porter to review this code. -- CSR, 2002-09-06 */ + lose("bd_cause branch taken; review code for new OS?\n"); *os_context_pc_addr(context) = emulate_branch(context, *(unsigned long *) *os_context_pc_addr(context)); + } else *os_context_pc_addr(context) += 4;