iBoot/platform/defaults/platform_get_memory_region.c

83 lines
1.8 KiB
C

/*
* Copyright (C) 2007-2014 Apple Inc. All rights reserved.
*
* This document is the property of Apple Inc.
* It is considered confidential and proprietary.
*
* This document may not be reproduced or transmitted in any form,
* in whole or in part, without the express written permission of
* Apple Inc.
*/
#include <debug.h>
#include <platform.h>
#include <platform/memmap.h>
uintptr_t platform_get_memory_region_base_optional(memory_region_type_t region)
{
uintptr_t base;
switch (region) {
case kMemoryRegion_Panic:
base = SDRAM_BASE + platform_get_memory_size() - PANIC_SIZE;
break;
#if defined(DISPLAY_BASE)
case kMemoryRegion_Display:
base = SDRAM_BASE + platform_get_memory_size() - platform_get_memory_region_size(kMemoryRegion_Display) - PANIC_SIZE;
break;
#endif
#if defined(SLEEP_TOKEN_BUFFER_BASE)
case kMemoryRegion_SleepToken:
base = SLEEP_TOKEN_BUFFER_BASE;
break;
#endif
case kMemoryRegion_Kernel:
base = SDRAM_BASE;
break;
default:
base = (uintptr_t)-1;
}
return base;
}
size_t platform_get_memory_region_size_optional(memory_region_type_t region)
{
size_t size;
switch (region) {
case kMemoryRegion_Panic:
size = PANIC_SIZE;
break;
#if defined(DISPLAY_SIZE)
case kMemoryRegion_Display:
size = platform_get_display_memory_size();
ASSERT(size != 0);
break;
#endif
#if defined(SLEEP_TOKEN_BUFFER_SIZE)
case kMemoryRegion_SleepToken:
size = SLEEP_TOKEN_BUFFER_SIZE;
break;
#endif
case kMemoryRegion_Kernel:
#if defined(DISPLAY_BASE)
size = platform_get_memory_region_base(kMemoryRegion_Display)- platform_get_memory_region_base(kMemoryRegion_Kernel);
#else
size = platform_get_memory_region_base(kMemoryRegion_Panic) - platform_get_memory_region_base(kMemoryRegion_Kernel);
#endif
break;
default:
size = (size_t)-1;
}
return size;
}