alignment_trap r4, r7, __temp_und
zero_fp
tst r6, #PSR_T_BIT @ Thumb mode?
- bne fpundefinstr
+ bne fpundefinstr @ ignore FP
adrsvc al, r9, ret_from_exception @ r9 = normal FP return
adrsvc al, lr, fpundefinstr @ lr = undefined instr return
-call_fpe: get_thread_info r10 @ get current thread
+call_fpe: set_cpsr_c r0, #MODE_SVC @ Enable interrupts
+ get_thread_info r10 @ get current thread
ldr r4, [r10, #TI_TASK] @ get current task
mov r8, #1
strb r8, [r4, #TSK_USED_MATH] @ set current->used_math
add r10, r10, #TI_FPSTATE @ r10 = workspace
ldr pc, [r4] @ Call FP module USR entry point
-fpundefinstr: set_cpsr_c r0, #MODE_SVC @ Enable interrupts
- mov r0, sp
+fpundefinstr: mov r0, sp
adrsvc al, lr, ret_from_exception
b do_undefinstr
unsigned int EmulateAll(unsigned int opcode)
{
unsigned int nRc = 1, code;
- unsigned long flags;
-
- save_flags(flags); sti();
code = opcode & 0x00000f00;
if (code == 0x00000100 || code == 0x00000200)
}
}
- restore_flags(flags);
-
return(nRc);
}