mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-07-11 21:49:12 +00:00
parent
a988896048
commit
f317a47cd8
15 changed files with 315 additions and 253 deletions
52
third_party/xed/x86.h
vendored
52
third_party/xed/x86.h
vendored
|
@ -202,31 +202,33 @@ struct XedDecodedInst {
|
|||
struct XedOperands op;
|
||||
};
|
||||
|
||||
forceinline void xed_operands_set_mode(struct XedOperands *p, int mmode) {
|
||||
p->realmode = false;
|
||||
switch (mmode) {
|
||||
default:
|
||||
case XED_MACHINE_MODE_LONG_64:
|
||||
p->mode = XED_MODE_LONG;
|
||||
return;
|
||||
case XED_MACHINE_MODE_LEGACY_32:
|
||||
case XED_MACHINE_MODE_LONG_COMPAT_32:
|
||||
p->mode = XED_MODE_LEGACY;
|
||||
break;
|
||||
case XED_MACHINE_MODE_REAL:
|
||||
p->realmode = true;
|
||||
p->mode = XED_MODE_REAL;
|
||||
break;
|
||||
case XED_MACHINE_MODE_UNREAL:
|
||||
p->realmode = true;
|
||||
p->mode = XED_MODE_LEGACY;
|
||||
break;
|
||||
case XED_MACHINE_MODE_LEGACY_16:
|
||||
case XED_MACHINE_MODE_LONG_COMPAT_16:
|
||||
p->mode = XED_MODE_REAL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
#define xed_operands_set_mode(p, machine_mode) \
|
||||
do { \
|
||||
struct XedOperands *__p = p; \
|
||||
__p->realmode = false; \
|
||||
switch (machine_mode) { \
|
||||
default: \
|
||||
case XED_MACHINE_MODE_LONG_64: \
|
||||
__p->mode = XED_MODE_LONG; \
|
||||
break; \
|
||||
case XED_MACHINE_MODE_LEGACY_32: \
|
||||
case XED_MACHINE_MODE_LONG_COMPAT_32: \
|
||||
__p->mode = XED_MODE_LEGACY; \
|
||||
break; \
|
||||
case XED_MACHINE_MODE_REAL: \
|
||||
__p->realmode = true; \
|
||||
__p->mode = XED_MODE_REAL; \
|
||||
break; \
|
||||
case XED_MACHINE_MODE_UNREAL: \
|
||||
__p->realmode = true; \
|
||||
__p->mode = XED_MODE_LEGACY; \
|
||||
break; \
|
||||
case XED_MACHINE_MODE_LEGACY_16: \
|
||||
case XED_MACHINE_MODE_LONG_COMPAT_16: \
|
||||
__p->mode = XED_MODE_REAL; \
|
||||
break; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
extern const char kXedErrorNames[];
|
||||
extern const uint8_t kXedEamode[2][3];
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue