25 unsigned short ax
, _upper_ax
;
26 unsigned short bx
, _upper_bx
;
27 unsigned short cx
, _upper_cx
;
28 unsigned short dx
, _upper_dx
;
30 unsigned short si
, _upper_si
;
31 unsigned short di
, _upper_di
;
38 unsigned short flags
, _upper_flags
;
46 unsigned short _upper_ax
;
49 unsigned short _upper_bx
;
52 unsigned short _upper_cx
;
55 unsigned short _upper_dx
;
57 unsigned short si
, _upper_si
;
58 unsigned short di
, _upper_di
;
65 unsigned short flags
, _upper_flags
;
81 // Real mode interrupt vector interface
83 // (E)FLAGS can *only* be returned by this function, not set.
84 // Make sure all memory pointers are in SEG:OFFS format and
85 // not linear addresses, unless the interrupt handler
86 // specifically handles linear addresses.
87 int Int386(int ivec
, REGS
* in
, REGS
* out
);
89 // This macro tests the Carry Flag
90 // If CF is set then the call failed (usually)
91 #define INT386_SUCCESS(regs) ((regs.x.eflags & EFLAGS_CF) == 0)
94 VOID
ChainLoadBiosBootSectorCode(VOID
); // Implemented in boot.S
95 VOID
SoftReboot(VOID
); // Implemented in boot.S
96 VOID
DetectHardware(VOID
); // Implemented in hardware.c
98 #endif /* ! __ASM__ */