summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/arm/altera-cyclone-v/startup/bspgetworkarea.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/arm/altera-cyclone-v/startup/bspgetworkarea.c')
-rw-r--r--c/src/lib/libbsp/arm/altera-cyclone-v/startup/bspgetworkarea.c175
1 files changed, 0 insertions, 175 deletions
diff --git a/c/src/lib/libbsp/arm/altera-cyclone-v/startup/bspgetworkarea.c b/c/src/lib/libbsp/arm/altera-cyclone-v/startup/bspgetworkarea.c
deleted file mode 100644
index a3c702de98..0000000000
--- a/c/src/lib/libbsp/arm/altera-cyclone-v/startup/bspgetworkarea.c
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * Copyright (c) 2017 embedded brains GmbH
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#include <bsp/bootcard.h>
-#include <bsp/arm-cp15-start.h>
-#include <bsp/fdt.h>
-#include <bsp/linker-symbols.h>
-
-#include <libcpu/arm-cp15.h>
-
-#include <libfdt.h>
-
-#define AREA_COUNT_MAX 16
-
-static const char memory_path[] = "/memory";
-
-static const char reserved_memory_path[] = "/reserved-memory";
-
-static void adjust_memory_size(const void *fdt, Heap_Area *area)
-{
- int node;
-
- node = fdt_path_offset_namelen(
- fdt,
- memory_path,
- (int) sizeof(memory_path) - 1
- );
-
- if (node >= 0) {
- int len;
- const void *val;
- uintptr_t begin;
- uintptr_t size;
- uintptr_t a_bit;
-
- val = fdt_getprop(fdt, node, "reg", &len);
- if (len == 8) {
- begin = fdt32_to_cpu(((fdt32_t *) val)[0]);
- size = fdt32_to_cpu(((fdt32_t *) val)[1]);
- } else {
- begin = 0;
- size = 0;
- }
-
- /*
- * Remove a bit to avoid problems with speculative memory accesses beyond
- * the valid memory area.
- */
- a_bit = 0x100000;
- if (size >= a_bit) {
- size -= a_bit;
- }
-
- if (
- begin == 0
- && size > (uintptr_t) bsp_section_work_end
- && (uintptr_t) bsp_section_nocache_end
- < (uintptr_t) bsp_section_work_end
- ) {
- area->size += size - (uintptr_t) bsp_section_work_end;
- }
- }
-}
-
-static Heap_Area *find_area(
- Heap_Area *areas,
- size_t area_count,
- uint32_t begin
-)
-{
- size_t i;
-
- for (i = 0; i < area_count; ++i) {
- uintptr_t b;
- uintptr_t e;
-
- b = (uintptr_t) areas[i].begin;
- e = b + (uintptr_t) areas[i].size;
-
- if (b <= begin && begin < e) {
- return &areas[i];
- }
- }
-
- return NULL;
-}
-
-static size_t remove_reserved_memory(
- const void *fdt,
- Heap_Area *areas,
- size_t area_count
-)
-{
- int node;
-
- node = fdt_path_offset_namelen(
- fdt,
- reserved_memory_path,
- (int) sizeof(reserved_memory_path) - 1
- );
-
- if (node >= 0) {
- node = fdt_first_subnode(fdt, node);
-
- while (node >= 0) {
- int len;
- const void *val;
- uintptr_t area_begin;
- uintptr_t area_end;
- uintptr_t hole_begin;
- uintptr_t hole_end;
- Heap_Area *area;
-
- val = fdt_getprop(fdt, node, "reg", &len);
- if (len == 8) {
- hole_begin = fdt32_to_cpu(((fdt32_t *) val)[0]);
- hole_end = hole_begin + fdt32_to_cpu(((fdt32_t *) val)[1]);
- } else {
- rtems_panic("unexpected reserved memory area");
- }
-
- area = find_area(areas, area_count, hole_begin);
- area_begin = (uintptr_t) area->begin;
- area_end = area_begin + (uintptr_t) area->size;
- area->size = hole_begin - area_begin;
-
- if (hole_end <= area_end) {
- if (area_count >= AREA_COUNT_MAX) {
- rtems_panic("too many reserved memory areas");
- }
-
- area = &areas[area_count];
- ++area_count;
- area->begin = (void *) hole_end;
- area->size = area_end - hole_end;
- }
-
- node = fdt_next_subnode(fdt, node);
- }
- }
-
- return area_count;
-}
-
-void bsp_work_area_initialize(void)
-{
- const void *fdt;
- Heap_Area areas[AREA_COUNT_MAX];
- size_t area_count;
- size_t i;
-
- areas[0].begin = bsp_section_work_begin;
- areas[0].size = (uintptr_t) bsp_section_work_size;
- area_count = 1;
-
- fdt = bsp_fdt_get();
-
- adjust_memory_size(fdt, &areas[0]);
- area_count = remove_reserved_memory(fdt, areas, area_count);
-
- for (i = 0; i < area_count; ++i) {
- arm_cp15_set_translation_table_entries(
- areas[i].begin,
- (void *) ((uintptr_t) areas[i].begin + areas[i].size),
- ARMV7_MMU_READ_WRITE_CACHED
- );
- }
-
- bsp_work_area_initialize_with_table(areas, area_count);
-}