mirror of
https://github.com/wichtounet/thor-os.git
synced 2025-09-13 14:36:37 -04:00
Cleanup assembly
This commit is contained in:
parent
9bc245a475
commit
a9c39d507c
@ -13,12 +13,12 @@ KERNEL_D_FILES=$(KERNEL_CPP_FILES:%.cpp=%.cpp.d)
|
||||
KERNEL_D_STL_FILES=$(KERNEL_CPP_STL_FILES:%.cpp=%.cpp.d)
|
||||
|
||||
#TODO Generate also the o files coming from s files automatically, ignoring crti and crtn
|
||||
KERNEL_O_FILES=boot_16_64.o boot_32_64.o $(KERNEL_CPP_FILES:%.cpp=%.cpp.o) $(KERNEL_CPP_STL_FILES:%.cpp=%.cpp.o) isrs.s.o irqs.s.o arch.s.o syscalls.s.o
|
||||
KERNEL_O_FILES=boot_16_64.o boot_32_64.o $(KERNEL_CPP_FILES:%.cpp=%.cpp.o) $(KERNEL_CPP_STL_FILES:%.cpp=%.cpp.o) src/isrs.s.o src/irqs.s.o src/arch.s.o src/syscalls.s.o
|
||||
|
||||
CRTBEGIN_OBJ:=$(shell $(CC) $(CFLAGS) -print-file-name=crtbegin.o)
|
||||
CRTEND_OBJ:=$(shell $(CC) $(CFLAGS) -print-file-name=crtend.o)
|
||||
|
||||
LINK_O_FILES=crti.s.o $(CRTBEGIN_OBJ) $(KERNEL_O_FILES) $(CRTEND_OBJ) crtn.s.o
|
||||
LINK_O_FILES=src/crti.s.o $(CRTBEGIN_OBJ) $(KERNEL_O_FILES) $(CRTEND_OBJ) src/crtn.s.o
|
||||
|
||||
boot_16.o: src/boot/boot_16.cpp
|
||||
$(CC) $(CPP_FLAGS_16) $(THOR_FLAGS) $(WARNING_FLAGS) -c src/boot/boot_16.cpp -o boot_16.o
|
||||
@ -32,7 +32,7 @@ boot_16_64.o: boot_16.o
|
||||
boot_32_64.o: boot_32.o
|
||||
$(OC) -I elf32-i386 -O elf64-x86-64 boot_32.o boot_32_64.o
|
||||
|
||||
%.s.o: src/%.s
|
||||
src/%.s.o: src/%.s
|
||||
$(AS) -c $< -o $@
|
||||
|
||||
src/%.cpp.d: $(KERNEL_CPP_FILES)
|
||||
|
@ -9,173 +9,36 @@
|
||||
|
||||
.include "src/common.s"
|
||||
|
||||
// Define the base ISRs
|
||||
|
||||
.global _irq0
|
||||
.global _irq0
|
||||
.global _irq1
|
||||
.global _irq2
|
||||
.global _irq3
|
||||
.global _irq4
|
||||
.global _irq5
|
||||
.global _irq6
|
||||
.global _irq7
|
||||
.global _irq8
|
||||
.global _irq9
|
||||
.global _irq10
|
||||
.global _irq11
|
||||
.global _irq12
|
||||
.global _irq13
|
||||
.global _irq14
|
||||
.global _irq15
|
||||
.global _irq16
|
||||
.global _irq17
|
||||
.global _irq18
|
||||
.global _irq19
|
||||
.global _irq20
|
||||
.global _irq21
|
||||
.global _irq22
|
||||
.global _irq23
|
||||
.global _irq24
|
||||
.global _irq25
|
||||
.global _irq26
|
||||
.global _irq27
|
||||
.global _irq28
|
||||
.global _irq29
|
||||
.global _irq30
|
||||
.global _irq31
|
||||
|
||||
_irq0:
|
||||
.macro create_irq number
|
||||
.global _irq\number
|
||||
_irq\number:
|
||||
cli
|
||||
|
||||
push rdi
|
||||
mov rdi, 0
|
||||
mov rdi, \number
|
||||
|
||||
jmp irq_common_handler
|
||||
.endm
|
||||
|
||||
_irq1:
|
||||
cli
|
||||
|
||||
push rdi
|
||||
mov rdi, 1
|
||||
|
||||
jmp irq_common_handler
|
||||
|
||||
_irq2:
|
||||
cli
|
||||
|
||||
push rdi
|
||||
mov rdi, 2
|
||||
|
||||
jmp irq_common_handler
|
||||
|
||||
_irq3:
|
||||
cli
|
||||
|
||||
push rdi
|
||||
mov rdi, 3
|
||||
|
||||
jmp irq_common_handler
|
||||
|
||||
_irq4:
|
||||
cli
|
||||
|
||||
push rdi
|
||||
mov rdi, 4
|
||||
|
||||
jmp irq_common_handler
|
||||
|
||||
_irq5:
|
||||
cli
|
||||
|
||||
push rdi
|
||||
mov rdi, 5
|
||||
|
||||
jmp irq_common_handler
|
||||
|
||||
_irq6:
|
||||
cli
|
||||
|
||||
push rdi
|
||||
mov rdi, 6
|
||||
|
||||
jmp irq_common_handler
|
||||
|
||||
_irq7:
|
||||
cli
|
||||
|
||||
push rdi
|
||||
mov rdi, 7
|
||||
|
||||
jmp irq_common_handler
|
||||
|
||||
_irq8:
|
||||
cli
|
||||
|
||||
push rdi
|
||||
mov rdi, 8
|
||||
|
||||
jmp irq_common_handler
|
||||
|
||||
_irq9:
|
||||
cli
|
||||
|
||||
push rdi
|
||||
mov rdi, 9
|
||||
|
||||
jmp irq_common_handler
|
||||
|
||||
_irq10:
|
||||
cli
|
||||
|
||||
push rdi
|
||||
mov rdi, 10
|
||||
|
||||
jmp irq_common_handler
|
||||
|
||||
_irq11:
|
||||
cli
|
||||
|
||||
push rdi
|
||||
mov rdi, 11
|
||||
|
||||
jmp irq_common_handler
|
||||
|
||||
_irq12:
|
||||
cli
|
||||
|
||||
push rdi
|
||||
mov rdi, 12
|
||||
|
||||
jmp irq_common_handler
|
||||
|
||||
_irq13:
|
||||
cli
|
||||
|
||||
push rdi
|
||||
mov rdi, 13
|
||||
|
||||
jmp irq_common_handler
|
||||
|
||||
_irq14:
|
||||
cli
|
||||
|
||||
push rdi
|
||||
mov rdi, 14
|
||||
|
||||
jmp irq_common_handler
|
||||
|
||||
_irq15:
|
||||
cli
|
||||
|
||||
push rdi
|
||||
mov rdi, 15
|
||||
|
||||
jmp irq_common_handler
|
||||
create_irq 0
|
||||
create_irq 1
|
||||
create_irq 2
|
||||
create_irq 3
|
||||
create_irq 4
|
||||
create_irq 5
|
||||
create_irq 6
|
||||
create_irq 7
|
||||
create_irq 8
|
||||
create_irq 9
|
||||
create_irq 10
|
||||
create_irq 11
|
||||
create_irq 12
|
||||
create_irq 13
|
||||
create_irq 14
|
||||
create_irq 15
|
||||
|
||||
// Common handler
|
||||
|
||||
//TODO Check if really safe to trash r12
|
||||
irq_common_handler:
|
||||
push rax
|
||||
push rcx
|
||||
|
@ -9,266 +9,63 @@
|
||||
|
||||
.include "src/common.s"
|
||||
|
||||
// Define the base ISRs
|
||||
|
||||
.global _isr0
|
||||
.global _isr0
|
||||
.global _isr1
|
||||
.global _isr2
|
||||
.global _isr3
|
||||
.global _isr4
|
||||
.global _isr5
|
||||
.global _isr6
|
||||
.global _isr7
|
||||
.global _isr8
|
||||
.global _isr9
|
||||
.global _isr10
|
||||
.global _isr11
|
||||
.global _isr12
|
||||
.global _isr13
|
||||
.global _isr14
|
||||
.global _isr15
|
||||
.global _isr16
|
||||
.global _isr17
|
||||
.global _isr18
|
||||
.global _isr19
|
||||
.global _isr20
|
||||
.global _isr21
|
||||
.global _isr22
|
||||
.global _isr23
|
||||
.global _isr24
|
||||
.global _isr25
|
||||
.global _isr26
|
||||
.global _isr27
|
||||
.global _isr28
|
||||
.global _isr29
|
||||
.global _isr30
|
||||
.global _isr31
|
||||
|
||||
_isr0:
|
||||
.macro create_irq number
|
||||
.global _isr\number
|
||||
_isr\number:
|
||||
cli
|
||||
|
||||
push \number
|
||||
|
||||
jmp isr_common_handler
|
||||
.endm
|
||||
|
||||
.macro create_irq_dummy number
|
||||
.global _isr\number
|
||||
_isr\number:
|
||||
cli
|
||||
|
||||
push 0 // Dummy error code
|
||||
push 0
|
||||
push \number
|
||||
|
||||
jmp isr_common_handler
|
||||
.endm
|
||||
|
||||
_isr1:
|
||||
cli
|
||||
push 0 // Dummy error code
|
||||
push 1
|
||||
|
||||
jmp isr_common_handler
|
||||
|
||||
_isr2:
|
||||
cli
|
||||
push 0 // Dummy error code
|
||||
push 2
|
||||
|
||||
jmp isr_common_handler
|
||||
|
||||
_isr3:
|
||||
cli
|
||||
push 0 // Dummy error code
|
||||
push 3
|
||||
|
||||
jmp isr_common_handler
|
||||
|
||||
_isr4:
|
||||
cli
|
||||
push 0 // Dummy error code
|
||||
push 4
|
||||
|
||||
jmp isr_common_handler
|
||||
|
||||
_isr5:
|
||||
cli
|
||||
push 0 // Dummy error code
|
||||
push 5
|
||||
|
||||
jmp isr_common_handler
|
||||
|
||||
_isr6:
|
||||
cli
|
||||
push 0 // Dummy error code
|
||||
push 6
|
||||
|
||||
jmp isr_common_handler
|
||||
|
||||
_isr7:
|
||||
cli
|
||||
push 0 // Dummy error code
|
||||
push 7
|
||||
|
||||
jmp isr_common_handler
|
||||
|
||||
_isr8:
|
||||
cli
|
||||
push 8
|
||||
|
||||
jmp isr_common_handler
|
||||
|
||||
_isr9:
|
||||
cli
|
||||
push 0 // Dummy error code
|
||||
push 9
|
||||
|
||||
jmp isr_common_handler
|
||||
|
||||
_isr10:
|
||||
cli
|
||||
push 10
|
||||
|
||||
jmp isr_common_handler
|
||||
|
||||
_isr11:
|
||||
cli
|
||||
push 11
|
||||
|
||||
jmp isr_common_handler
|
||||
|
||||
_isr12:
|
||||
cli
|
||||
push 12
|
||||
|
||||
jmp isr_common_handler
|
||||
|
||||
_isr13:
|
||||
cli
|
||||
push 13
|
||||
|
||||
jmp isr_common_handler
|
||||
|
||||
_isr14:
|
||||
cli
|
||||
push 14
|
||||
|
||||
jmp isr_common_handler
|
||||
|
||||
_isr15:
|
||||
cli
|
||||
push 0 // Dummy error code
|
||||
push 15
|
||||
|
||||
jmp isr_common_handler
|
||||
|
||||
_isr16:
|
||||
cli
|
||||
push 0 // Dummy error code
|
||||
push 16
|
||||
|
||||
jmp isr_common_handler
|
||||
|
||||
_isr17:
|
||||
cli
|
||||
push 0 // Dummy error code
|
||||
push 17
|
||||
|
||||
jmp isr_common_handler
|
||||
|
||||
_isr18:
|
||||
cli
|
||||
push 0 // Dummy error code
|
||||
push 18
|
||||
|
||||
jmp isr_common_handler
|
||||
|
||||
_isr19:
|
||||
cli
|
||||
push 0 // Dummy error code
|
||||
push 19
|
||||
|
||||
jmp isr_common_handler
|
||||
|
||||
_isr20:
|
||||
cli
|
||||
push 0 // Dummy error code
|
||||
push 20
|
||||
|
||||
jmp isr_common_handler
|
||||
|
||||
_isr21:
|
||||
cli
|
||||
push 0 // Dummy error code
|
||||
push 21
|
||||
|
||||
jmp isr_common_handler
|
||||
|
||||
_isr22:
|
||||
cli
|
||||
push 0 // Dummy error code
|
||||
push 22
|
||||
|
||||
jmp isr_common_handler
|
||||
|
||||
_isr23:
|
||||
cli
|
||||
push 0 // Dummy error code
|
||||
push 23
|
||||
|
||||
jmp isr_common_handler
|
||||
|
||||
_isr24:
|
||||
cli
|
||||
push 0 // Dummy error code
|
||||
push 24
|
||||
|
||||
jmp isr_common_handler
|
||||
|
||||
_isr25:
|
||||
cli
|
||||
push 0 // Dummy error code
|
||||
push 25
|
||||
|
||||
jmp isr_common_handler
|
||||
|
||||
_isr26:
|
||||
cli
|
||||
push 0 // Dummy error code
|
||||
push 26
|
||||
|
||||
jmp isr_common_handler
|
||||
|
||||
_isr27:
|
||||
cli
|
||||
push 0 // Dummy error code
|
||||
push 27
|
||||
|
||||
jmp isr_common_handler
|
||||
|
||||
_isr28:
|
||||
cli
|
||||
push 0 // Dummy error code
|
||||
push 28
|
||||
|
||||
jmp isr_common_handler
|
||||
|
||||
_isr29:
|
||||
cli
|
||||
push 0 // Dummy error code
|
||||
push 29
|
||||
|
||||
jmp isr_common_handler
|
||||
|
||||
_isr30:
|
||||
cli
|
||||
push 0 // Dummy error code
|
||||
push 30
|
||||
|
||||
jmp isr_common_handler
|
||||
|
||||
_isr31:
|
||||
cli
|
||||
push 0 // Dummy error code
|
||||
push 31
|
||||
|
||||
jmp isr_common_handler
|
||||
|
||||
// Common handler
|
||||
create_irq_dummy 0
|
||||
create_irq_dummy 1
|
||||
create_irq_dummy 2
|
||||
create_irq_dummy 3
|
||||
create_irq_dummy 4
|
||||
create_irq_dummy 5
|
||||
create_irq_dummy 6
|
||||
create_irq_dummy 7
|
||||
create_irq 8
|
||||
create_irq_dummy 9
|
||||
create_irq 10
|
||||
create_irq 11
|
||||
create_irq 12
|
||||
create_irq 13
|
||||
create_irq 14
|
||||
create_irq_dummy 15
|
||||
create_irq_dummy 16
|
||||
create_irq_dummy 17
|
||||
create_irq_dummy 18
|
||||
create_irq_dummy 19
|
||||
create_irq_dummy 20
|
||||
create_irq_dummy 21
|
||||
create_irq_dummy 22
|
||||
create_irq_dummy 23
|
||||
create_irq_dummy 24
|
||||
create_irq_dummy 25
|
||||
create_irq_dummy 26
|
||||
create_irq_dummy 27
|
||||
create_irq_dummy 28
|
||||
create_irq_dummy 29
|
||||
create_irq_dummy 30
|
||||
create_irq_dummy 31
|
||||
|
||||
isr_common_handler:
|
||||
restore_kernel_segments
|
||||
|
||||
//mov rax, _fault_handler
|
||||
call _fault_handler
|
||||
|
||||
restore_user_segments
|
||||
|
@ -11,89 +11,26 @@
|
||||
|
||||
// Define the base ISRs
|
||||
|
||||
.global _syscall0
|
||||
.global _syscall0
|
||||
.global _syscall1
|
||||
.global _syscall2
|
||||
.global _syscall3
|
||||
.global _syscall4
|
||||
.global _syscall5
|
||||
.global _syscall6
|
||||
.global _syscall7
|
||||
.global _syscall8
|
||||
.global _syscall9
|
||||
|
||||
_syscall0:
|
||||
.macro create_syscall number
|
||||
.global _syscall\number
|
||||
_syscall\number:
|
||||
cli
|
||||
|
||||
push 0
|
||||
push \number
|
||||
|
||||
jmp syscall_common_handler
|
||||
.endm
|
||||
|
||||
_syscall1:
|
||||
cli
|
||||
|
||||
push 1
|
||||
|
||||
jmp syscall_common_handler
|
||||
|
||||
_syscall2:
|
||||
cli
|
||||
|
||||
push 2
|
||||
|
||||
jmp syscall_common_handler
|
||||
|
||||
_syscall3:
|
||||
cli
|
||||
|
||||
push 3
|
||||
|
||||
jmp syscall_common_handler
|
||||
|
||||
_syscall4:
|
||||
cli
|
||||
|
||||
push 4
|
||||
|
||||
jmp syscall_common_handler
|
||||
|
||||
_syscall5:
|
||||
cli
|
||||
|
||||
push 5
|
||||
|
||||
jmp syscall_common_handler
|
||||
|
||||
_syscall6:
|
||||
cli
|
||||
|
||||
push 6
|
||||
|
||||
jmp syscall_common_handler
|
||||
|
||||
_syscall7:
|
||||
cli
|
||||
|
||||
push 7
|
||||
|
||||
jmp syscall_common_handler
|
||||
|
||||
_syscall8:
|
||||
cli
|
||||
|
||||
push 8
|
||||
|
||||
jmp syscall_common_handler
|
||||
|
||||
_syscall9:
|
||||
cli
|
||||
|
||||
push 9
|
||||
|
||||
jmp syscall_common_handler
|
||||
|
||||
// Common handler
|
||||
create_syscall 0
|
||||
create_syscall 1
|
||||
create_syscall 2
|
||||
create_syscall 3
|
||||
create_syscall 4
|
||||
create_syscall 5
|
||||
create_syscall 6
|
||||
create_syscall 7
|
||||
create_syscall 8
|
||||
create_syscall 9
|
||||
|
||||
syscall_common_handler:
|
||||
push r12
|
||||
|
Loading…
x
Reference in New Issue
Block a user