1#include "x16.h" 2#include "mem.h" 3 4TEXT e820(SB), $0 5 MOVL bx+4(SP), BX 6 MOVL p+8(SP), DI 7 MOVL $0xE820, AX 8 MOVL $0x534D4150, DX 9 CALL rmode16(SB) 10 LWI(24, rCX) 11 BIOSCALL(0x15) 12 JC _bad 13 CALL16(pmode32(SB)) 14 CMPB CL, $24 15 JZ _ret 16 MOVL $1, AX 17 MOVL p+8(SP), DI 18 MOVL AX, 20(DI) 19_ret: 20 MOVL BX, AX 21 RET 22_bad: 23 CALL16(pmode32(SB)) 24 XORL AX, AX 25 MOVL p+8(SP), DI 26 MOVL AX, 0(DI) 27 MOVL AX, 4(DI) 28 MOVL AX, 8(DI) 29 MOVL AX, 12(DI) 30 MOVL AX, 16(DI) 31 MOVL AX, 20(DI) 32 RET 33