diff options
Diffstat (limited to 'qemu/roms/seabios/vgasrc/vgaentry.S')
-rw-r--r-- | qemu/roms/seabios/vgasrc/vgaentry.S | 161 |
1 files changed, 0 insertions, 161 deletions
diff --git a/qemu/roms/seabios/vgasrc/vgaentry.S b/qemu/roms/seabios/vgasrc/vgaentry.S deleted file mode 100644 index 53be2b38c..000000000 --- a/qemu/roms/seabios/vgasrc/vgaentry.S +++ /dev/null @@ -1,161 +0,0 @@ -// Rom layout and bios assembler to C interface. -// -// Copyright (C) 2009-2013 Kevin O'Connor <kevin@koconnor.net> -// -// This file may be distributed under the terms of the GNU LGPLv3 license. - - -#include "asm-offsets.h" // BREGS_* -#include "config.h" // CONFIG_* -#include "entryfuncs.S" // ENTRY_* - - -/**************************************************************** - * Rom Header - ****************************************************************/ - - .section .rom.header - .code16 - .global _rom_header, _rom_header_size, _rom_header_checksum -_rom_header: - .word 0xaa55 -_rom_header_size: - .byte 0 -_rom_header_entry: - jmp _optionrom_entry -_rom_header_checksum: - .byte 0 -_rom_header_other: - .space 17 -_rom_header_pcidata: -#if CONFIG_VGA_PCI == 1 - .word rom_pci_data -#else - .word 0 -#endif -_rom_header_pnpdata: - .word 0 -_rom_header_other2: - .word 0 -_rom_header_signature: - .asciz "IBM" - - -/**************************************************************** - * Entry points - ****************************************************************/ - - // This macro implements a call while avoiding instructions - // that old versions of x86emu have problems with. - .macro VGA_CALLL cfunc -#if CONFIG_VGA_FIXUP_ASM - pushw %ax - callw \cfunc -#else - calll \cfunc -#endif - .endm - - // This macro is the same as ENTRY_ARG except VGA_CALLL is used. - .macro ENTRY_ARG_VGA cfunc - cli - cld - PUSHBREGS - movw %ss, %ax // Move %ss to %ds - movw %ax, %ds - movl %esp, %ebx // Backup %esp, then zero high bits - movzwl %sp, %esp - movl %esp, %eax // First arg is pointer to struct bregs - VGA_CALLL \cfunc - movl %ebx, %esp // Restore %esp (including high bits) - POPBREGS - .endm - - DECLFUNC entry_104f05 -entry_104f05: - ENTRY_ARG_VGA vbe_104f05 - lretw - - DECLFUNC _optionrom_entry -_optionrom_entry: - ENTRY_ARG_VGA vga_post - lretw - - DECLFUNC entry_10 -entry_10: - ENTRY_ARG_VGA handle_10 - iretw - -#define VGA_CUSTOM_BDA_FLAGS 0xb9 -#define BF_EXTRA_STACK 0x40 - - // Entry point using extra stack - DECLFUNC entry_10_extrastack -entry_10_extrastack: - cli - cld - pushw %ds - pushl %eax - - movw $SEG_BDA, %ax // Check if extra stack is enabled - movw %ax, %ds - testb $BF_EXTRA_STACK, VGA_CUSTOM_BDA_FLAGS - jz 1f - - movw %cs:ExtraStackSeg, %ds // Set %ds:%eax to space on ExtraStack - movl $(CONFIG_VGA_EXTRA_STACK_SIZE-PUSHBREGS_size-16), %eax - SAVEBREGS_POP_DSEAX // Save registers on extra stack - movl %esp, PUSHBREGS_size+8(%eax) - movw %ss, PUSHBREGS_size+12(%eax) - popl BREGS_code(%eax) - popw BREGS_flags(%eax) - - movw %ds, %dx // Setup %ss/%esp and call function - movw %dx, %ss - movl %eax, %esp - VGA_CALLL handle_10 - - movl %esp, %eax // Restore registers and return - movw PUSHBREGS_size+12(%eax), %ss - movl PUSHBREGS_size+8(%eax), %esp - popl %edx - popw %dx - pushw BREGS_flags(%eax) - pushl BREGS_code(%eax) - RESTOREBREGS_DSEAX - iretw - -1: // Use regular entry point if the extra stack is disabled - popl %eax - popw %ds - jmp entry_10 - - // Timer irq handling - DECLFUNC entry_timer_hook -entry_timer_hook: - ENTRY handle_timer_hook - ljmpw *%cs:Timer_Hook_Resume - - // Timer irq handling on extra stack - DECLFUNC entry_timer_hook_extrastack -entry_timer_hook_extrastack: - cli - cld - pushw %ds // Set %ds:%eax to space on ExtraStack - pushl %eax - movw %cs:ExtraStackSeg, %ds - movl $(CONFIG_VGA_EXTRA_STACK_SIZE-PUSHBREGS_size-8), %eax - SAVEBREGS_POP_DSEAX - movl %esp, PUSHBREGS_size(%eax) - movw %ss, PUSHBREGS_size+4(%eax) - - movw %ds, %dx // Setup %ss/%esp and call function - movw %dx, %ss - movl %eax, %esp - calll handle_timer_hook - - movl %esp, %eax // Restore registers and return - movw PUSHBREGS_size+4(%eax), %ss - movl PUSHBREGS_size(%eax), %esp - RESTOREBREGS_DSEAX - ljmpw *%cs:Timer_Hook_Resume |