xref: /openbmc/qemu/hw/xtensa/bootparam.h (revision 62dbaede)
1 #ifndef HW_XTENSA_BOOTPARAM
2 #define HW_XTENSA_BOOTPARAM
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 
14 typedef struct BpTag {
15     uint16_t tag;
16     uint16_t size;
17 } BpTag;
18 
19 static inline ram_addr_t put_tag(ram_addr_t addr, uint16_t tag,
20         size_t size, const void *data)
21 {
22     BpTag bp_tag = {
23         .tag = tswap16(tag),
24         .size = tswap16((size + 3) & ~3),
25     };
26 
27     cpu_physical_memory_write(addr, &bp_tag, sizeof(bp_tag));
28     addr += sizeof(bp_tag);
29     cpu_physical_memory_write(addr, data, size);
30     addr += (size + 3) & ~3;
31 
32     return addr;
33 }
34 
35 #endif
36