diff options
author | Anthony Liguori <aliguori@us.ibm.com> | 2013-04-16 09:45:17 -0500 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2013-04-17 10:26:05 -0500 |
commit | 234c69c5f92f18d7692e859d2784edb17a88873f (patch) | |
tree | 3e2bb985360aeabec7893d3e0e32a976f3f2880c /tests/libqos/fw_cfg-pc.c | |
parent | c4efe1cada311b9dc0df5beb71c4227ff3414aa1 (diff) | |
download | hqemu-234c69c5f92f18d7692e859d2784edb17a88873f.zip hqemu-234c69c5f92f18d7692e859d2784edb17a88873f.tar.gz |
libqos: add fw_cfg support
fw_cfg is needed to get the top of memory which is necessary for
doing PCI allocation and allocating RAM for DMA.
Add a PC version of fw_cfg and enough abstraction to support other
platforms.
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Message-id: 1366123521-4330-4-git-send-email-aliguori@us.ibm.com
Diffstat (limited to 'tests/libqos/fw_cfg-pc.c')
-rw-r--r-- | tests/libqos/fw_cfg-pc.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/libqos/fw_cfg-pc.c b/tests/libqos/fw_cfg-pc.c new file mode 100644 index 0000000..613604d --- /dev/null +++ b/tests/libqos/fw_cfg-pc.c @@ -0,0 +1,40 @@ +/* + * libqos fw_cfg support for PC + * + * Copyright IBM, Corp. 2012-2013 + * + * Authors: + * Anthony Liguori <aliguori@us.ibm.com> + * + * This work is licensed under the terms of the GNU GPL, version 2 or later. + * See the COPYING file in the top-level directory. + */ + +#include "libqos/fw_cfg-pc.h" +#include "libqtest.h" +#include <glib.h> + +static void pc_fw_cfg_select(QFWCFG *fw_cfg, uint16_t key) +{ + outw(0x510, key); +} + +static void pc_fw_cfg_read(QFWCFG *fw_cfg, void *data, size_t len) +{ + uint8_t *ptr = data; + int i; + + for (i = 0; i < len; i++) { + ptr[i] = inb(0x511); + } +} + +QFWCFG *pc_fw_cfg_init(void) +{ + QFWCFG *fw_cfg = g_malloc0(sizeof(*fw_cfg)); + + fw_cfg->select = pc_fw_cfg_select; + fw_cfg->read = pc_fw_cfg_read; + + return fw_cfg; +} |