diff options
author | dzwdz | 2021-07-10 16:37:45 +0200 |
---|---|---|
committer | dzwdz | 2021-07-10 16:37:45 +0200 |
commit | d093a8eea6bfb0ff7e621e9ba3307dae698322aa (patch) | |
tree | 08a5272e2813cf8db8feda4ff91d919cb9ad7330 /platform | |
parent | 1faac72e2514c335e2d5721dce8c9fd1da722062 (diff) |
separate the source code from object files; more modular Makefile
Diffstat (limited to 'platform')
-rw-r--r-- | platform/asm.h | 9 | ||||
-rw-r--r-- | platform/boot.s | 47 | ||||
-rw-r--r-- | platform/sysenter.s | 31 |
3 files changed, 0 insertions, 87 deletions
diff --git a/platform/asm.h b/platform/asm.h deleted file mode 100644 index 6f72617..0000000 --- a/platform/asm.h +++ /dev/null @@ -1,9 +0,0 @@ -#pragma once - -// boot.s -__attribute__((noreturn)) -void halt_cpu(); - -// sysenter.c -void sysexit(void (*fun)(), void *stack_top); -void sysenter_setup(); diff --git a/platform/boot.s b/platform/boot.s deleted file mode 100644 index d5bfda5..0000000 --- a/platform/boot.s +++ /dev/null @@ -1,47 +0,0 @@ -.set MAGIC, 0x1BADB002 -.set FLAG_ALIGN, 1<<0 /* align modules on page boundaries */ -.set FLAG_MEMINFO, 1<<1 /* memory map */ -.set FLAGS, FLAG_ALIGN | FLAG_MEMINFO -.set CHECKSUM, -(MAGIC + FLAGS) - -.section .multiboot -.align 4 -.long MAGIC -.long FLAGS -.long CHECKSUM - -/* a lil stack */ -.section .bss -.global stack_top -.type stack_top, @object -.align 16 -stack_bottom: -.skip 16384 -stack_top: - - -.section .text -.global _start -.type _start, @function -_start: - mov $stack_top, %esp - call kmain - -.global halt_cpu -.type halt_cpu, @function -halt_cpu: - cli -1: hlt - jmp 1b - -// temporary, will be moved to another file soon -.global change_cs -.type change_cs, @function -change_cs: - /* retf pops off the return address and code segment off the stack. - * it turns out that in the i386 cdecl calling convention they're in - * the correct place already. - */ - retf - -.size _start, . - _start diff --git a/platform/sysenter.s b/platform/sysenter.s deleted file mode 100644 index 270dc08..0000000 --- a/platform/sysenter.s +++ /dev/null @@ -1,31 +0,0 @@ -/* kernel/gdt.c */ -.set SEG_r0code, 1 -.set SEG_r3code, 3 -.set SEG_r3data, 4 - -.set IA32_SYSENTER_CS, 0x174 - -.section .text -.global sysexit -.type sysexit, @function -sysexit: - pop %ecx - pop %edx - - mov $(SEG_r3data << 3 | 3), %ax - mov %ax, %ds - mov %ax, %es - mov %ax, %fs - mov %ax, %gs - - sysexit - - -.global sysenter_setup -.type sysenter_setup, @function -sysenter_setup: - xor %edx, %edx - mov $(SEG_r0code << 3), %eax - mov $IA32_SYSENTER_CS, %ecx - wrmsr - ret |