Revision fe57ca82 hw/alpha_palcode.c
b/hw/alpha_palcode.c | ||
---|---|---|
1061 | 1061 |
target_long ret; |
1062 | 1062 |
|
1063 | 1063 |
switch (palcode) { |
1064 |
case 0x80: |
|
1065 |
/* BPT */ |
|
1066 |
qemu_log("BPT\n"); |
|
1067 |
/* FIXME: Sends SIGTRAP, si_code=TRAP_BRKPT. */ |
|
1068 |
exit(1); |
|
1069 |
case 0x81: |
|
1070 |
/* BUGCHK */ |
|
1071 |
qemu_log("BUGCHK\n"); |
|
1072 |
/* FIXME: Sends SIGTRAP, si_code=SI_FAULT. */ |
|
1073 |
exit(1); |
|
1064 | 1074 |
case 0x83: |
1065 | 1075 |
/* CALLSYS */ |
1066 | 1076 |
qemu_log("CALLSYS n " TARGET_FMT_ld "\n", env->ir[0]); |
... | ... | |
1075 | 1085 |
env->ir[IR_V0] = -ret; |
1076 | 1086 |
} |
1077 | 1087 |
break; |
1088 |
case 0x86: |
|
1089 |
/* IMB */ |
|
1090 |
qemu_log("IMB\n"); |
|
1091 |
/* ??? We can probably elide the code using page_unprotect that is |
|
1092 |
checking for self-modifying code. Instead we could simply call |
|
1093 |
tb_flush here. Until we work out the changes required to turn |
|
1094 |
off the extra write protection, this can be a no-op. */ |
|
1095 |
break; |
|
1078 | 1096 |
case 0x9E: |
1079 | 1097 |
/* RDUNIQUE */ |
1080 | 1098 |
qemu_log("RDUNIQUE: " TARGET_FMT_lx "\n", env->unique); |
... | ... | |
1085 | 1103 |
qemu_log("WRUNIQUE: " TARGET_FMT_lx "\n", env->ir[IR_A0]); |
1086 | 1104 |
/* Handled in the translator for usermode. */ |
1087 | 1105 |
abort(); |
1106 |
case 0xAA: |
|
1107 |
/* GENTRAP */ |
|
1108 |
qemu_log("GENTRAP: " TARGET_FMT_lx "\n", env->ir[IR_A0]); |
|
1109 |
/* FIXME: This is supposed to send a signal: |
|
1110 |
SIGFPE: |
|
1111 |
GEN_INTOVF, GEN_INTDIV, GEN_FLTOVF, GEN_FLTDIV, |
|
1112 |
GEN_FLTUND, GEN_FLTINV, GEN_FLTINE, GEN_ROPRAND |
|
1113 |
SIGTRAP: |
|
1114 |
others |
|
1115 |
with various settings of si_code. */ |
|
1116 |
exit(1); |
|
1088 | 1117 |
default: |
1089 |
qemu_log("%s: unhandled palcode %02x\n", |
|
1090 |
__func__, palcode); |
|
1118 |
qemu_log("%s: unhandled palcode %02x\n", __func__, palcode); |
|
1091 | 1119 |
exit(1); |
1092 | 1120 |
} |
1093 | 1121 |
} |
Also available in: Unified diff