From ae526fa3375b708d4380d0227e27d32e06b40b92 Mon Sep 17 00:00:00 2001 From: "Chloe M." Date: Thu, 20 Aug 2026 05:53:55 +0000 Subject: initial commit Signed-off-by: Chloe M. --- boot/arch/amd64/mbr/Makefile | 16 ++++++++++++++++ boot/arch/amd64/mbr/link.ld | 21 +++++++++++++++++++++ boot/arch/amd64/mbr/mbr.S | 17 +++++++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 boot/arch/amd64/mbr/Makefile create mode 100644 boot/arch/amd64/mbr/link.ld create mode 100644 boot/arch/amd64/mbr/mbr.S (limited to 'boot/arch/amd64/mbr') diff --git a/boot/arch/amd64/mbr/Makefile b/boot/arch/amd64/mbr/Makefile new file mode 100644 index 0000000..f41e5cc --- /dev/null +++ b/boot/arch/amd64/mbr/Makefile @@ -0,0 +1,16 @@ +CC = clang +CFLAGS = \ + -ffreestanding \ + -nostdlib \ + -nostdinc \ + -mno-red-zone \ + -mno-sse \ + -mno-sse2 \ + -target i386-unknown-elf + +.PHONY: all +all: mbr + +.PHONY: mbr +mbr: + clang -Tlink.ld $(CFLAGS) mbr.S -o $(GLOBAL_PROJECT_ROOT)/artifacts/mbr.bin diff --git a/boot/arch/amd64/mbr/link.ld b/boot/arch/amd64/mbr/link.ld new file mode 100644 index 0000000..6d25985 --- /dev/null +++ b/boot/arch/amd64/mbr/link.ld @@ -0,0 +1,21 @@ +OUTPUT_FORMAT(binary) + +SECTIONS { + . = 0x7C00; + + .text : { + *(.text) + } + + .data : { + *(.data) + } + + .rodata : { + *(.rodata) + } + + .bss : { + *(.bss) + } +} diff --git a/boot/arch/amd64/mbr/mbr.S b/boot/arch/amd64/mbr/mbr.S new file mode 100644 index 0000000..e071a41 --- /dev/null +++ b/boot/arch/amd64/mbr/mbr.S @@ -0,0 +1,17 @@ + .code16 +_start: + /* Normalize CS + other selectors */ + ljmp $0x00,$1f +1: xor %ax, %ax + mov %ax, %ds + mov %ax, %ss + mov %ax, %es + mov %ax, %gs + mov %ax, %fs +2: cli + hlt + jmp 2b + + .org 510 + .byte 0x55 + .byte 0xAA -- cgit v1.2.3