13 ULONGLONG BaseAddress
;
17 } BIOS_MEMORY_MAP
, *PBIOS_MEMORY_MAP
;
19 /* FIXME: Should be moved to NDK, and respective ACPI header files */
20 typedef struct _ACPI_BIOS_DATA
22 PHYSICAL_ADDRESS RSDTAddress
;
24 BIOS_MEMORY_MAP MemoryMap
[1]; /* Count of BIOS memory map entries */
25 } ACPI_BIOS_DATA
, *PACPI_BIOS_DATA
;
50 unsigned short ax
, _upper_ax
;
51 unsigned short bx
, _upper_bx
;
52 unsigned short cx
, _upper_cx
;
53 unsigned short dx
, _upper_dx
;
55 unsigned short si
, _upper_si
;
56 unsigned short di
, _upper_di
;
57 unsigned short bp
, _upper_bp
;
64 unsigned short flags
, _upper_flags
;
72 unsigned short _upper_ax
;
75 unsigned short _upper_bx
;
78 unsigned short _upper_cx
;
81 unsigned short _upper_dx
;
83 unsigned short si
, _upper_si
;
84 unsigned short di
, _upper_di
;
85 unsigned short bp
, _upper_bp
;
92 unsigned short flags
, _upper_flags
;
108 // Real mode interrupt vector interface
110 // (E)FLAGS can *only* be returned by this function, not set.
111 // Make sure all memory pointers are in SEG:OFFS format and
112 // not linear addresses, unless the interrupt handler
113 // specifically handles linear addresses.
114 int Int386(int ivec
, REGS
* in
, REGS
* out
);
116 // This macro tests the Carry Flag
117 // If CF is set then the call failed (usually)
118 #define INT386_SUCCESS(regs) ((regs.x.eflags & EFLAGS_CF) == 0)
120 void EnableA20(void);
121 VOID
ChainLoadBiosBootSectorCode(VOID
); // Implemented in boot.S
122 VOID
Reboot(VOID
); // Implemented in boot.S
123 VOID
DetectHardware(VOID
); // Implemented in hardware.c
125 #endif /* ! __ASM__ */
127 /* Layout of the REGS structure */
139 #define REGS_EFLAGS 36