18b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Declarations for use by hardware emulation.  */
28b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef QEMU_HW_H
38b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define QEMU_HW_H
48b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
58b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "qemu-common.h"
68b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "irq.h"
7462564f31bbdc9939bf1d2376e2782defa7ef655David 'Digit' Turner
8462564f31bbdc9939bf1d2376e2782defa7ef655David 'Digit' Turner#if defined(TARGET_PHYS_ADDRESS_SPACE_BITS) && !defined(NEED_CPU_H)
98b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "cpu.h"
10462564f31bbdc9939bf1d2376e2782defa7ef655David 'Digit' Turner#endif
118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* VM Load/Save */
138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* This function writes a chunk of data to a file at the given position.
155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * The pos argument can be ignored if the file is only being used for
165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * streaming.  The handler should try to write all of the data it can.
175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner */
185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnertypedef int (QEMUFilePutBufferFunc)(void *opaque, const uint8_t *buf,
195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner                                    int64_t pos, int size);
205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Read a chunk of data from a file at the given position.  The pos argument
225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * can be ignored if the file is only be used for streaming.  The number of
235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * bytes actually read should be returned.
245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner */
255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnertypedef int (QEMUFileGetBufferFunc)(void *opaque, uint8_t *buf,
265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner                                    int64_t pos, int size);
275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Close a file and return an error code */
295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnertypedef int (QEMUFileCloseFunc)(void *opaque);
305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Called to determine if the file has exceeded it's bandwidth allocation.  The
325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * bandwidth capping is a soft limit, not a hard limit.
335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner */
345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnertypedef int (QEMUFileRateLimit)(void *opaque);
355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Called to change the current bandwidth allocation. This function must return
375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * the new actual bandwidth. It should be new_rate if everything goes ok, and
385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * the old rate otherwise
395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner */
40986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turnertypedef int64_t (QEMUFileSetRateLimit)(void *opaque, int64_t new_rate);
41986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turnertypedef int64_t (QEMUFileGetRateLimit)(void *opaque);
425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' TurnerQEMUFile *qemu_fopen_ops(void *opaque, QEMUFilePutBufferFunc *put_buffer,
445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner                         QEMUFileGetBufferFunc *get_buffer,
455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner                         QEMUFileCloseFunc *close,
465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner                         QEMUFileRateLimit *rate_limit,
47a12820ef4aff2e2f6d3db9b704abee2c54d08f40David Turner                         QEMUFileSetRateLimit *set_rate_limit,
48a12820ef4aff2e2f6d3db9b704abee2c54d08f40David Turner			 QEMUFileGetRateLimit *get_rate_limit);
498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectQEMUFile *qemu_fopen(const char *filename, const char *mode);
50986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' TurnerQEMUFile *qemu_fdopen(int fd, const char *mode);
515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' TurnerQEMUFile *qemu_fopen_socket(int fd);
525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' TurnerQEMUFile *qemu_popen(FILE *popen_file, const char *mode);
535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' TurnerQEMUFile *qemu_popen_cmd(const char *command, const char *mode);
54986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turnerint qemu_stdio_fd(QEMUFile *f);
558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid qemu_fflush(QEMUFile *f);
565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerint qemu_fclose(QEMUFile *f);
578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid qemu_put_buffer(QEMUFile *f, const uint8_t *buf, int size);
588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid qemu_put_byte(QEMUFile *f, int v);
595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic inline void qemu_put_ubyte(QEMUFile *f, unsigned int v)
615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{
625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    qemu_put_byte(f, (int)v);
635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner}
645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define qemu_put_sbyte qemu_put_byte
665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid qemu_put_be16(QEMUFile *f, unsigned int v);
688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid qemu_put_be32(QEMUFile *f, unsigned int v);
698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid qemu_put_be64(QEMUFile *f, uint64_t v);
70280afa072a7b829e581d884c2b3276530a6014b7David 'Digit' Turner#ifdef CONFIG_ANDROID
71871da2aa80687142bec00ef7c1112253c76c32bbOt ten Thijevoid qemu_put_float(QEMUFile *f, float v);
72280afa072a7b829e581d884c2b3276530a6014b7David 'Digit' Turner#endif
738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectint qemu_get_buffer(QEMUFile *f, uint8_t *buf, int size);
748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectint qemu_get_byte(QEMUFile *f);
755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic inline unsigned int qemu_get_ubyte(QEMUFile *f)
775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{
785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    return (unsigned int)qemu_get_byte(f);
795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner}
805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define qemu_get_sbyte qemu_get_byte
825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectunsigned int qemu_get_be16(QEMUFile *f);
848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectunsigned int qemu_get_be32(QEMUFile *f);
858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectuint64_t qemu_get_be64(QEMUFile *f);
86280afa072a7b829e581d884c2b3276530a6014b7David 'Digit' Turner#ifdef CONFIG_ANDROID
87871da2aa80687142bec00ef7c1112253c76c32bbOt ten Thijefloat qemu_get_float(QEMUFile *f);
88280afa072a7b829e581d884c2b3276530a6014b7David 'Digit' Turner#endif
895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerint qemu_file_rate_limit(QEMUFile *f);
90986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turnerint64_t qemu_file_set_rate_limit(QEMUFile *f, int64_t new_rate);
91986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turnerint64_t qemu_file_get_rate_limit(QEMUFile *f);
925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerint qemu_file_has_error(QEMUFile *f);
935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid qemu_file_set_error(QEMUFile *f);
945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Try to send any outstanding data.  This function is useful when output is
965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * halted due to rate limiting or EAGAIN errors occur as it can be used to
975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * resume output. */
985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid qemu_file_put_notify(QEMUFile *f);
998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void qemu_put_be64s(QEMUFile *f, const uint64_t *pv)
1018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
1028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    qemu_put_be64(f, *pv);
1038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
1048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void qemu_put_be32s(QEMUFile *f, const uint32_t *pv)
1068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
1078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    qemu_put_be32(f, *pv);
1088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
1098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void qemu_put_be16s(QEMUFile *f, const uint16_t *pv)
1118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
1128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    qemu_put_be16(f, *pv);
1138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
1148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void qemu_put_8s(QEMUFile *f, const uint8_t *pv)
1168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
1178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    qemu_put_byte(f, *pv);
1188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
1198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void qemu_get_be64s(QEMUFile *f, uint64_t *pv)
1218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
1228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    *pv = qemu_get_be64(f);
1238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
1248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void qemu_get_be32s(QEMUFile *f, uint32_t *pv)
1268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
1278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    *pv = qemu_get_be32(f);
1288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
1298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void qemu_get_be16s(QEMUFile *f, uint16_t *pv)
1318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
1328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    *pv = qemu_get_be16(f);
1338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
1348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void qemu_get_8s(QEMUFile *f, uint8_t *pv)
1368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
1378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    *pv = qemu_get_byte(f);
1388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
1398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner// Signed versions for type safety
1415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic inline void qemu_put_sbuffer(QEMUFile *f, const int8_t *buf, int size)
1425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{
1435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    qemu_put_buffer(f, (const uint8_t *)buf, size);
1445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner}
1455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic inline void qemu_put_sbe16(QEMUFile *f, int v)
1475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{
1485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    qemu_put_be16(f, (unsigned int)v);
1495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner}
1505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic inline void qemu_put_sbe32(QEMUFile *f, int v)
1525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{
1535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    qemu_put_be32(f, (unsigned int)v);
1545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner}
1555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic inline void qemu_put_sbe64(QEMUFile *f, int64_t v)
1575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{
1585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    qemu_put_be64(f, (uint64_t)v);
1595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner}
1605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic inline size_t qemu_get_sbuffer(QEMUFile *f, int8_t *buf, int size)
1625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{
1635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    return qemu_get_buffer(f, (uint8_t *)buf, size);
1645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner}
1655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic inline int qemu_get_sbe16(QEMUFile *f)
1675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{
1685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    return (int)qemu_get_be16(f);
1695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner}
1705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic inline int qemu_get_sbe32(QEMUFile *f)
1725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{
1735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    return (int)qemu_get_be32(f);
1745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner}
1755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic inline int64_t qemu_get_sbe64(QEMUFile *f)
1775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{
1785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    return (int64_t)qemu_get_be64(f);
1795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner}
1805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic inline void qemu_put_s8s(QEMUFile *f, const int8_t *pv)
1825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{
1835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    qemu_put_8s(f, (const uint8_t *)pv);
1845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner}
1855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic inline void qemu_put_sbe16s(QEMUFile *f, const int16_t *pv)
1875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{
1885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    qemu_put_be16s(f, (const uint16_t *)pv);
1895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner}
1905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic inline void qemu_put_sbe32s(QEMUFile *f, const int32_t *pv)
1925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{
1935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    qemu_put_be32s(f, (const uint32_t *)pv);
1945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner}
1955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic inline void qemu_put_sbe64s(QEMUFile *f, const int64_t *pv)
1975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{
1985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    qemu_put_be64s(f, (const uint64_t *)pv);
1995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner}
2005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
2015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic inline void qemu_get_s8s(QEMUFile *f, int8_t *pv)
2025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{
2035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    qemu_get_8s(f, (uint8_t *)pv);
2045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner}
2055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
2065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic inline void qemu_get_sbe16s(QEMUFile *f, int16_t *pv)
2075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{
2085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    qemu_get_be16s(f, (uint16_t *)pv);
2095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner}
2105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
2115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic inline void qemu_get_sbe32s(QEMUFile *f, int32_t *pv)
2125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{
2135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    qemu_get_be32s(f, (uint32_t *)pv);
2145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner}
2155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
2165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic inline void qemu_get_sbe64s(QEMUFile *f, int64_t *pv)
2175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{
2185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    qemu_get_be64s(f, (uint64_t *)pv);
2195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner}
2205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
2213e92c2d49cb0e8752ce8c9a3c879c84ac3299061David 'Digit' Turner#ifdef CONFIG_ANDROID
2223e92c2d49cb0e8752ce8c9a3c879c84ac3299061David 'Digit' Turnervoid qemu_put_string(QEMUFile *f, const char* str);
2233e92c2d49cb0e8752ce8c9a3c879c84ac3299061David 'Digit' Turnerchar* qemu_get_string(QEMUFile *f);
2243e92c2d49cb0e8752ce8c9a3c879c84ac3299061David 'Digit' Turner#endif
2253e92c2d49cb0e8752ce8c9a3c879c84ac3299061David 'Digit' Turner
2268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef NEED_CPU_H
2278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if TARGET_LONG_BITS == 64
2288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define qemu_put_betl qemu_put_be64
2298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define qemu_get_betl qemu_get_be64
2308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define qemu_put_betls qemu_put_be64s
2318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define qemu_get_betls qemu_get_be64s
2325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define qemu_put_sbetl qemu_put_sbe64
2335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define qemu_get_sbetl qemu_get_sbe64
2345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define qemu_put_sbetls qemu_put_sbe64s
2355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define qemu_get_sbetls qemu_get_sbe64s
2368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else
2378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define qemu_put_betl qemu_put_be32
2388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define qemu_get_betl qemu_get_be32
2398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define qemu_put_betls qemu_put_be32s
2408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define qemu_get_betls qemu_get_be32s
2415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define qemu_put_sbetl qemu_put_sbe32
2425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define qemu_get_sbetl qemu_get_sbe32
2435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define qemu_put_sbetls qemu_put_sbe32s
2445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define qemu_get_sbetls qemu_get_sbe32s
2458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
2468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
2478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectint64_t qemu_ftell(QEMUFile *f);
2498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectint64_t qemu_fseek(QEMUFile *f, int64_t pos, int whence);
2508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef void SaveStateHandler(QEMUFile *f, void *opaque);
2525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnertypedef int SaveLiveStateHandler(QEMUFile *f, int stage, void *opaque);
2538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef int LoadStateHandler(QEMUFile *f, void *opaque, int version_id);
2548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectint register_savevm(const char *idstr,
2568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                    int instance_id,
2578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                    int version_id,
2588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                    SaveStateHandler *save_state,
2598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                    LoadStateHandler *load_state,
2608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                    void *opaque);
2618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerint register_savevm_live(const char *idstr,
2635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner                         int instance_id,
2645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner                         int version_id,
2655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner                         SaveLiveStateHandler *save_live_state,
2665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner                         SaveStateHandler *save_state,
2675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner                         LoadStateHandler *load_state,
2685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner                         void *opaque);
2695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
2705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid unregister_savevm(const char *idstr, void *opaque);
2715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
2728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef void QEMUResetHandler(void *opaque);
2738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid qemu_register_reset(QEMUResetHandler *func, int order, void *opaque);
2758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* handler to set the boot_device for a specific type of QEMUMachine */
2778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* return 0 if success */
2785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnertypedef int QEMUBootSetHandler(void *opaque, const char *boot_device);
2795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid qemu_register_boot_set(QEMUBootSetHandler *func, void *opaque);
2808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
282