Changeset 778c1e1 in mainline for arch/ppc32/src/mm/memory_init.c


Ignore:
Timestamp:
2006-02-22T14:52:18Z (19 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
7d53ef4
Parents:
effee6f
Message:

Move OFW functionality of ppc32 memory_init to genarch so that the code can also be used by sparc64.
sparc64 is now close to broken as it lacks functionality to provide identity mapping for the whole phyisical memory.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • arch/ppc32/src/mm/memory_init.c

    reffee6f r778c1e1  
    2828
    2929#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>
    6432
    6533void preboot_read_config(void)
    6634{
    67         init_memmap();
     35        ofw_init_memmap();
    6836}
    6937
    7038size_t get_memory_size(void)
    7139{
    72         return total_mem;
     40        return ofw_get_memory_size();
    7341}
    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.