summaryrefslogtreecommitdiff
path: root/src/devices/oprom/x86.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/oprom/x86.c')
-rw-r--r--src/devices/oprom/x86.c93
1 files changed, 1 insertions, 92 deletions
diff --git a/src/devices/oprom/x86.c b/src/devices/oprom/x86.c
index 37b45e6376..9a6ce41029 100644
--- a/src/devices/oprom/x86.c
+++ b/src/devices/oprom/x86.c
@@ -26,18 +26,7 @@
#include <console/console.h>
#include <arch/interrupt.h>
-#define REALMODE_BASE ((void *)0x600)
-
-struct realmode_idt {
- u16 offset, cs;
-};
-
-void x86_exception(struct eregs *info);
-
-/* From x86_asm.S */
-extern unsigned char __idt_handler, __idt_handler_size;
-extern unsigned char __realmode_code, __realmode_code_size;
-extern unsigned char __realmode_call, __realmode_interrupt;
+#include "x86.h"
void (*realmode_call)(u32 addr, u32 eax, u32 ebx, u32 ecx, u32 edx,
u32 esi, u32 edi) __attribute__((regparm(0))) = (void *)&__realmode_call;
@@ -45,10 +34,6 @@ void (*realmode_call)(u32 addr, u32 eax, u32 ebx, u32 ecx, u32 edx,
void (*realmode_interrupt)(u32 intno, u32 eax, u32 ebx, u32 ecx, u32 edx,
u32 esi, u32 edi) __attribute__((regparm(0))) = (void *)&__realmode_interrupt;
-#define FAKE_MEMORY_SIZE (1024*1024) // only 1MB
-#define INITIAL_EBDA_SEGMENT 0xF600
-#define INITIAL_EBDA_SIZE 0x400
-
static void setup_bda(void)
{
/* clear BIOS DATA AREA */
@@ -104,79 +89,6 @@ void mainboard_interrupt_handlers(int intXX, void *intXX_func)
intXX_handler[intXX] = intXX_func;
}
-static int int10_handler(struct eregs *regs)
-{
- int res=-1;
- static u8 cursor_row=0, cursor_col=0;
- switch((regs->eax & 0xff00)>>8) {
- case 0x01: // Set cursor shape
- res = 0;
- break;
- case 0x02: // Set cursor position
- if (cursor_row != ((regs->edx >> 8) & 0xff) ||
- cursor_col >= (regs->edx & 0xff)) {
- printk(BIOS_INFO, "\n");
- }
- cursor_row = (regs->edx >> 8) & 0xff;
- cursor_col = regs->edx & 0xff;
- res = 0;
- break;
- case 0x03: // Get cursor position
- regs->eax &= 0x00ff;
- regs->ecx = 0x0607;
- regs->edx = (cursor_row << 8) | cursor_col;
- res = 0;
- break;
- case 0x06: // Scroll up
- printk(BIOS_INFO, "\n");
- res = 0;
- break;
- case 0x08: // Get Character and Mode at Cursor Position
- regs->eax = 0x0f00 | 'A'; // White on black 'A'
- res = 0;
- break;
- case 0x09: // Write Character and attribute
- case 0x10: // Write Character
- printk(BIOS_INFO, "%c", regs->eax & 0xff);
- res = 0;
- break;
- case 0x0f: // Get video mode
- regs->eax = 0x5002; //80x25
- regs->ebx &= 0x00ff;
- res = 0;
- break;
- default:
- printk(BIOS_WARNING, "Unknown INT10 function %04x!\n",
- regs->eax & 0xffff);
- break;
- }
- return res;
-}
-
-static int int16_handler(struct eregs *regs)
-{
- int res=-1;
- switch((regs->eax & 0xff00)>>8) {
- case 0x00: // Check for Keystroke
- regs->eax = 0x6120; // Space Bar, Space
- res = 0;
- break;
- case 0x01: // Check for Keystroke
- regs->eflags |= 1<<6; // Zero Flag set (no key available)
- res = 0;
- break;
- default:
- printk(BIOS_WARNING, "Unknown INT16 function %04x!\n",
- regs->eax & 0xffff);
- break;
- }
- return res;
-}
-
-int int12_handler(struct eregs *regs);
-int int15_handler(struct eregs *regs);
-int int1a_handler(struct eregs *regs);
-
static void setup_interrupt_handlers(void)
{
int i;
@@ -206,9 +118,6 @@ static void setup_interrupt_handlers(void)
case 0x12:
intXX_handler[0x12] = &int12_handler;
break;
- case 0x15:
- intXX_handler[0x15] = &int15_handler;
- break;
case 0x16:
intXX_handler[0x16] = &int16_handler;
break;