xref: /plan9-contrib/sys/src/nboot/pc/e820.s (revision 529c1f209803c78c4f2cda11b13818a57f01c872)
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