Changeset 778c1e1 in mainline for arch/ppc32/src/mm/memory_init.c
- Timestamp:
- 2006-02-22T14:52:18Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 7d53ef4
- Parents:
- effee6f
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/ppc32/src/mm/memory_init.c
reffee6f r778c1e1 28 28 29 29 #include <arch/mm/memory_init.h> 30 #include <genarch/ofw/ofw.h> 31 #include <panic.h> 32 #include <mm/frame.h> 33 #include <align.h> 34 35 #define MEMMAP_MAX_RECORDS 32 36 37 typedef struct { 38 __u32 start; 39 __u32 size; 40 } memmap_t; 41 42 static memmap_t memmap[MEMMAP_MAX_RECORDS]; 43 size_t total_mem = 0; 44 45 static void init_memmap(void) 46 { 47 int i; 48 49 phandle handle = ofw_find_device("/memory"); 50 if (handle == -1) 51 panic("No RAM\n"); 52 53 size_t ret = ofw_get_property(handle, "reg", &memmap, sizeof(memmap)); 54 if (ret == -1) 55 panic("Device /memory has no reg property\n"); 56 57 58 for (i = 0; i < MEMMAP_MAX_RECORDS; i++) { 59 if (memmap[i].size == 0) 60 break; 61 total_mem += memmap[i].size; 62 } 63 } 30 #include <genarch/ofw/memory_init.h> 31 #include <typedefs.h> 64 32 65 33 void preboot_read_config(void) 66 34 { 67 init_memmap();35 ofw_init_memmap(); 68 36 } 69 37 70 38 size_t get_memory_size(void) 71 39 { 72 return total_mem;40 return ofw_get_memory_size(); 73 41 } 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.