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