committed by
Norman Feske
parent
a35d5d7995
commit
a911e81662
2
lib/import/import-fdt.mk
Normal file
2
lib/import/import-fdt.mk
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
INC_DIR += $(REP_DIR)/src/lib/fdt \
|
||||||
|
$(call select_from_ports,fdt)/src/lib/fdt/libfdt
|
||||||
16
lib/mk/fdt.mk
Normal file
16
lib/mk/fdt.mk
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
SHARED_LIB = yes
|
||||||
|
|
||||||
|
FDT_PORT := $(call select_from_ports,fdt)/src/lib/fdt/libfdt
|
||||||
|
|
||||||
|
INC_DIR += $(REP_DIR)/src/lib/fdt $(FDT_PORT)
|
||||||
|
|
||||||
|
CC_C_OPT += -include $(REP_DIR)/src/lib/fdt/libfdt_env.h
|
||||||
|
LD_OPT += --version-script=$(REP_DIR)/src/lib/fdt/symbol.map
|
||||||
|
|
||||||
|
SRC_C = fdt.c fdt_ro.c fdt_wip.c fdt_sw.c fdt_rw.c fdt_strerror.c \
|
||||||
|
fdt_empty_tree.c fdt_addresses.c fdt_overlay.c
|
||||||
|
|
||||||
|
SRC_CC = libfdt_env.cc
|
||||||
|
|
||||||
|
vpath %.c $(FDT_PORT)
|
||||||
|
vpath %.cc $(REP_DIR)/src/lib/fdt
|
||||||
66
lib/symbols/fdt
Normal file
66
lib/symbols/fdt
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
fdt_next_node T
|
||||||
|
fdt_check_header T
|
||||||
|
fdt_move T
|
||||||
|
fdt_string T
|
||||||
|
fdt_num_mem_rsv T
|
||||||
|
fdt_get_mem_rsv T
|
||||||
|
fdt_subnode_offset_namelen T
|
||||||
|
fdt_subnode_offset T
|
||||||
|
fdt_path_offset_namelen T
|
||||||
|
fdt_path_offset T
|
||||||
|
fdt_get_name T
|
||||||
|
fdt_get_property_namelen T
|
||||||
|
fdt_get_property T
|
||||||
|
fdt_getprop_namelen T
|
||||||
|
fdt_getprop T
|
||||||
|
fdt_get_phandle T
|
||||||
|
fdt_get_alias_namelen T
|
||||||
|
fdt_get_alias T
|
||||||
|
fdt_get_path T
|
||||||
|
fdt_supernode_atdepth_offset T
|
||||||
|
fdt_node_depth T
|
||||||
|
fdt_parent_offset T
|
||||||
|
fdt_node_offset_by_prop_value T
|
||||||
|
fdt_node_offset_by_phandle T
|
||||||
|
fdt_node_check_compatible T
|
||||||
|
fdt_node_offset_by_compatible T
|
||||||
|
fdt_setprop_inplace T
|
||||||
|
fdt_nop_property T
|
||||||
|
fdt_nop_node T
|
||||||
|
fdt_create T
|
||||||
|
fdt_add_reservemap_entry T
|
||||||
|
fdt_finish_reservemap T
|
||||||
|
fdt_begin_node T
|
||||||
|
fdt_property T
|
||||||
|
fdt_end_node T
|
||||||
|
fdt_finish T
|
||||||
|
fdt_open_into T
|
||||||
|
fdt_pack T
|
||||||
|
fdt_add_mem_rsv T
|
||||||
|
fdt_del_mem_rsv T
|
||||||
|
fdt_set_name T
|
||||||
|
fdt_setprop T
|
||||||
|
fdt_delprop T
|
||||||
|
fdt_add_subnode_namelen T
|
||||||
|
fdt_add_subnode T
|
||||||
|
fdt_del_node T
|
||||||
|
fdt_strerror T
|
||||||
|
fdt_offset_ptr T
|
||||||
|
fdt_next_tag T
|
||||||
|
fdt_appendprop T
|
||||||
|
fdt_create_empty_tree T
|
||||||
|
fdt_first_property_offset T
|
||||||
|
fdt_get_property_by_offset T
|
||||||
|
fdt_getprop_by_offset T
|
||||||
|
fdt_next_property_offset T
|
||||||
|
fdt_first_subnode T
|
||||||
|
fdt_next_subnode T
|
||||||
|
fdt_address_cells T
|
||||||
|
fdt_size_cells T
|
||||||
|
fdt_stringlist_contains T
|
||||||
|
fdt_stringlist_count T
|
||||||
|
fdt_stringlist_search T
|
||||||
|
fdt_stringlist_get T
|
||||||
|
fdt_resize T
|
||||||
|
fdt_overlay_apply T
|
||||||
|
fdt_get_string T
|
||||||
1
ports/fdt.hash
Normal file
1
ports/fdt.hash
Normal file
@@ -0,0 +1 @@
|
|||||||
|
212d204b2c1702dbaf98335fa7fbd0d83ab6cbb4
|
||||||
7
ports/fdt.port
Normal file
7
ports/fdt.port
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
LICENSE := GPLv2 or BSD-2-Clause
|
||||||
|
DOWNLOADS := fdt.archive
|
||||||
|
VERSION := 1.5.0
|
||||||
|
|
||||||
|
URL(fdt) := https://git.kernel.org/pub/scm/utils/dtc/dtc.git/snapshot/dtc-$(VERSION).tar.gz
|
||||||
|
SHA(fdt) := 3416f10ca69b0b911f027a9cb96471485dd8705705fc4813283f963299eaae0a
|
||||||
|
DIR(fdt) := src/lib/fdt
|
||||||
126
src/lib/fdt/libfdt_env.cc
Normal file
126
src/lib/fdt/libfdt_env.cc
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
/**
|
||||||
|
* \brief Stand alone environment for FDI
|
||||||
|
* \author Sebastian Sumpf
|
||||||
|
* \date 2019-07-19
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2019 Genode Labs GmbH
|
||||||
|
*
|
||||||
|
* This file is part of the Genode OS framework, which is distributed
|
||||||
|
* under the terms of the GNU Affero General Public License version 3.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <util/endian.h>
|
||||||
|
#include <util/string.h>
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
#include "libfdt_env.h"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/******************
|
||||||
|
** libfdt_env.h **
|
||||||
|
******************/
|
||||||
|
|
||||||
|
uint16_t fdt16_to_cpu(fdt16_t x) { return host_to_big_endian(x); }
|
||||||
|
uint32_t fdt32_to_cpu(fdt32_t x) { return host_to_big_endian(x); }
|
||||||
|
uint64_t fdt64_to_cpu(fdt64_t x) { return host_to_big_endian(x); }
|
||||||
|
|
||||||
|
fdt16_t cpu_to_fdt16(uint16_t x) { return host_to_big_endian(x); }
|
||||||
|
fdt32_t cpu_to_fdt32(uint32_t x) { return host_to_big_endian(x); }
|
||||||
|
fdt64_t cpu_to_fdt64(uint64_t x) { return host_to_big_endian(x); }
|
||||||
|
|
||||||
|
|
||||||
|
/**************
|
||||||
|
** string.h **
|
||||||
|
**************/
|
||||||
|
|
||||||
|
|
||||||
|
void *memchr(const void *s, int c, size_t n)
|
||||||
|
{
|
||||||
|
const unsigned char *p = (unsigned char *)s;
|
||||||
|
while (n-- != 0) {
|
||||||
|
if ((unsigned char)c == *p++) {
|
||||||
|
return (void *)(p - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int memcmp(const void *s1, const void *s2, size_t n) {
|
||||||
|
return Genode::memcmp(s1, s2, n); }
|
||||||
|
|
||||||
|
|
||||||
|
void *memcpy(void *dest, const void *src, size_t n) {
|
||||||
|
return Genode::memcpy(dest, src, n); }
|
||||||
|
|
||||||
|
|
||||||
|
void *memmove(void *dest, const void *src, size_t n) {
|
||||||
|
return Genode::memmove(dest, src, n); }
|
||||||
|
|
||||||
|
|
||||||
|
void *memset(void *s, int c, size_t n) {
|
||||||
|
return Genode::memset(s, c, n); }
|
||||||
|
|
||||||
|
|
||||||
|
char *strchr(const char *s, int c)
|
||||||
|
{
|
||||||
|
char ch = c;
|
||||||
|
|
||||||
|
for (;; ++s) {
|
||||||
|
if (*s == ch)
|
||||||
|
return ((char *)s);
|
||||||
|
if (*s == '\0')
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
char *strrchr(const char *s, int c)
|
||||||
|
{
|
||||||
|
char *save;
|
||||||
|
char ch = c;
|
||||||
|
|
||||||
|
for (save = nullptr;; ++s) {
|
||||||
|
if (*s == ch)
|
||||||
|
save = (char *)s;
|
||||||
|
if (*s == '\0')
|
||||||
|
return (save);
|
||||||
|
}
|
||||||
|
/* NOTREACHED */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
size_t strlen(const char *s) {
|
||||||
|
return Genode::strlen(s); }
|
||||||
|
|
||||||
|
|
||||||
|
size_t strnlen(const char *s, size_t maxlen)
|
||||||
|
{
|
||||||
|
for (size_t c = 0; c < maxlen; c++)
|
||||||
|
if (!s[c])
|
||||||
|
return c;
|
||||||
|
|
||||||
|
return maxlen;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**************
|
||||||
|
** stdlib.h **
|
||||||
|
**************/
|
||||||
|
|
||||||
|
unsigned long int strtoul(const char *nptr, char **endptr, int base)
|
||||||
|
{
|
||||||
|
unsigned long r = 0;
|
||||||
|
size_t read = Genode::ascii_to_unsigned(nptr, r, base);
|
||||||
|
|
||||||
|
if (endptr)
|
||||||
|
*endptr = (char *)(nptr + read);
|
||||||
|
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
70
src/lib/fdt/libfdt_env.h
Normal file
70
src/lib/fdt/libfdt_env.h
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
/**
|
||||||
|
* \brief Stand alone definitions for FDI
|
||||||
|
* \author Sebastian Sumpf
|
||||||
|
* \date 2019-07-19
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2019 Genode Labs GmbH
|
||||||
|
*
|
||||||
|
* This file is part of the Genode OS framework, which is distributed
|
||||||
|
* under the terms of the GNU Affero General Public License version 3.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef LIBFDT_ENV_H
|
||||||
|
#define LIBFDT_ENV_H
|
||||||
|
|
||||||
|
#include <base/fixed_stdint.h>
|
||||||
|
|
||||||
|
|
||||||
|
/******************
|
||||||
|
** libfdt_env.h **
|
||||||
|
******************/
|
||||||
|
|
||||||
|
#define NULL ((void *)0)
|
||||||
|
#define INT_MAX 0x7fffffff
|
||||||
|
|
||||||
|
typedef genode_uint16_t fdt16_t;
|
||||||
|
typedef genode_uint32_t fdt32_t;
|
||||||
|
typedef genode_uint64_t fdt64_t;
|
||||||
|
|
||||||
|
typedef genode_uint8_t uint8_t;
|
||||||
|
typedef genode_uint16_t uint16_t;
|
||||||
|
typedef genode_uint32_t uint32_t;
|
||||||
|
typedef genode_uint64_t uint64_t;
|
||||||
|
|
||||||
|
typedef unsigned long size_t;
|
||||||
|
typedef unsigned long uintptr_t;
|
||||||
|
|
||||||
|
uint16_t fdt16_to_cpu(fdt16_t x);
|
||||||
|
uint32_t fdt32_to_cpu(fdt32_t x);
|
||||||
|
uint64_t fdt64_to_cpu(fdt64_t x);
|
||||||
|
|
||||||
|
fdt16_t cpu_to_fdt16(uint16_t x);
|
||||||
|
fdt32_t cpu_to_fdt32(uint32_t x);
|
||||||
|
fdt64_t cpu_to_fdt64(uint64_t x);
|
||||||
|
|
||||||
|
|
||||||
|
/**************
|
||||||
|
** string.h **
|
||||||
|
**************/
|
||||||
|
|
||||||
|
void *memchr(const void *s, int c, size_t n);
|
||||||
|
int memcmp(const void *s1, const void *s2, size_t n);
|
||||||
|
void *memcpy(void *dest, const void *src, size_t n);
|
||||||
|
void *memmove(void *dest, const void *src, size_t n);
|
||||||
|
void *memset(void *s, int c, size_t n);
|
||||||
|
|
||||||
|
char *strchr(const char *s, int c);
|
||||||
|
char *strrchr(const char *s, int c);
|
||||||
|
size_t strlen(const char *s);
|
||||||
|
size_t strnlen(const char *s, size_t maxlen);
|
||||||
|
|
||||||
|
|
||||||
|
/**************
|
||||||
|
** stdlib.h **
|
||||||
|
**************/
|
||||||
|
|
||||||
|
unsigned long int strtoul(const char *nptr, char **endptr, int base);
|
||||||
|
|
||||||
|
#endif /* LIBFDT_ENV_H */
|
||||||
71
src/lib/fdt/symbol.map
Normal file
71
src/lib/fdt/symbol.map
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
{
|
||||||
|
global:
|
||||||
|
fdt_next_node;
|
||||||
|
fdt_check_header;
|
||||||
|
fdt_move;
|
||||||
|
fdt_string;
|
||||||
|
fdt_num_mem_rsv;
|
||||||
|
fdt_get_mem_rsv;
|
||||||
|
fdt_subnode_offset_namelen;
|
||||||
|
fdt_subnode_offset;
|
||||||
|
fdt_path_offset_namelen;
|
||||||
|
fdt_path_offset;
|
||||||
|
fdt_get_name;
|
||||||
|
fdt_get_property_namelen;
|
||||||
|
fdt_get_property;
|
||||||
|
fdt_getprop_namelen;
|
||||||
|
fdt_getprop;
|
||||||
|
fdt_get_phandle;
|
||||||
|
fdt_get_alias_namelen;
|
||||||
|
fdt_get_alias;
|
||||||
|
fdt_get_path;
|
||||||
|
fdt_supernode_atdepth_offset;
|
||||||
|
fdt_node_depth;
|
||||||
|
fdt_parent_offset;
|
||||||
|
fdt_node_offset_by_prop_value;
|
||||||
|
fdt_node_offset_by_phandle;
|
||||||
|
fdt_node_check_compatible;
|
||||||
|
fdt_node_offset_by_compatible;
|
||||||
|
fdt_setprop_inplace;
|
||||||
|
fdt_nop_property;
|
||||||
|
fdt_nop_node;
|
||||||
|
fdt_create;
|
||||||
|
fdt_add_reservemap_entry;
|
||||||
|
fdt_finish_reservemap;
|
||||||
|
fdt_begin_node;
|
||||||
|
fdt_property;
|
||||||
|
fdt_end_node;
|
||||||
|
fdt_finish;
|
||||||
|
fdt_open_into;
|
||||||
|
fdt_pack;
|
||||||
|
fdt_add_mem_rsv;
|
||||||
|
fdt_del_mem_rsv;
|
||||||
|
fdt_set_name;
|
||||||
|
fdt_setprop;
|
||||||
|
fdt_delprop;
|
||||||
|
fdt_add_subnode_namelen;
|
||||||
|
fdt_add_subnode;
|
||||||
|
fdt_del_node;
|
||||||
|
fdt_strerror;
|
||||||
|
fdt_offset_ptr;
|
||||||
|
fdt_next_tag;
|
||||||
|
fdt_appendprop;
|
||||||
|
fdt_create_empty_tree;
|
||||||
|
fdt_first_property_offset;
|
||||||
|
fdt_get_property_by_offset;
|
||||||
|
fdt_getprop_by_offset;
|
||||||
|
fdt_next_property_offset;
|
||||||
|
fdt_first_subnode;
|
||||||
|
fdt_next_subnode;
|
||||||
|
fdt_address_cells;
|
||||||
|
fdt_size_cells;
|
||||||
|
fdt_stringlist_contains;
|
||||||
|
fdt_stringlist_count;
|
||||||
|
fdt_stringlist_search;
|
||||||
|
fdt_stringlist_get;
|
||||||
|
fdt_resize;
|
||||||
|
fdt_overlay_apply;
|
||||||
|
fdt_get_string;
|
||||||
|
local:
|
||||||
|
*;
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user