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

fw_cfg.h (1442B)


      1/*
      2 * libqos fw_cfg support
      3 *
      4 * Copyright IBM, Corp. 2012-2013
      5 *
      6 * Authors:
      7 *  Anthony Liguori   <aliguori@us.ibm.com>
      8 *
      9 * This work is licensed under the terms of the GNU GPL, version 2 or later.
     10 * See the COPYING file in the top-level directory.
     11 */
     12
     13#ifndef LIBQOS_FW_CFG_H
     14#define LIBQOS_FW_CFG_H
     15
     16#include "libqtest.h"
     17
     18typedef struct QFWCFG QFWCFG;
     19
     20struct QFWCFG
     21{
     22    uint64_t base;
     23    QTestState *qts;
     24    void (*select)(QFWCFG *fw_cfg, uint16_t key);
     25    void (*read)(QFWCFG *fw_cfg, void *data, size_t len);
     26};
     27
     28void qfw_cfg_select(QFWCFG *fw_cfg, uint16_t key);
     29void qfw_cfg_read_data(QFWCFG *fw_cfg, void *data, size_t len);
     30void qfw_cfg_get(QFWCFG *fw_cfg, uint16_t key, void *data, size_t len);
     31uint16_t qfw_cfg_get_u16(QFWCFG *fw_cfg, uint16_t key);
     32uint32_t qfw_cfg_get_u32(QFWCFG *fw_cfg, uint16_t key);
     33uint64_t qfw_cfg_get_u64(QFWCFG *fw_cfg, uint16_t key);
     34size_t qfw_cfg_get_file(QFWCFG *fw_cfg, const char *filename,
     35                        void *data, size_t buflen);
     36
     37QFWCFG *mm_fw_cfg_init(QTestState *qts, uint64_t base);
     38void mm_fw_cfg_uninit(QFWCFG *fw_cfg);
     39QFWCFG *io_fw_cfg_init(QTestState *qts, uint16_t base);
     40void io_fw_cfg_uninit(QFWCFG *fw_cfg);
     41
     42static inline QFWCFG *pc_fw_cfg_init(QTestState *qts)
     43{
     44    return io_fw_cfg_init(qts, 0x510);
     45}
     46
     47static inline void pc_fw_cfg_uninit(QFWCFG *fw_cfg)
     48{
     49    io_fw_cfg_uninit(fw_cfg);
     50}
     51
     52G_DEFINE_AUTOPTR_CLEANUP_FUNC(QFWCFG, mm_fw_cfg_uninit)
     53
     54#endif