diff options
Diffstat (limited to 'memsize.c')
-rw-r--r-- | memsize.c | 75 |
1 files changed, 37 insertions, 38 deletions
@@ -8,40 +8,38 @@ #include "defs.h" #include "config.h" -short e820_nr; +short e820_nr = 0; short memsz_mode = SZ_MODE_BIOS; -static ulong alt_mem_k; -static ulong ext_mem_k; +static ulong alt_mem_k = 0; +static ulong ext_mem_k = 0; static struct e820entry e820[E820MAX]; -ulong p1, p2; -ulong *p; - static void sort_pmap(void); -//static void memsize_bios(void); static void memsize_820(void); static void memsize_801(void); -static int sanitize_e820_map(struct e820entry *orig_map, -struct e820entry *new_bios, short old_nr); +static int sanitize_e820_map(struct e820entry *orig_map, struct e820entry *new_bios, short old_nr); static void memsize_linuxbios(); /* * Find out how much memory there is. */ +#pragma GCC push_options +#pragma GCC optimize ("O0") void mem_size(void) { - int i, flag=0; - v->test_pages = 0; + int i = 0, flag = 0; + vv->test_pages = 0; /* Get the memory size from the BIOS */ /* Determine the memory map */ + if (query_linuxbios()) { flag = 1; } else if (query_pcbios()) { flag = 2; } - + /* On the first time thru only */ /* Make a copy of the memory info table so that we can re-evaluate */ /* The memory map later */ @@ -63,11 +61,12 @@ void mem_size(void) /* Guarantee that pmap entries are in ascending order */ sort_pmap(); - v->plim_lower = 0; - v->plim_upper = v->pmap[v->msegs-1].end; + vv->plim_lower = 0; + vv->plim_upper = vv->pmap[vv->msegs-1].end; adj_mem(); } +#pragma GCC pop_options static void sort_pmap(void) { @@ -75,10 +74,10 @@ static void sort_pmap(void) /* Do an insertion sort on the pmap, on an already sorted * list this should be a O(1) algorithm. */ - for(i = 0; i < v->msegs; i++) { + for(i = 0; i < vv->msegs; i++) { /* Find where to insert the current element */ for(j = i -1; j >= 0; j--) { - if (v->pmap[i].start > v->pmap[j].start) { + if (vv->pmap[i].start > vv->pmap[j].start) { j++; break; } @@ -86,10 +85,10 @@ static void sort_pmap(void) /* Insert the current element */ if (i != j) { struct pmap temp; - temp = v->pmap[i]; - memmove(&v->pmap[j], &v->pmap[j+1], - (i -j)* sizeof(temp)); - v->pmap[j] = temp; + temp = vv->pmap[i]; + mt86_memmove(&vv->pmap[j], &vv->pmap[j+1], + (i -j)* sizeof(temp)); + vv->pmap[j] = temp; } } } @@ -106,12 +105,12 @@ static void memsize_linuxbios(void) } end = e820[i].addr; end += e820[i].size; - v->pmap[n].start = (e820[i].addr + 4095) >> 12; - v->pmap[n].end = end >> 12; - v->test_pages += v->pmap[n].end - v->pmap[n].start; + vv->pmap[n].start = (e820[i].addr + 4095) >> 12; + vv->pmap[n].end = end >> 12; + vv->test_pages += vv->pmap[n].end - vv->pmap[n].start; n++; } - v->msegs = n; + vv->msegs = n; } static void memsize_820() { @@ -146,22 +145,22 @@ static void memsize_820() if (end > RES_START && end < RES_END) { end = RES_START; } - v->pmap[n].start = (start + 4095) >> 12; - v->pmap[n].end = end >> 12; - v->test_pages += v->pmap[n].end - v->pmap[n].start; + vv->pmap[n].start = (start + 4095) >> 12; + vv->pmap[n].end = end >> 12; + vv->test_pages += vv->pmap[n].end - vv->pmap[n].start; n++; #if 0 int epmap = 0; int lpmap = 0; if(n > 12) { epmap = 34; lpmap = -12; } - hprint (11+n+lpmap,0+epmap,v->pmap[n-1].start); - hprint (11+n+lpmap,10+epmap,v->pmap[n-1].end); - hprint (11+n+lpmap,20+epmap,v->pmap[n-1].end - v->pmap[n-1].start); + hprint (11+n+lpmap,0+epmap,vv->pmap[n-1].start); + hprint (11+n+lpmap,10+epmap,vv->pmap[n-1].end); + hprint (11+n+lpmap,20+epmap,vv->pmap[n-1].end - vv->pmap[n-1].start); dprint (11+n+lpmap,30+epmap,nm[i].type,0,0); #endif } } - v->msegs = n; + vv->msegs = n; } static void memsize_801(void) @@ -177,15 +176,15 @@ static void memsize_801(void) mem_size = alt_mem_k; } /* First we map in the first 640k */ - v->pmap[0].start = 0; - v->pmap[0].end = RES_START >> 12; - v->test_pages = RES_START >> 12; + vv->pmap[0].start = 0; + vv->pmap[0].end = RES_START >> 12; + vv->test_pages = RES_START >> 12; /* Now the extended memory */ - v->pmap[1].start = (RES_END + 4095) >> 12; - v->pmap[1].end = (mem_size + 1024) >> 2; - v->test_pages += mem_size >> 2; - v->msegs = 2; + vv->pmap[1].start = (RES_END + 4095) >> 12; + vv->pmap[1].end = (mem_size + 1024) >> 2; + vv->test_pages += mem_size >> 2; + vv->msegs = 2; } /* |