Cleaning up code
Moving things around, deleting some callins to asm (namely get_rdtsc) since I don't need them right yet
This commit is contained in:
@@ -10,7 +10,6 @@ extern crate rlibc;
|
|||||||
|
|
||||||
extern {
|
extern {
|
||||||
fn asm_printchar() -> u32;
|
fn asm_printchar() -> u32;
|
||||||
fn get_rdtsc() -> u32;
|
|
||||||
fn call_interrupt();
|
fn call_interrupt();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
global long_mode_start
|
global long_mode_start
|
||||||
global asm_printchar
|
global asm_printchar
|
||||||
global get_rdtsc
|
|
||||||
global call_interrupt
|
global call_interrupt
|
||||||
extern rust_interrupt_handler
|
extern rust_interrupt_handler
|
||||||
extern rust_handle_keyboard
|
extern rust_handle_keyboard
|
||||||
@@ -70,13 +69,8 @@ asm_printchar:
|
|||||||
mov rax, 0x1
|
mov rax, 0x1
|
||||||
ret
|
ret
|
||||||
|
|
||||||
get_rdtsc:
|
|
||||||
rdtsc
|
|
||||||
ret
|
|
||||||
|
|
||||||
call_interrupt:
|
; ----------- IDT section ---------------------
|
||||||
int 9
|
|
||||||
ret
|
|
||||||
|
|
||||||
%define PIC1_COMMAND 0x20
|
%define PIC1_COMMAND 0x20
|
||||||
%define PIC1_DATA 0x21
|
%define PIC1_DATA 0x21
|
||||||
@@ -85,7 +79,6 @@ call_interrupt:
|
|||||||
|
|
||||||
%define END_OF_INTERRUPT 0x20
|
%define END_OF_INTERRUPT 0x20
|
||||||
|
|
||||||
|
|
||||||
%macro interrupt_handler_preamble 0
|
%macro interrupt_handler_preamble 0
|
||||||
push rax
|
push rax
|
||||||
push rcx
|
push rcx
|
||||||
@@ -128,14 +121,7 @@ handle_keyboard:
|
|||||||
|
|
||||||
|
|
||||||
handle_timer:
|
handle_timer:
|
||||||
push rax
|
interrupt_handler_preamble
|
||||||
push rcx
|
|
||||||
push rdx
|
|
||||||
push r8
|
|
||||||
push r9
|
|
||||||
push r10
|
|
||||||
push r11
|
|
||||||
pushfq
|
|
||||||
|
|
||||||
call rust_handle_timer
|
call rust_handle_timer
|
||||||
|
|
||||||
@@ -143,15 +129,13 @@ handle_timer:
|
|||||||
out PIC1_COMMAND, al
|
out PIC1_COMMAND, al
|
||||||
out PIC2_COMMAND, al
|
out PIC2_COMMAND, al
|
||||||
|
|
||||||
popfq
|
interrupt_handler_final
|
||||||
pop r11
|
|
||||||
pop r10
|
handle_double_fault:
|
||||||
pop r9
|
interrupt_handler_preamble
|
||||||
pop r8
|
cli
|
||||||
pop rdx
|
hlt
|
||||||
pop rcx
|
interrupt_handler_final
|
||||||
pop rax
|
|
||||||
iretq
|
|
||||||
|
|
||||||
;expects name of label, offset in table
|
;expects name of label, offset in table
|
||||||
%macro load_IDT_entry 2
|
%macro load_IDT_entry 2
|
||||||
@@ -175,12 +159,13 @@ setup_IDT:
|
|||||||
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
idt64:
|
||||||
|
resb 50*16
|
||||||
|
.pointer:
|
||||||
|
dw .pointer - idt64
|
||||||
|
dq idt64
|
||||||
|
|
||||||
handle_double_fault:
|
; --------- end of IDT section --------
|
||||||
interrupt_handler_preamble
|
|
||||||
cli
|
|
||||||
hlt
|
|
||||||
interrupt_handler_final
|
|
||||||
|
|
||||||
setup_PIT:
|
setup_PIT:
|
||||||
%define PIT_CH0 0x40
|
%define PIT_CH0 0x40
|
||||||
@@ -197,9 +182,3 @@ setup_PIT:
|
|||||||
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
idt64:
|
|
||||||
resb 50*16
|
|
||||||
.pointer:
|
|
||||||
dw .pointer - idt64
|
|
||||||
dq idt64
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user