X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?p=palacios.git;a=blobdiff_plain;f=geekos%2Fsrc%2Fgeekos%2Fmain.c;fp=geekos%2Fsrc%2Fgeekos%2Fmain.c;h=5d71341cb32d87814c48ecb588f08a9e73eb608c;hp=0000000000000000000000000000000000000000;hb=ddc16b0737cf58f7aa90a69c6652cdf4090aec51;hpb=626595465a2c6987606a6bc697df65130ad8c2d3 diff --git a/geekos/src/geekos/main.c b/geekos/src/geekos/main.c new file mode 100644 index 0000000..5d71341 --- /dev/null +++ b/geekos/src/geekos/main.c @@ -0,0 +1,286 @@ +/* + * GeekOS C code entry point + * Copyright (c) 2001,2003,2004 David H. Hovemeyer + * Copyright (c) 2003, Jeffrey K. Hollingsworth + * Copyright (c) 2004, Iulian Neamtiu + * Copyright (c) 2008, Jack Lange + * $Revision: 1.47 $ + * + * This is free software. You are permitted to use, + * redistribute, and modify it as specified in the file "COPYING". + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + + +#include +#include + +#include + +#include + + +#include + + +#define SPEAKER_PORT 0x61 + + + + +void Spin() +{ + // hack - competing thread + while (1) {}; + +} + + +void Buzz(unsigned delay, unsigned num) +{ + volatile int x; + int i,j; + unsigned char init; + + init=In_Byte(SPEAKER_PORT); + + for (i=0;i0x%x\n", &BSS_START, &BSS_END); + + }*/ + + + // SerialPrint("Guest Mem Dump at 0x%x\n", 0x100000); + //SerialMemDump((unsigned char *)(0x100000), 261 * 1024); + + Init_Mem(bootInfo); + Init_CRC32(); + Init_TSS(); + Init_Interrupts(); + Init_Scheduler(); + Init_Traps(); + Init_Timer(); + Init_Keyboard(); + Init_VM(bootInfo); + Init_Paging(); + + //Init_PCI(); + + + + // Init_Network(); + + + // Init_IDE(); + + // Print("Done; stalling\n"); + + + +#if 0 + SerialPrint("Dumping VM kernel Code (first 128 bytes @ 0x%x)\n", 0x100000); + SerialMemDump((unsigned char *)0x100000, 256); + /* + SerialPrint("Dumping kernel Code (first 512 bytes @ 0x%x)\n",KERNEL_START); + SerialMemDump((unsigned char *)VM_KERNEL_START, 512); + */ +#endif + + +#if 1 + struct Kernel_Thread *spin_thread; + + spin_thread=Start_Kernel_Thread(Spin,0,PRIORITY_NORMAL,false); + +#endif + +#if 0 + { + + struct Kernel_Thread * key_thread; + struct Kernel_Thread * spkr_thread; + + ulong_t doIBuzz = 0; + + SerialPrint("Dumping BIOS code ffff0-fffff\n\n"); + SerialMemDump((unsigned char *)0x10fff0, 16); + /* + SerialPrint("Dumping kernel Code (first 512 bytes @ 0x%x)\n",KERNEL_START); + SerialMemDump((unsigned char *)VM_KERNEL_START, 512); + */ + + SerialPrint("Noisemaker and keyboard listener threads\n"); + key_thread = Start_Kernel_Thread(Keyboard_Listener, (ulong_t)&doIBuzz, PRIORITY_NORMAL, false); + spkr_thread = Start_Kernel_Thread(Buzzer, (ulong_t)&doIBuzz, PRIORITY_NORMAL, false); + } +#endif + + + { + RunVMM(bootInfo); + } + + + SerialPrint("RunVMM returned, spinning\n"); + while (1) {} + + + TODO("Write a Virtual Machine Monitor"); + + + Exit(0); +}