diff --git a/tests/kernel/Makefile b/tests/kernel/Makefile new file mode 100644 index 0000000..c7dd8da --- /dev/null +++ b/tests/kernel/Makefile @@ -0,0 +1,20 @@ +NAME := kernel + +BIN := $(NAME).bin +ELF := $(NAME).elf +OBJ := $(NAME).o + +all: $(BIN) + +$(BIN): $(ELF) + objcopy -O binary $< $@ + +$(ELF): $(OBJ) + ld -Ttext=0x00 -nostdlib -static $< -o $@ + +%.o: %.S + gcc -nostdinc -c $< -o $@ + +clean: + rm -f $(BIN) $(ELF) $(OBJ) +.PHONY: clean diff --git a/tests/kernel/README b/tests/kernel/README new file mode 100644 index 0000000..2923777 --- /dev/null +++ b/tests/kernel/README @@ -0,0 +1,16 @@ +Compiling +--------- + +You can simply type: + + $ make + +to build a 16-bit binary that uses the i8086 instruction set. + +Disassembling +------------- + +Use the "-m i8086" command line option with objdump to make sure it knows we're +dealing with i8086 instruction set: + + $ objdump -d -m i8086 i8086.elf diff --git a/tests/kernel/kernel.S b/tests/kernel/kernel.S new file mode 100644 index 0000000..2824b64 --- /dev/null +++ b/tests/kernel/kernel.S @@ -0,0 +1,8 @@ + .code16gcc + .text + .globl _start + .type _start, @function +_start: + # "This is probably the largest possible kernel that is bug free." -- Avi Kivity + 1: + jmp 1b