blob: 1553e54aa740dce645aeeef49f4892a0e3a060cd [file] [log] [blame]
pbrook87ecb682007-11-17 17:14:51 +00001/* Declarations for use by hardware emulation. */
2#ifndef QEMU_HW_H
3#define QEMU_HW_H
4
5#include "qemu-common.h"
Paul Brook1ad21342009-05-19 16:17:58 +01006
Avi Kivity4be403c2012-10-04 12:36:04 +02007#if !defined(CONFIG_USER_ONLY) && !defined(NEED_CPU_H)
Paolo Bonzini022c62c2012-12-17 18:19:49 +01008#include "exec/cpu-common.h"
Paul Brook1ad21342009-05-19 16:17:58 +01009#endif
10
Paolo Bonzini022c62c2012-12-17 18:19:49 +010011#include "exec/ioport.h"
Paolo Bonzini83c9f4c2013-02-04 15:40:22 +010012#include "hw/irq.h"
Paolo Bonzini737e1502012-12-17 18:19:44 +010013#include "block/aio.h"
Paolo Bonzinicaf71f82012-12-17 18:19:50 +010014#include "migration/qemu-file.h"
15#include "migration/vmstate.h"
Paolo Bonzini1de7afc2012-12-17 18:20:00 +010016#include "qemu/log.h"
blueswir1b6c4f712008-10-02 19:14:17 +000017
pbrook87ecb682007-11-17 17:14:51 +000018#ifdef NEED_CPU_H
19#if TARGET_LONG_BITS == 64
20#define qemu_put_betl qemu_put_be64
21#define qemu_get_betl qemu_get_be64
22#define qemu_put_betls qemu_put_be64s
23#define qemu_get_betls qemu_get_be64s
blueswir1b6c4f712008-10-02 19:14:17 +000024#define qemu_put_sbetl qemu_put_sbe64
25#define qemu_get_sbetl qemu_get_sbe64
26#define qemu_put_sbetls qemu_put_sbe64s
27#define qemu_get_sbetls qemu_get_sbe64s
pbrook87ecb682007-11-17 17:14:51 +000028#else
29#define qemu_put_betl qemu_put_be32
30#define qemu_get_betl qemu_get_be32
31#define qemu_put_betls qemu_put_be32s
32#define qemu_get_betls qemu_get_be32s
blueswir1b6c4f712008-10-02 19:14:17 +000033#define qemu_put_sbetl qemu_put_sbe32
34#define qemu_get_sbetl qemu_get_sbe32
35#define qemu_put_sbetls qemu_put_sbe32s
36#define qemu_get_sbetls qemu_get_sbe32s
pbrook87ecb682007-11-17 17:14:51 +000037#endif
38#endif
39
pbrook87ecb682007-11-17 17:14:51 +000040typedef void QEMUResetHandler(void *opaque);
41
Jan Kiszkaa08d4362009-06-27 09:25:07 +020042void qemu_register_reset(QEMUResetHandler *func, void *opaque);
Jan Kiszkadda9b292009-07-02 00:19:02 +020043void qemu_unregister_reset(QEMUResetHandler *func, void *opaque);
pbrook87ecb682007-11-17 17:14:51 +000044
Jan Kiszka76e30d02009-07-02 00:19:02 +020045/* handler to set the boot_device order for a specific type of QEMUMachine */
aurel320ecdffb2008-05-04 20:11:34 +000046/* return 0 if success */
Jan Kiszka76e30d02009-07-02 00:19:02 +020047typedef int QEMUBootSetHandler(void *opaque, const char *boot_devices);
blueswir13b4366d2008-06-20 16:25:06 +000048void qemu_register_boot_set(QEMUBootSetHandler *func, void *opaque);
Jan Kiszka76e30d02009-07-02 00:19:02 +020049int qemu_boot_set(const char *boot_devices);
aurel320ecdffb2008-05-04 20:11:34 +000050
Juan Quintelaf89a8e42009-09-29 22:49:00 +020051#ifdef NEED_CPU_H
52#if TARGET_LONG_BITS == 64
53#define VMSTATE_UINTTL_V(_f, _s, _v) \
54 VMSTATE_UINT64_V(_f, _s, _v)
55#define VMSTATE_UINTTL_ARRAY_V(_f, _s, _n, _v) \
56 VMSTATE_UINT64_ARRAY_V(_f, _s, _n, _v)
57#else
58#define VMSTATE_UINTTL_V(_f, _s, _v) \
59 VMSTATE_UINT32_V(_f, _s, _v)
60#define VMSTATE_UINTTL_ARRAY_V(_f, _s, _n, _v) \
61 VMSTATE_UINT32_ARRAY_V(_f, _s, _n, _v)
62#endif
63#define VMSTATE_UINTTL(_f, _s) \
64 VMSTATE_UINTTL_V(_f, _s, 0)
65#define VMSTATE_UINTTL_ARRAY(_f, _s, _n) \
66 VMSTATE_UINTTL_ARRAY_V(_f, _s, _n, 0)
67
68#endif
69
pbrook87ecb682007-11-17 17:14:51 +000070#endif