87 |
.long 0 |
.long 0 |
88 |
VARIABLE(pupa_kernel_image_size) |
VARIABLE(pupa_kernel_image_size) |
89 |
.long 0 |
.long 0 |
90 |
VARIABLE(install_partition) |
VARIABLE(pupa_install_dos_part) |
91 |
.long 0xFFFFFF |
.long 0xFFFFFFFF |
92 |
VARIABLE(version_string) |
VARIABLE(pupa_install_bsd_part) |
93 |
.string PACKAGE_VERSION |
.long 0xFFFFFFFF |
94 |
VARIABLE(config_file) |
VARIABLE(pupa_prefix) |
95 |
.string "/boot/pupa/puparc" |
.string "/boot/pupa" |
96 |
|
|
97 |
/* |
/* |
98 |
* Leave some breathing room for the config file name. |
* Leave some breathing room for the prefix. |
99 |
*/ |
*/ |
100 |
|
|
101 |
. = EXT_C(start) + 0x70 |
. = EXT_C(start) + 0x50 |
102 |
|
|
103 |
/* the real mode code continues... */ |
/* the real mode code continues... */ |
104 |
codestart: |
codestart: |
261 |
*/ |
*/ |
262 |
|
|
263 |
FUNCTION(pupa_chainloader_real_boot) |
FUNCTION(pupa_chainloader_real_boot) |
264 |
/* no need to save anything */ |
pushl %edx |
265 |
|
pushl %eax |
266 |
|
|
267 |
/* ESI must point to a partition table entry */ |
call EXT_C(pupa_dl_unload_all) |
|
movl %edx, %esi |
|
268 |
|
|
269 |
/* set up to pass boot drive */ |
/* set up to pass boot drive */ |
270 |
movl %eax, %edx |
popl %edx |
271 |
|
|
272 |
|
/* ESI must point to a partition table entry */ |
273 |
|
popl %esi |
274 |
|
|
275 |
/* Turn off Gate A20 */ |
/* Turn off Gate A20 */ |
276 |
xorl %eax, %eax |
xorl %eax, %eax |