/* Copyright (C) 2012, Aaron Lindsay This file is part of Aedrix. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #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_core { uint32 flags; /* bit 0 = read-only */ uint32 pagesize; /* systems page size (usually 4k) */ uint32 rootdev; /* root device number */ }; struct atag_mem { uint32 size; /* size of the area */ uint32 start; /* physical start address */ }; struct atag { uint32 size; /* Size of tag in words (includes entire struct) */ uint32 tag; union { struct atag_core core; struct atag_mem mem; // struct atag_videotext videotext; // struct atag_ramdisk ramdisk; // struct atag_initrd2 initrd2; // struct atag_serialnr serialnr; // struct atag_revision revision; // struct atag_videolfb videolfb; // struct atag_cmdline cmdline; } data; }; #define atags_first_mem_region(atag) _atags_mem_region(atag, 1) #define atags_next_mem_region(atag) _atags_mem_region(atag, 0) int _atags_mem_region(struct atag **mem_header, int initialize); #endif /* ATAGS_H */