aboutsummaryrefslogtreecommitdiff
path: root/atags.h
diff options
context:
space:
mode:
authorvetch <vetch97@gmail.com>2020-01-02 17:54:31 +0100
committervetch <vetch97@gmail.com>2020-01-02 17:54:31 +0100
commitab7b754bb32022336527c1a2d5d710b95a589d0e (patch)
tree19f508f06c72efcbdd2cfad46949ed6f1ae45a3c /atags.h
parent5e1e6796109c892c4300c3da17c35e7874a40107 (diff)
parent6bf5a3b8c6e8a5d1cb3fb4880a5d9688ab094c62 (diff)
downloadrpi-MMU-example-ab7b754bb32022336527c1a2d5d710b95a589d0e.tar.gz
rpi-MMU-example-ab7b754bb32022336527c1a2d5d710b95a589d0e.zip
Merge branch 'bob' of https://repo.or.cz/RPi-MMU-example into alice
# Conflicts: # .gitignore # PL0_test.ld # demo_functionality.c # interrupt_vector.S # interrupts.c # kernel.c # memory.h
Diffstat (limited to 'atags.h')
-rw-r--r--atags.h102
1 files changed, 102 insertions, 0 deletions
diff --git a/atags.h b/atags.h
new file mode 100644
index 0000000..4b6879f
--- /dev/null
+++ b/atags.h
@@ -0,0 +1,102 @@
+#ifndef ATAGS_H
+#define ATAGS_H
+
+#include <stdint.h>
+
+#define ATAG_NONE 0x00000000
+#define ATAG_CORE 0x54410001
+#define ATAG_MEM 0x54410002
+#define ATAG_VIDEOTEXT 0x54410003
+#define ATAG_RAMDISK 0x54410004
+#define ATAG_INITRD2 0x54420005
+#define ATAG_SERIAL 0x54410006
+#define ATAG_REVISION 0x54410007
+#define ATAG_VIDEOLFB 0x54410008
+#define ATAG_CMDLINE 0x54410009
+
+struct atag_header
+{
+ uint32_t size;
+ uint32_t tag;
+};
+
+struct atag_core
+{
+ uint32_t flags;
+ uint32_t pagesize;
+ uint32_t rootdev;
+};
+
+struct atag_mem
+{
+ uint32_t size;
+ uint32_t start;
+};
+
+struct atag_videotext
+{
+ uint8_t x;
+ uint8_t y;
+ uint16_t video_page;
+ uint8_t video_mode;
+ uint8_t video_cols;
+ uint16_t video_ega_bx;
+ uint8_t video_lines;
+ uint8_t video_isvga;
+ uint16_t video_points;
+};
+
+struct atag_ramdisk
+{
+ uint32_t flags;
+ uint32_t size;
+ uint32_t start;
+};
+
+struct atag_initrd2
+{
+ uint32_t start;
+ uint32_t size;
+};
+
+struct atag_serialnr
+{
+ uint32_t low;
+ uint32_t high;
+};
+
+struct atag_revision
+{
+ uint32_t rev;
+};
+
+struct atag_videolfb
+{
+ uint16_t lfb_width;
+ uint16_t lfb_height;
+ uint16_t lfb_depth;
+ uint16_t lfb_linelength;
+ uint32_t lfb_base;
+ uint32_t lfb_size;
+ uint8_t red_size;
+ uint8_t red_pos;
+ uint8_t green_size;
+ uint8_t green_pos;
+ uint8_t blue_size;
+ uint8_t blue_pos;
+ uint8_t rsvd_size;
+ uint8_t rsvd_pos;
+};
+
+struct atag_cmdline
+{
+ char cmdline[1];
+};
+
+uint32_t find_memory_size(struct atag_header *atags);
+
+void print_tag(struct atag_header *tag);
+
+void print_atags(struct atag_header *atags);
+
+#endif // ATAGS_H