aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/test_dt.c41
-rw-r--r--test/testdata/vf2.dtbbin0 -> 41088 bytes
2 files changed, 35 insertions, 6 deletions
diff --git a/test/test_dt.c b/test/test_dt.c
index 1eb9751..f606d2e 100644
--- a/test/test_dt.c
+++ b/test/test_dt.c
@@ -4,32 +4,61 @@
#include <fbos/dt.h>
-int main(void)
+void dt_info_from(const char *const path, struct dt_info *info)
{
- FILE *fh = fopen("./test/testdata/qemu.dtb", "rb");
+ FILE *fh = fopen(path, "rb");
assert(fh);
fseek(fh, 0, SEEK_END);
long fsize = ftell(fh);
rewind(fh);
- uint32_t *contents = malloc((unsigned long)fsize + 1);
- fread(contents, (unsigned long)fsize, sizeof(uint32_t *), fh);
+ char *contents = malloc((unsigned long)fsize + 1);
+ assert(contents);
+
+ fread(contents, (unsigned long)fsize, sizeof(char), fh);
fclose(fh);
contents[fsize] = 0;
+ get_dt_info((uint32_t *)contents, info);
+ free(contents);
+}
+
+void test_qemu(void)
+{
struct dt_info info = {
.cpu_freq = 0,
.initrd_start = 0,
.initrd_end = 0,
};
- get_dt_info(contents, &info);
- free(contents);
+
+ dt_info_from("./test/testdata/qemu.dtb", &info);
assert(info.initrd_start == 0x84200000);
assert(info.initrd_end == 0x84200c00);
assert(info.cpu_freq == 0x989680);
+}
+
+void test_vf2(void)
+{
+ struct dt_info info = {
+ .cpu_freq = 0,
+ .initrd_start = 0,
+ .initrd_end = 0,
+ };
+
+ dt_info_from("./test/testdata/vf2.dtb", &info);
+
+ assert(info.initrd_start == 0x46100000);
+ assert(info.initrd_end == 0x47139ce3);
+ assert(info.cpu_freq == 0x3d0900);
+}
+
+int main(void)
+{
+ test_qemu();
+ test_vf2();
exit(0);
}
diff --git a/test/testdata/vf2.dtb b/test/testdata/vf2.dtb
new file mode 100644
index 0000000..9dbf194
--- /dev/null
+++ b/test/testdata/vf2.dtb
Binary files differ