bootparam.h (1423B)
1#ifndef HW_XTENSA_BOOTPARAM_H 2#define HW_XTENSA_BOOTPARAM_H 3 4#define BP_TAG_COMMAND_LINE 0x1001 /* command line (0-terminated string)*/ 5#define BP_TAG_INITRD 0x1002 /* ramdisk addr and size (bp_meminfo) */ 6#define BP_TAG_MEMORY 0x1003 /* memory addr and size (bp_meminfo) */ 7#define BP_TAG_SERIAL_BAUDRATE 0x1004 /* baud rate of current console. */ 8#define BP_TAG_SERIAL_PORT 0x1005 /* serial device of current console */ 9#define BP_TAG_FDT 0x1006 /* flat device tree addr */ 10 11#define BP_TAG_FIRST 0x7B0B /* first tag with a version number */ 12#define BP_TAG_LAST 0x7E0B /* last tag */ 13 14typedef struct BpTag { 15 uint16_t tag; 16 uint16_t size; 17} BpTag; 18 19typedef struct BpMemInfo { 20 uint32_t type; 21 uint32_t start; 22 uint32_t end; 23} BpMemInfo; 24 25#define MEMORY_TYPE_CONVENTIONAL 0x1000 26#define MEMORY_TYPE_NONE 0x2000 27 28static inline size_t get_tag_size(size_t data_size) 29{ 30 return data_size + sizeof(BpTag) + 4; 31} 32 33static inline ram_addr_t put_tag(ram_addr_t addr, uint16_t tag, 34 size_t size, const void *data) 35{ 36 BpTag bp_tag = { 37 .tag = tswap16(tag), 38 .size = tswap16((size + 3) & ~3), 39 }; 40 41 cpu_physical_memory_write(addr, &bp_tag, sizeof(bp_tag)); 42 addr += sizeof(bp_tag); 43 cpu_physical_memory_write(addr, data, size); 44 addr += (size + 3) & ~3; 45 46 return addr; 47} 48 49#endif