Adding SharC annotations. Type checker off
[akaros.git] / kern / src / multiboot.c
index 6c47bc6..ab3994a 100644 (file)
@@ -1,47 +1,53 @@
+#ifdef __SHARC__
+#pragma nosharc
+#define SINIT(x) x
+#endif
+
 #include <multiboot.h>
-#include <arch/types.h>
+#include <ros/common.h>
 #include <arch/mmu.h>
 #include <arch/arch.h>
 #include <ros/memlayout.h>
 #include <stdio.h>
 
-#ifdef __DEPUTY__
-//#pragma nodeputy
-#endif
-
 #ifdef __i386__
 #include <arch/apic.h>
 #endif
 
 // These variables are set by i386_detect_memory()
-physaddr_t maxpa;// Maximum physical address
-physaddr_t maxaddrpa;    // Maximum directly addressable physical address
-size_t npage;   // Amount of physical memory (in pages)
-size_t naddrpage;       // Amount of addressable physical memory (in pages)
-static size_t basemem;  // Amount of base memory (in bytes)
-static size_t extmem;   // Amount of extended memory (in bytes)
+physaddr_t RO maxpa;      // Maximum physical address in the system
+physaddr_t RO maxaddrpa;  // Maximum addressable physical address
+void *SNT RO maxaddrpa_ptr;
+size_t RO npages;         // Total number of physical memory pages
+size_t RO naddrpages;    // Number of addressable physical memory pages
+
+static size_t RO basemem;  // Amount of base memory (in bytes)
+static size_t RO extmem;   // Amount of extended memory (in bytes)
 
 void
 multiboot_detect_memory(multiboot_info_t *mbi)
 {
        // Tells us how many kilobytes there are
-       basemem = ROUNDDOWN(mbi->mem_lower*1024, PGSIZE);
-       extmem = ROUNDDOWN(mbi->mem_upper*1024, PGSIZE);
+       size_t b = ROUNDDOWN(mbi->mem_lower*1024, PGSIZE);
+       size_t e = ROUNDDOWN(mbi->mem_upper*1024, PGSIZE);
+       basemem = SINIT(b);
+       extmem = SINIT(e);
 
        // Calculate the maximum physical address based on whether
        // or not there is any extended memory.  See comment in <inc/memlayout.h>
        if (extmem)
-               maxpa = EXTPHYSMEM + extmem;
+               maxpa = SINIT(EXTPHYSMEM + extmem);
        else
-               maxpa = basemem;
+               maxpa = SINIT(basemem);
 
-       npage = maxpa / PGSIZE;
+       npages = SINIT(maxpa / PGSIZE);
 
        // IOAPIC - KERNBASE is the max amount of virtual addresses we can use
        // for the physical memory mapping (aka - the KERNBASE mapping)
-       maxaddrpa = MIN(maxpa, IOAPIC_BASE - KERNBASE);
+       maxaddrpa = SINIT(MIN(maxpa, IOAPIC_BASE - KERNBASE));
+       maxaddrpa_ptr = SINIT((void *SNT)maxaddrpa);
 
-       naddrpage = maxaddrpa / PGSIZE;
+       naddrpages = SINIT(maxaddrpa / PGSIZE);
 
        cprintf("Physical memory: %dK available, ", (int)(maxpa/1024));
        cprintf("base = %dK, extended = %dK\n", (int)(basemem/1024), (int)(extmem/1024));
@@ -70,7 +76,7 @@ multiboot_print_memory_map(multiboot_info_t *mbi) {
                                (unsigned) mmap->length_high,
                                (unsigned) mmap->length_low,
                                (unsigned) memory_type[mmap->type]);
-                       mmap = (char *)mmap + mmap->size + sizeof(mmap->size);
+                       mmap = (memory_map_t *BND(mmap_b,mmap_e))((char *BND(mmap_b,mmap_e))mmap + mmap->size + sizeof(mmap->size));
                }
        }
 }