qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

fw_cfg.h (1445B)


      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 
     18 typedef struct QFWCFG QFWCFG;
     19 
     20 struct 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 
     28 void qfw_cfg_select(QFWCFG *fw_cfg, uint16_t key);
     29 void qfw_cfg_read_data(QFWCFG *fw_cfg, void *data, size_t len);
     30 void qfw_cfg_get(QFWCFG *fw_cfg, uint16_t key, void *data, size_t len);
     31 uint16_t qfw_cfg_get_u16(QFWCFG *fw_cfg, uint16_t key);
     32 uint32_t qfw_cfg_get_u32(QFWCFG *fw_cfg, uint16_t key);
     33 uint64_t qfw_cfg_get_u64(QFWCFG *fw_cfg, uint16_t key);
     34 size_t qfw_cfg_get_file(QFWCFG *fw_cfg, const char *filename,
     35                         void *data, size_t buflen);
     36 
     37 QFWCFG *mm_fw_cfg_init(QTestState *qts, uint64_t base);
     38 void mm_fw_cfg_uninit(QFWCFG *fw_cfg);
     39 QFWCFG *io_fw_cfg_init(QTestState *qts, uint16_t base);
     40 void io_fw_cfg_uninit(QFWCFG *fw_cfg);
     41 
     42 static inline QFWCFG *pc_fw_cfg_init(QTestState *qts)
     43 {
     44     return io_fw_cfg_init(qts, 0x510);
     45 }
     46 
     47 static inline void pc_fw_cfg_uninit(QFWCFG *fw_cfg)
     48 {
     49     io_fw_cfg_uninit(fw_cfg);
     50 }
     51 
     52 G_DEFINE_AUTOPTR_CLEANUP_FUNC(QFWCFG, mm_fw_cfg_uninit)
     53 
     54 #endif