forked from Imagelibrary/rtems
bsp/imx: Adjust workspace according to device tree
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2013, 2017 embedded brains GmbH. All rights reserved.
|
||||
* Copyright (c) 2013, 2018 embedded brains GmbH. All rights reserved.
|
||||
*
|
||||
* embedded brains GmbH
|
||||
* Dornierstr. 4
|
||||
@@ -15,11 +15,18 @@
|
||||
#define ARM_CP15_TEXT_SECTION BSP_START_TEXT_SECTION
|
||||
|
||||
#include <bsp.h>
|
||||
#include <bsp/bootcard.h>
|
||||
#include <bsp/fdt.h>
|
||||
#include <bsp/linker-symbols.h>
|
||||
#include <bsp/start.h>
|
||||
#include <bsp/arm-cp15-start.h>
|
||||
#include <bsp/arm-a9mpcore-start.h>
|
||||
|
||||
BSP_START_DATA_SECTION static const arm_cp15_start_section_config
|
||||
#include <libfdt.h>
|
||||
|
||||
#define WORKSPACE_ENTRY_INDEX 8
|
||||
|
||||
BSP_START_DATA_SECTION static arm_cp15_start_section_config
|
||||
imx_mmu_config_table[] = {
|
||||
ARMV7_CP15_START_DEFAULT_SECTIONS,
|
||||
{
|
||||
@@ -29,9 +36,38 @@ imx_mmu_config_table[] = {
|
||||
}
|
||||
};
|
||||
|
||||
BSP_START_DATA_SECTION static char memory_path[] = "/memory";
|
||||
|
||||
BSP_START_TEXT_SECTION static void setup_mmu_and_cache(void)
|
||||
{
|
||||
uint32_t ctrl = arm_cp15_start_setup_mmu_and_cache(
|
||||
const void *fdt;
|
||||
int node;
|
||||
uint32_t ctrl;
|
||||
|
||||
fdt = bsp_fdt_get();
|
||||
node = fdt_path_offset_namelen(
|
||||
fdt,
|
||||
memory_path,
|
||||
(int) sizeof(memory_path) - 1
|
||||
);
|
||||
|
||||
if (node >= 0) {
|
||||
int len;
|
||||
const void *val;
|
||||
|
||||
val = fdt_getprop(fdt, node, "reg", &len);
|
||||
if (len == 8) {
|
||||
uint32_t begin;
|
||||
uint32_t size;
|
||||
|
||||
begin = fdt32_to_cpu(((fdt32_t *) val)[0]);
|
||||
size = fdt32_to_cpu(((fdt32_t *) val)[1]);
|
||||
|
||||
imx_mmu_config_table[WORKSPACE_ENTRY_INDEX].end = begin + size;
|
||||
}
|
||||
}
|
||||
|
||||
ctrl = arm_cp15_start_setup_mmu_and_cache(
|
||||
ARM_CP15_CTRL_A,
|
||||
ARM_CP15_CTRL_AFE | ARM_CP15_CTRL_Z
|
||||
);
|
||||
@@ -65,3 +101,14 @@ BSP_START_TEXT_SECTION void bsp_start_hook_1(void)
|
||||
setup_mmu_and_cache();
|
||||
bsp_start_clear_bss();
|
||||
}
|
||||
|
||||
void bsp_work_area_initialize(void)
|
||||
{
|
||||
uintptr_t begin;
|
||||
uintptr_t end;
|
||||
|
||||
begin = imx_mmu_config_table[WORKSPACE_ENTRY_INDEX].begin;
|
||||
end = imx_mmu_config_table[WORKSPACE_ENTRY_INDEX].end;
|
||||
|
||||
bsp_work_area_initialize_default((void *) begin, end - begin);
|
||||
}
|
||||
|
||||
@@ -30,7 +30,6 @@ librtemsbsp_a_SOURCES =
|
||||
|
||||
# Shared
|
||||
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/start/bspfatal-default.c
|
||||
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/start/bspgetworkarea-default.c
|
||||
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/getentropy/getentropy-cpucounter.c
|
||||
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/start/sbrk.c
|
||||
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/btimer/btimer-stub.c
|
||||
|
||||
Reference in New Issue
Block a user