.word 0x0203 # header version number (>= 0x0105)
# or else old loadlin-1.5 will fail)
realmode_swtch: .word 0, 0 # default_switch, SETUPSEG
-start_sys_seg: .word 0
- .word kernel_version # pointing to kernel version string
- # above section of header is compatible
- # with loadlin-1.5 (header v1.5).
+start_sys_seg: .word 0 # obsolete
+version_ptr: .word memdisk_version-0x200
+ # pointing to kernel version string
type_of_loader: .byte 0 # = 0, old one (LILO, Loadlin,
# Bootlin, SYSLX, bootsect...)
movw %si,%gs
movw %si,%ss
ljmp $0,$0x7c00 # Entrypoint at 0000:7C00
-
- .section ".rodata", "a"
-kernel_version: .ascii "MEMDISK ..."
- .byte 0
-
#include <stdint.h>
#include "e820.h"
#include "conio.h"
+#include "version.h"
-#define FIRSTYEAR "2001"
-#define COPYYEAR "2002"
+/* A pointer to this is stored in the header */
+const char memdisk_version[] =
+"MEMDISK " VERSION " " DATE
+" Copyright " FIRSTYEAR "-" COPYYEAR " H. Peter Anvin";
extern const char _binary_memdisk_bin_start[], _binary_memdisk_bin_end[];
extern const char _binary_memdisk_bin_size[]; /* Weird, I know */
int total_size;
/* Show signs of life */
- puts("MEMDISK " VERSION " " DATE
- " Copyright " FIRSTYEAR "-" COPYYEAR " H. Peter Anvin\n");
+ printf("%s\n", memdisk_version);
if ( !shdr->ramdisk_image || !shdr->ramdisk_size ) {
puts("MEMDISK: No ramdisk image specified!\n");