From 7eb87bf3f3fa6226657a7106eb255cbfa97758d2 Mon Sep 17 00:00:00 2001 From: Miguel Date: Mon, 3 Sep 2018 15:18:16 +0200 Subject: big renaming --- asm/int.s | 174 -------------------------------------------------------------- 1 file changed, 174 deletions(-) delete mode 100644 asm/int.s (limited to 'asm/int.s') diff --git a/asm/int.s b/asm/int.s deleted file mode 100644 index 566b646..0000000 --- a/asm/int.s +++ /dev/null @@ -1,174 +0,0 @@ -.global int0 -.global int1 -.global int2 -.global int3 -.global int4 -.global int5 -.global int6 -.global int7 - -.global int8 -.global int9 -.global int10 -.global int11 -.global int12 -.global int13 -.global int14 -.global int15 - -.global int128 -.global int129 -.global int255 - -.global exc0 -.global exc1 -.global exc2 -.global exc3 -.global exc4 -.global exc5 -.global exc6 -.global exc7 -.global exc8 -.global exc9 -.global exc10 -.global exc11 -.global exc12 -.global exc13 -.global exc14 -.global exc15 -.global exc16 -.global exc17 -.global exc18 - -// nothing to ack -.macro ack0 -.endm - -// ack master -.macro ack1 - push %eax // persist - mov $0x20,%al - out %al,$0x20 - pop %eax // load original -.endm - -// ack master and servant -.macro ack2 - push %eax // persist - mov $0x20,%al - out %al,$0xa0 // slave - out %al,$0x20 // master - pop %eax // load original -.endm - -.macro intx ack num func - - /* - Once we arrived here the stack already contains 3x 32bit values, - which will be poped by 'iret' - - - eflags - - return code segment selector - - return instruction pointer - - There are two possiblities concerning our stack position: - - a) if the interrupt occured while kernel code was executed we are - on the same stack and have no clue about the stack alignment - - b) if the interrupt occured while user code was executed the - configured tss.esp0 was used, in this case we are at the start - of the esp0 stack. - */ - - \ack //acknowledge interrupt - //also remember that we will get new interrupts only - //after iret or reenabling themn explicitly! - - push $0x666 //make room for potential C functions 'return value'. - //we use eax already for esp (so we can context switch) - - push $0x0 //indicate if we want to return the value in ebx 0x0=NO - - pusha //Push all standard registers 8 regs x 4bytes/32bit - push %ds //Push data segment - push %es //etc... - push %fs - push %gs - - mov %esp,%eax // remember THIS stack position - - and $-16,%esp // padding to align stack on 16byte boundary before CALL - sub $8,%esp // ... - - push \num // pass in this interrupt number - push %eax // pass in original %esp (saved just few lines before) - call \func - mov %eax,%esp // use the %esp we got from c function - - pop %gs // pop everything back... - pop %fs // ... - pop %es - pop %ds - popa - - cmp $0x0,(%esp) - je skip\num - pop %ebx - pop %ebx - jmp ret\num - skip\num: - add $8,%esp // potentially set return value to eax to return to the caller - ret\num: - - iret // pops the return instruction pointer, return code segment selector, and EFLAGS image from the stack - -.endm - -.macro excx func - call \func - jmp . -.endm - -int0: intx ack1 $0 interrupt_handler -int1: intx ack1 $1 interrupt_handler -int2: intx ack1 $2 interrupt_handler -int3: intx ack1 $3 interrupt_handler -int4: intx ack1 $4 interrupt_handler -int5: intx ack1 $5 interrupt_handler -int6: intx ack1 $6 interrupt_handler -int7: intx ack1 $7 interrupt_handler - -int8: intx ack2 $8 interrupt_handler -int9: intx ack2 $9 interrupt_handler -int10: intx ack2 $10 interrupt_handler -int11: intx ack2 $11 interrupt_handler -int12: intx ack2 $12 interrupt_handler -int13: intx ack2 $13 interrupt_handler -int14: intx ack2 $14 interrupt_handler -int15: intx ack2 $15 interrupt_handler - -int128: intx ack0 $128 interrupt_handler -int129: intx ack0 $129 interrupt_handler - -int255: intx ack0 $255 interrupt_handler - -exc0: excx exception_handle_0 -exc1: excx exception_handle_1 -exc2: excx exception_handle_2 -exc3: excx exception_handle_3 -exc4: excx exception_handle_4 -exc5: excx exception_handle_5 -exc6: excx exception_handle_6 -exc7: excx exception_handle_7 -exc8: excx exception_handle_8 -exc9: excx exception_handle_9 -exc10: excx exception_handle_10 -exc11: excx exception_handle_11 -exc12: excx exception_handle_12 -exc13: excx exception_handle_13 -exc14: excx exception_handle_14 -exc15: excx exception_handle_15 -exc16: excx exception_handle_16 -exc17: excx exception_handle_17 -exc18: excx exception_handle_18 -- cgit v1.2.3