mirror of
https://github.com/Stichting-MINIX-Research-Foundation/pkgsrc-ng.git
synced 2025-09-24 04:03:34 -04:00
35 lines
1.0 KiB
C
35 lines
1.0 KiB
C
$NetBSD: patch-ic_m68k_m6888x.c,v 1.1 2013/12/28 19:16:48 martin Exp $
|
|
|
|
Patch from upstream CVS: fix emulation of fmovel #IMM, %fpcr
|
|
|
|
--- ic/m68k/m6888x.c.orig 2007-08-25 22:37:30.000000000 +0200
|
|
+++ ic/m68k/m6888x.c 2013-12-23 13:12:54.000000000 +0100
|
|
@@ -1765,9 +1765,10 @@ TME_M68K_INSN(tme_m68k_fmovemctl)
|
|
}
|
|
|
|
/* if this isn't a data register direct EA or an address register
|
|
- direct EA, this instruction can fault: */
|
|
+ direct EA or an immediate EA, this instruction can fault: */
|
|
if (ea_mode != 0
|
|
- && ea_mode != 1) {
|
|
+ && ea_mode != 1
|
|
+ && (ea_mode != 7 || ea_reg != 4)) {
|
|
TME_M68K_INSN_CANFAULT;
|
|
}
|
|
|
|
@@ -1822,6 +1823,14 @@ TME_M68K_INSN(tme_m68k_fmovemctl)
|
|
}
|
|
}
|
|
|
|
+ /* if this is an immediate EA: */
|
|
+ else if (ea_mode == 7 && ea_reg == 4) {
|
|
+ if (__tme_predict_false(register_to_memory)) {
|
|
+ TME_M68K_INSN_EXCEPTION(TME_M68K_EXCEPTION_ILL);
|
|
+ }
|
|
+ *value = ic->tme_m68k_ireg_imm32;
|
|
+ }
|
|
+
|
|
/* otherwise, this is a memory EA: */
|
|
else {
|
|
if (register_to_memory) {
|