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