#ifndef ATAGS_H #define ATAGS_H #include #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