summaryrefslogtreecommitdiff
path: root/x86-bare-metal/mbr-pure-zig/mbr.ld
diff options
context:
space:
mode:
authorJohannes Stoelp <johannes.stoelp@gmail.com>2024-12-25 02:55:41 +0100
committerJohannes Stoelp <johannes.stoelp@gmail.com>2025-02-07 21:54:55 +0100
commitec9c031a2768c0c38875776e25dbf2e9e7801b9e (patch)
tree2661d2c52ec740641a56f5169d1ba8675fb3fcb5 /x86-bare-metal/mbr-pure-zig/mbr.ld
parent0d857026c43ce887196c84c7d722c2e81cc8dacf (diff)
downloadzig-playground-ec9c031a2768c0c38875776e25dbf2e9e7801b9e.tar.gz
zig-playground-ec9c031a2768c0c38875776e25dbf2e9e7801b9e.zip
mbr: zig only real mode 16 bit
Diffstat (limited to 'x86-bare-metal/mbr-pure-zig/mbr.ld')
-rw-r--r--x86-bare-metal/mbr-pure-zig/mbr.ld24
1 files changed, 24 insertions, 0 deletions
diff --git a/x86-bare-metal/mbr-pure-zig/mbr.ld b/x86-bare-metal/mbr-pure-zig/mbr.ld
new file mode 100644
index 0000000..9ada8c4
--- /dev/null
+++ b/x86-bare-metal/mbr-pure-zig/mbr.ld
@@ -0,0 +1,24 @@
+/*OUTPUT_FORMAT(binary)*/
+OUTPUT_FORMAT(elf32-i386)
+OUTPUT_ARCH(i386)
+ENTRY(_entry)
+
+SECTIONS {
+ . = 0x7c00;
+ .boot : { *(.boot) }
+ .text : { *(.text) }
+ .data : { *(.data) }
+ .rodata : { *(.rodata) *(.rodata.str*) }
+ _boot_end = .;
+
+ . = 0x7c00 + 510;
+ .mbr.magic : {
+ BYTE(0x55);
+ BYTE(0xaa);
+ }
+
+ /*/DISCARD/ : { *(.*) }*/
+ /*rest : { *(.*) }*/
+
+ ASSERT(_boot_end - 0x7c00 < 510, "boot sector must fit in 510 bytes")
+}