cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

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