#include <palacios/vmm.h>
#include <palacios/vmm_types.h>
-#define KEYBOARD_DEBUG 1
+#define KEYBOARD_DEBUG 0
-#define KEYBOARD_DEBUG_80H 1
+#define KEYBOARD_DEBUG_80H 0
#if KEYBOARD_DEBUG
#define KEYBOARD_DEBUG_PRINT(first, rest...) PrintDebug(first, ##rest)
//
// 2 1.44 MB floppy drives
//
+#if 1
nvram_state->mem_state[NVRAM_REG_FLOPPY_TYPE]= 0x44;
+#else
+ nvram_state->mem_state[NVRAM_REG_FLOPPY_TYPE] = 0x00;
+#endif
//
// For old boot sequence style, do floppy first
/*
* Keyboard driver
* Copyright (c) 2001,2004 David H. Hovemeyer <daveho@cs.umd.edu>
- * $Revision: 1.4 $
+ * $Revision: 1.5 $
*
* This is free software. You are permitted to use,
* redistribute, and modify it as specified in the file "COPYING".
#include <geekos/keyboard.h>
-static enum {TARGET_GEEKOS,TARGET_VMM} target=TARGET_GEEKOS;
+static enum {TARGET_GEEKOS,TARGET_VMM} target=TARGET_VMM;
extern void deliver_key_to_vmm(uchar_t status, uchar_t scancode);
Begin_IRQ(state);
- Print("Keyboard\n");
+ //Print("Keyboard\n");
status = In_Byte(KB_CMD);
/* There is a byte available */
scanCode = In_Byte(KB_DATA);
raw_scancode=scanCode;
- Print("Keyboard: status=0x%x, scancode=0x%x\n", raw_status, raw_scancode);
+ //Print("Keyboard: status=0x%x, scancode=0x%x\n", raw_status, raw_scancode);
IO_Delay();
/*
* Print("code=%x%s\n", scanCode, (scanCode&0x80) ? " [release]" : "");
; Low level interrupt/thread handling code for GeekOS.
; Copyright (c) 2001,2003,2004 David H. Hovemeyer <daveho@cs.umd.edu>
; Copyright (c) 2003, Jeffrey K. Hollingsworth <hollings@cs.umd.edu>
-; $Revision: 1.5 $
+; $Revision: 1.6 $
; This is free software. You are permitted to use,
; redistribute, and modify it as specified in the file "COPYING".
; Function to activate a new user context (if needed).
IMPORT Switch_To_User_Context
+IMPORT SerialPrintHex
+IMPORT SerialPutChar
+
; Sizes of interrupt handler entry points for interrupts with
; and without error codes. The code in idt.c uses this
; information to infer the layout of the table of interrupt
mov [g_needReschedule], dword 0
.restore:
+
+; push ebp
+; mov ebp, esp
+; pusha
+;
+; mov eax, 0xa
+; push eax
+; call SerialPutChar
+; pop eax
+; mov eax, 0xa
+; push eax
+; call SerialPutChar
+; pop eax
+;
+; mov ecx, 4
+; mov edx, 24
+;
+;.loop:
+; mov eax, [ebp + ecx]
+;
+; push eax
+; call SerialPrintHex
+; pop eax
+;
+; mov eax, 0xa
+; push eax
+; call SerialPutChar
+; pop eax
+;
+; add ecx, 4
+; dec edx
+; jnz .loop
+;
+;
+; popa
+; pop ebp
+
; Activate the user context, if necessary.
Activate_User_Context
* GeekOS timer interrupt support
* Copyright (c) 2001,2003 David H. Hovemeyer <daveho@cs.umd.edu>
* Copyright (c) 2003, Jeffrey K. Hollingsworth <hollings@cs.umd.edu>
- * $Revision: 1.4 $
+ * $Revision: 1.5 $
*
* This is free software. You are permitted to use,
* redistribute, and modify it as specified in the file "COPYING".
static void Timer_Interrupt_Handler(struct Interrupt_State* state)
{
- struct Kernel_Thread* current = g_currentThread;
+ struct Kernel_Thread* current = g_currentThread;
Begin_IRQ(state);
* to choose a new thread.
*/
if (current->numTicks >= g_Quantum) {
- g_needReschedule = true;
+ g_needReschedule = true;
}