qemu/hw/xtensa/bootparam.h
<<
>>
Prefs
   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
  50