/************************************************************************************** Copyright (c) 2002 The UbixOS Project $Id$ **************************************************************************************/ #include <ubixos/gdt.h> #include <ubixos/scheduler.h> #include <version/version.h> int main(); descriptorTable(GDT,5) { {dummy:0}, standardDescriptor(0, 0xFFFFF, (dCode + dRead + dBig + dBiglim)), standardDescriptor(0, 0xFFFFF, (dData + dWrite + dBig + dBiglim)), standardDescriptor(0, 0xFFFFF, (dLdt)), standardDescriptor(1000, (sizeof(struct tssStruct)-1), (dTss)), }; struct { unsigned short limit __attribute__ ((packed)); union descriptorTableunion *idt __attribute__ ((packed)); } loadGdt = { (5 * sizeof(union descriptorTableunion) - 1), GDT }; void _start(void) { asm( "lgdtl (loadGdt) \n" "movw $0x10,%ax \n" "movw %ax,%ds \n" "movw %ax,%es \n" "movw %ax,%fs \n" "movw %ax,%gs \n" "movw %ax,%ss \n" "movl $0xFFFF,%esp \n" "mov $0x18,%ax \n" //Set up dummy LDT "lldt %ax \n" "mov $0x20,%ax \n" // Set up dummy TSS "ltr %ax \n" // Loads dummy TSS ); main(); //Start Of Kernel Functionality while(1); } /* void _start() { asm( "lgdt (loadgdt) \n" "mov $0x18,%%ax \n" "ltr %%ax \n" : : "r" (GDT) ); main(); while (1); } */ int main() { outputVersion(); //Display Version Info return(0); }