Fixed bug in vmem.
authorethereal <ethereal@ethv.net>
Tue, 7 Jan 2014 07:09:15 +0000 (00:09 -0700)
committerethereal <ethereal@ethv.net>
Tue, 7 Jan 2014 07:10:47 +0000 (00:10 -0700)
kernel/apic.c
kernel/kmain.c
kernel/vmem.c

index 20d2348..8d21325 100644 (file)
@@ -24,8 +24,8 @@ void apic_initialize() {
 static void apic_disable_pic() {
     // code stolen from OSdev wiki
     uint8_t a1, a2;
-       a1 = io_in(0x21);
-       a2 = io_in(0xa1);
+    a1 = io_in(0x21);
+    a2 = io_in(0xa1);
 
     io_out(0x20, 0x11);
     io_wait();
index 9f964ea..bc3c70a 100644 (file)
@@ -58,12 +58,10 @@ void kmain(uint64_t *memmap) {
     // general processor initialization
     processor_initialize();
 
-    u64_t id = processor_id();
-
     apic_enable_interrupts();
-    /*__asm__("int 0x80");
+    __asm__("int 0x80");
     __asm__("int 0x81");
-    __asm__("int 0x7f");*/
+    __asm__("int 0x7f");
 
     *((u8_t *)0xdeadc0de) = 0;
 
index 398d2fb..abe4424 100644 (file)
@@ -105,8 +105,7 @@ static u64_t *vmem_ensure(u64_t sphy, u64_t target, int level) {
         if(level && (sphy & 0x1) == 0) {
             u64_t t = vmem_create_table();
             // mark as cachable, user, present
-            *ret = t | 0x03;
-            sphy = *ret;
+            sphy = *ret = t | 0x07;
         }
     }
     return ret;
@@ -115,7 +114,7 @@ static u64_t *vmem_ensure(u64_t sphy, u64_t target, int level) {
 static u64_t vmem_create_table() {
     u64_t paddr = pagereg_get();
 
-    for(int i = 0; i < 0x1000; i ++) *(u8_t *)(SYDI_PHY_MAP_BASE+i) = 0;
+    for(int i = 0; i < 0x1000; i ++) *(u8_t *)(SYDI_PHY_MAP_BASE+paddr+i) = 0;
 
     return paddr;
 }