From 5dfac4879ce5f34503ae7537eefd3fc48d6fa750 Mon Sep 17 00:00:00 2001 From: Kimplul Date: Wed, 25 Aug 2021 23:47:08 +0300 Subject: libfdt seems to work At least as far as reading memory info, cool. One issue I have is that .(ro)data is apparently accessed by absolute addresses, so I need to know at which address the kernel is going to be loaded. I would prefer completely position independent code, but if that's not possible then eh. --- include/apos/link.lds.h | 8 -------- include/apos/main.h | 2 +- include/fdt.h | 1 + include/libfdt.h | 1 + include/libfdt_env.h | 17 +++++++++++++++++ 5 files changed, 20 insertions(+), 9 deletions(-) delete mode 100644 include/apos/link.lds.h create mode 100644 include/fdt.h create mode 100644 include/libfdt.h create mode 100644 include/libfdt_env.h (limited to 'include') diff --git a/include/apos/link.lds.h b/include/apos/link.lds.h deleted file mode 100644 index ddb1f65..0000000 --- a/include/apos/link.lds.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef APOS_LINK_LDS_H -#define APOS_LINK_LDS_H - -#ifndef PM_KERN -#define PM_KERN 0 -#endif - -#endif /* APOS_LINK_LDS_H */ diff --git a/include/apos/main.h b/include/apos/main.h index 5292df7..15fff73 100644 --- a/include/apos/main.h +++ b/include/apos/main.h @@ -3,6 +3,6 @@ #include -#define __main __section(".text.start") __noinline +#define __main __section(".kernel.start") __noinline #endif /* APOS_MAIN_H */ diff --git a/include/fdt.h b/include/fdt.h new file mode 100644 index 0000000..9236a45 --- /dev/null +++ b/include/fdt.h @@ -0,0 +1 @@ +#include "../dtc/libfdt/fdt.h" diff --git a/include/libfdt.h b/include/libfdt.h new file mode 100644 index 0000000..65b3ca6 --- /dev/null +++ b/include/libfdt.h @@ -0,0 +1 @@ +#include "../dtc/libfdt/libfdt.h" diff --git a/include/libfdt_env.h b/include/libfdt_env.h new file mode 100644 index 0000000..166b558 --- /dev/null +++ b/include/libfdt_env.h @@ -0,0 +1,17 @@ +#ifndef LIBFDT_ENV_H +/* take over libfdt */ +#define LIBFDT_ENV_H + +#include +#include + +typedef int16_t fdt16_t; +typedef int32_t fdt32_t; +typedef int64_t fdt64_t; + +#define fdt32_to_cpu(x) be32_to_cpu(x) +#define cpu_to_fdt32(x) cpu_to_be32(x) +#define fdt64_to_cpu(x) be64_to_cpu(x) +#define cpu_to_fdt64(x) cpu_to_be64(x) + +#endif /* LIBFDT_ENV_H */ -- cgit v1.3