1	.text
2	.arch i386
3	.code16
4	.section ".prefix", "ax", @progbits
5	.org 0
6
7nbi_header:
8
9/*****************************************************************************
10 * NBI file header
11 *****************************************************************************
12 */
13file_header:
14	.long	0x1b031336	/* Signature */
15	.byte	0x04		/* 16 bytes header, no vendor info */
16	.byte	0
17	.byte	0
18	.byte	0		/* No flags */
19	.word	0x0000, 0x07c0	/* Load header to 0x07c0:0x0000 */
20	.word	entry, 0x07c0	/* Start execution at 0x07c0:entry */
21	.size	file_header, . - file_header
22
23/*****************************************************************************
24 * NBI segment header
25 *****************************************************************************
26 */
27segment_header:
28	.byte	0x04		/* 16 bytes header, no vendor info */
29	.byte	0
30	.byte	0
31	.byte	0x04		/* Last segment */
32	.long	0x00007e00
33imglen:	.long	-512
34memlen:	.long	-512
35	.size	segment_header, . - segment_header
36
37	.section ".zinfo.fixup", "a", @progbits	/* Compressor fixups */
38	.ascii	"ADDL"
39	.long	imglen
40	.long	1
41	.long	0
42	.ascii	"ADDL"
43	.long	memlen
44	.long	1
45	.long	0
46	.previous
47
48/*****************************************************************************
49 * NBI entry point
50 *****************************************************************************
51 */
52entry:
53	/* Install gPXE */
54	call	install
55
56	/* Jump to .text16 segment */
57	pushw	%ax
58	pushw	$1f
59	lret
60	.section ".text16", "awx", @progbits
611:
62	pushl	$main
63	pushw	%cs
64	call	prot_call
65	popl	%ecx /* discard */
66
67	/* Uninstall gPXE */
68	call	uninstall
69
70	/* Reboot system */
71	int $0x19
72
73	.previous
74	.size	entry, . - entry
75
76nbi_header_end:
77	.org 512
78