Changeset 3debedec in mainline for arch/ppc32/src/mm/memory_init.c
- Timestamp:
- 2006-02-16T20:26:14Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- ba52899
- Parents:
- 2a46e10
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/ppc32/src/mm/memory_init.c
r2a46e10 r3debedec 30 30 #include <genarch/ofw/ofw.h> 31 31 #include <panic.h> 32 #include <mm/frame.h> 33 #include <align.h> 32 34 33 35 #define MEMMAP_MAX_RECORDS 32 … … 38 40 } memmap_t; 39 41 40 size_t get_memory_size(void) 42 static memmap_t memmap[MEMMAP_MAX_RECORDS]; 43 size_t total_mem = 0; 44 45 static void init_memmap(void) 41 46 { 47 int i; 48 42 49 phandle handle = ofw_find_device("/memory"); 43 50 if (handle == -1) 44 51 panic("No RAM\n"); 45 52 46 memmap_t memmap[MEMMAP_MAX_RECORDS];47 53 size_t ret = ofw_get_property(handle, "reg", &memmap, sizeof(memmap)); 48 54 if (ret == -1) 49 55 panic("Device /memory has no reg property\n"); 50 56 51 size_t total = 0;52 int i;53 57 54 58 for (i = 0; i < MEMMAP_MAX_RECORDS; i++) { 55 59 if (memmap[i].size == 0) 56 60 break; 57 total += memmap[i].size;61 total_mem += memmap[i].size; 58 62 } 63 } 59 64 60 return total; 65 void preboot_read_config(void) 66 { 67 init_memmap(); 61 68 } 69 70 size_t get_memory_size(void) 71 { 72 return total_mem; 73 } 74 75 void ppc_init_zones(void) 76 { 77 int i; 78 pfn_t confdata; 79 80 for (i = 0; i < MEMMAP_MAX_RECORDS; i++) { 81 if (memmap[i].size == 0) 82 break; 83 confdata = ADDR2PFN(memmap[i].start); 84 if (confdata == 0) 85 confdata = 2; 86 zone_create(ADDR2PFN(memmap[i].start), 87 SIZE2FRAMES(ALIGN_DOWN(memmap[i].size,PAGE_SIZE)), 88 confdata, 0); 89 } 90 }
Note:
See TracChangeset
for help on using the changeset viewer.