Changeset 2686705 in mainline


Ignore:
Timestamp:
2011-11-20T17:27:41Z (12 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
42f60375
Parents:
ad12b5ea
Message:

Use frame_adjust_zone_bounds() on arm32.

Location:
kernel/arch/arm32
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/arm32/include/mach/integratorcp/integratorcp.h

    rad12b5ea r2686705  
    103103extern void icp_cpu_halt(void);
    104104extern void icp_irq_exception(unsigned int, istate_t *);
    105 extern void icp_get_memory_extents(uintptr_t *, uintptr_t *);
     105extern void icp_get_memory_extents(uintptr_t *, size_t *);
    106106extern void icp_frame_init(void);
    107107extern size_t icp_get_irq_count(void);
  • kernel/arch/arm32/include/mach/testarm/testarm.h

    rad12b5ea r2686705  
    7171extern void gxemul_cpu_halt(void);
    7272extern void gxemul_irq_exception(unsigned int, istate_t *);
    73 extern void gxemul_get_memory_extents(uintptr_t *, uintptr_t *);
     73extern void gxemul_get_memory_extents(uintptr_t *, size_t *);
    7474extern void gxemul_frame_init(void);
    7575extern size_t gxemul_get_irq_count(void);
  • kernel/arch/arm32/include/machine_func.h

    rad12b5ea r2686705  
    5050        void (*machine_timer_irq_start)(void);
    5151        void (*machine_cpu_halt)(void);
    52         void (*machine_get_memory_extents)(uintptr_t *, uintptr_t *);
     52        void (*machine_get_memory_extents)(uintptr_t *, size_t *);
    5353        void (*machine_irq_exception)(unsigned int, istate_t *);
    5454        void (*machine_frame_init)(void);
     
    8181 * @param size          Place to store memory size.
    8282 */
    83 extern void machine_get_memory_extents(uintptr_t *start, uintptr_t *size);
     83extern void machine_get_memory_extents(uintptr_t *start, size_t *size);
    8484
    8585/** Interrupt exception handler.
  • kernel/arch/arm32/src/mach/gta02/gta02.c

    rad12b5ea r2686705  
    6565static void gta02_timer_irq_start(void);
    6666static void gta02_cpu_halt(void);
    67 static void gta02_get_memory_extents(uintptr_t *start, uintptr_t *size);
     67static void gta02_get_memory_extents(uintptr_t *start, size_t *size);
    6868static void gta02_irq_exception(unsigned int exc_no, istate_t *istate);
    6969static void gta02_frame_init(void);
     
    123123 * @param size          Place to store memory size.
    124124 */
    125 static void gta02_get_memory_extents(uintptr_t *start, uintptr_t *size)
     125static void gta02_get_memory_extents(uintptr_t *start, size_t *size)
    126126{
    127127        *start = GTA02_MEMORY_START + GTA02_MEMORY_SKIP;
  • kernel/arch/arm32/src/mach/integratorcp/integratorcp.c

    rad12b5ea r2686705  
    220220 * @param size          Place to store memory size.
    221221 */
    222 void icp_get_memory_extents(uintptr_t *start, uintptr_t *size)
     222void icp_get_memory_extents(uintptr_t *start, size_t *size)
    223223{
    224224        *start = 0;
  • kernel/arch/arm32/src/mach/testarm/testarm.c

    rad12b5ea r2686705  
    202202 * @param size          Place to store memory size.
    203203 */
    204 void gxemul_get_memory_extents(uintptr_t *start, uintptr_t *size)
     204void gxemul_get_memory_extents(uintptr_t *start, size_t *size)
    205205{
    206206        *start = 0;
    207         *size = *((uintptr_t *) (GXEMUL_MP_ADDRESS + GXEMUL_MP_MEMSIZE_OFFSET));
     207        *size = *((uintptr_t *) (GXEMUL_MP_ADDRESS + GXEMUL_MP_MEMSIZE_OFFSET));
    208208}
    209209
  • kernel/arch/arm32/src/machine_func.c

    rad12b5ea r2686705  
    8585 * @param size          Place to store memory size.
    8686 */
    87 void machine_get_memory_extents(uintptr_t *start, uintptr_t *size)
     87void machine_get_memory_extents(uintptr_t *start, size_t *size)
    8888{
    8989        (machine_ops->machine_get_memory_extents)(start, size);
  • kernel/arch/arm32/src/mm/frame.c

    rad12b5ea r2686705  
    4545uintptr_t last_frame = 0;
    4646
     47static void frame_common_arch_init(bool low)
     48{
     49        uintptr_t base;
     50        size_t size;
     51
     52        machine_get_memory_extents(&base, &size);
     53        base = ALIGN_UP(base, FRAME_SIZE);
     54        size = ALIGN_DOWN(size, FRAME_SIZE);
     55       
     56        if (!frame_adjust_zone_bounds(low, &base, &size))
     57                return;
     58
     59        if (low) {
     60                zone_create(ADDR2PFN(base), SIZE2FRAMES(size),
     61                    BOOT_PAGE_TABLE_START_FRAME +
     62                    BOOT_PAGE_TABLE_SIZE_IN_FRAMES,
     63                    ZONE_AVAILABLE | ZONE_LOWMEM);
     64        } else {
     65                pfn_t conf = zone_external_conf_alloc(SIZE2FRAMES(size));
     66
     67                zone_create(ADDR2PFN(base), SIZE2FRAMES(size), conf,
     68                    ZONE_AVAILABLE | ZONE_HIGHMEM);
     69        }
     70       
     71}
     72
    4773/** Create low memory zones. */
    4874void frame_low_arch_init(void)
    4975{
    50         uintptr_t mem_start, mem_end, mem_size;
     76        uintptr_t mem_start;
     77        size_t mem_size;
    5178
    5279        machine_get_memory_extents(&mem_start, &mem_size);
     
    5481        last_frame = ALIGN_DOWN(mem_start + mem_size, FRAME_SIZE);
    5582       
    56         mem_start = ALIGN_UP(mem_start, FRAME_SIZE);
    57         mem_end = min(ALIGN_DOWN(mem_start + mem_size, FRAME_SIZE),
    58             config.identity_size);
     83        frame_common_arch_init(true);
    5984
    60         zone_create(ADDR2PFN(mem_start), SIZE2FRAMES(mem_end - mem_start),
    61             BOOT_PAGE_TABLE_START_FRAME + BOOT_PAGE_TABLE_SIZE_IN_FRAMES,
    62             ZONE_AVAILABLE | ZONE_LOWMEM);
    63        
    6485        /* blacklist boot page table */
    6586        frame_mark_unavailable(BOOT_PAGE_TABLE_START_FRAME,
     
    7293void frame_high_arch_init(void)
    7394{
    74         uintptr_t mem_start, mem_end, mem_size;
    75         size_t frames;
    76         uintptr_t conf;
    77 
    78         machine_get_memory_extents(&mem_start, &mem_size);
    79 
    80         mem_end = ALIGN_DOWN(mem_start + mem_size, FRAME_SIZE);
    81         if (mem_end <= config.identity_size) {
    82                 /* There is no high memory to init. */
    83                 return;
    84         }
    85 
    86         frames = SIZE2FRAMES(mem_end - config.identity_size);
    87         conf = zone_external_conf_alloc(frames);
    88 
    89         zone_create(ADDR2PFN(config.identity_size), frames, conf,
    90             ZONE_AVAILABLE | ZONE_HIGHMEM);
     95        frame_common_arch_init(false);
    9196}
    9297
Note: See TracChangeset for help on using the changeset viewer.