diff options
author | Michael Brown <mcb30@ipxe.org> | 2014-04-28 21:11:04 +0100 |
---|---|---|
committer | Michael Brown <mcb30@ipxe.org> | 2014-04-29 18:24:10 +0100 |
commit | aaf276ccd4819de791d7a1295f26f36f29fb3cb6 (patch) | |
tree | f8ed740bb762eaa8a0f6be557ff5e830cbf5e4a6 /src/arch/i386/interface | |
parent | 23b671daf490acaec6fdad55f2bfa44021200a63 (diff) | |
download | ipxe-aaf276ccd4819de791d7a1295f26f36f29fb3cb6.tar.gz |
[comboot] Use built-in interrupt reflector
We now have the ability to handle interrupts while in protected mode,
and so no longer need to set up a dedicated interrupt descriptor table
while running COM32 executables.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/arch/i386/interface')
-rw-r--r-- | src/arch/i386/interface/syslinux/com32_call.c | 17 | ||||
-rw-r--r-- | src/arch/i386/interface/syslinux/com32_wrapper.S | 26 |
2 files changed, 0 insertions, 43 deletions
diff --git a/src/arch/i386/interface/syslinux/com32_call.c b/src/arch/i386/interface/syslinux/com32_call.c index 8fffd069..75dcc238 100644 --- a/src/arch/i386/interface/syslinux/com32_call.c +++ b/src/arch/i386/interface/syslinux/com32_call.c @@ -189,20 +189,3 @@ int __asmcall com32_cfarcall ( uint32_t proc, physaddr_t stack, size_t stacksz ) return eax; } - -/** - * IRQ handler - */ -void __asmcall com32_irq ( uint32_t vector ) { - uint32_t *ivt_entry = phys_to_virt( vector * 4 ); - - __asm__ __volatile__ ( - REAL_CODE ( "pushfw\n\t" - "pushw %%cs\n\t" - "pushw $com32_irq_return\n\t" - "pushl %0\n\t" - "lret\n" - "com32_irq_return:\n\t" ) - : /* no outputs */ - : "r" ( *ivt_entry ) ); -} diff --git a/src/arch/i386/interface/syslinux/com32_wrapper.S b/src/arch/i386/interface/syslinux/com32_wrapper.S index 69cea02e..c9d1452b 100644 --- a/src/arch/i386/interface/syslinux/com32_wrapper.S +++ b/src/arch/i386/interface/syslinux/com32_wrapper.S @@ -23,26 +23,6 @@ FILE_LICENCE ( GPL2_OR_LATER ) .arch i386 .code32 - /* - * This code is entered after running the following sequence out of - * the interrupt jump buffer: - * - * pushal - * movb $vector, %al - * jmp com32_irq_wrapper - */ - - .globl com32_irq_wrapper -com32_irq_wrapper: - - movzbl %al,%eax - pushl %eax - movl $com32_irq, %eax - call com32_wrapper - popl %eax - popal - iret - .globl com32_farcall_wrapper com32_farcall_wrapper: @@ -69,9 +49,6 @@ com32_wrapper: /* Switch to internal virtual address space */ call _phys_to_virt - /* Switch to internal IDT (if we have one for debugging) */ - lidt com32_internal_idtr - mov %eax, (com32_helper_function) /* Save external COM32 stack pointer */ @@ -99,9 +76,6 @@ com32_wrapper: movl %esp, (com32_internal_esp) movl (com32_external_esp), %esp - /* Switch to com32 IDT */ - lidt com32_external_idtr - /* Switch to external flat physical address space */ call _virt_to_phys |