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
|
* embedded brains GmbH
|
||||||
* Dornierstr. 4
|
* Dornierstr. 4
|
||||||
@@ -15,11 +15,18 @@
|
|||||||
#define ARM_CP15_TEXT_SECTION BSP_START_TEXT_SECTION
|
#define ARM_CP15_TEXT_SECTION BSP_START_TEXT_SECTION
|
||||||
|
|
||||||
#include <bsp.h>
|
#include <bsp.h>
|
||||||
|
#include <bsp/bootcard.h>
|
||||||
|
#include <bsp/fdt.h>
|
||||||
|
#include <bsp/linker-symbols.h>
|
||||||
#include <bsp/start.h>
|
#include <bsp/start.h>
|
||||||
#include <bsp/arm-cp15-start.h>
|
#include <bsp/arm-cp15-start.h>
|
||||||
#include <bsp/arm-a9mpcore-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[] = {
|
imx_mmu_config_table[] = {
|
||||||
ARMV7_CP15_START_DEFAULT_SECTIONS,
|
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)
|
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_A,
|
||||||
ARM_CP15_CTRL_AFE | ARM_CP15_CTRL_Z
|
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();
|
setup_mmu_and_cache();
|
||||||
bsp_start_clear_bss();
|
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
|
# Shared
|
||||||
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/start/bspfatal-default.c
|
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/dev/getentropy/getentropy-cpucounter.c
|
||||||
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/start/sbrk.c
|
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/start/sbrk.c
|
||||||
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/btimer/btimer-stub.c
|
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/btimer/btimer-stub.c
|
||||||
|
|||||||
Reference in New Issue
Block a user