4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync/*
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync * defines ioport related functions
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync *
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync * Copyright (c) 2003 Fabrice Bellard
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync *
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync * This library is free software; you can redistribute it and/or
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync * modify it under the terms of the GNU Lesser General Public
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync * License as published by the Free Software Foundation; either
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync * version 2 of the License, or (at your option) any later version.
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync *
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync * This library is distributed in the hope that it will be useful,
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync * but WITHOUT ANY WARRANTY; without even the implied warranty of
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync * Lesser General Public License for more details.
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync *
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync * You should have received a copy of the GNU Lesser General Public
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync * License along with this library; if not, see <http://www.gnu.org/licenses/>.
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync */
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync
f8db050073c46a20de538fb22c33e22952ee7223vboxsync/*
f8db050073c46a20de538fb22c33e22952ee7223vboxsync * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
f8db050073c46a20de538fb22c33e22952ee7223vboxsync * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
f8db050073c46a20de538fb22c33e22952ee7223vboxsync * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
f8db050073c46a20de538fb22c33e22952ee7223vboxsync * a choice of LGPL license versions is made available with the language indicating
f8db050073c46a20de538fb22c33e22952ee7223vboxsync * that LGPLv2 or any later version may be used, or where a choice of which version
f8db050073c46a20de538fb22c33e22952ee7223vboxsync * of the LGPL is applied is otherwise unspecified.
f8db050073c46a20de538fb22c33e22952ee7223vboxsync */
f8db050073c46a20de538fb22c33e22952ee7223vboxsync
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync/**************************************************************************
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync * IO ports API
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync */
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync#ifndef IOPORT_H
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync#define IOPORT_H
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync#include "qemu-common.h"
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsynctypedef uint32_t pio_addr_t;
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync#define FMT_pioaddr PRIx32
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync#define MAX_IOPORTS (64 * 1024)
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync#define IOPORTS_MASK (MAX_IOPORTS - 1)
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync/* These should really be in isa.h, but are here to make pc.h happy. */
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsynctypedef void (IOPortWriteFunc)(void *opaque, uint32_t address, uint32_t data);
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsynctypedef uint32_t (IOPortReadFunc)(void *opaque, uint32_t address);
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsyncint register_ioport_read(pio_addr_t start, int length, int size,
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync IOPortReadFunc *func, void *opaque);
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsyncint register_ioport_write(pio_addr_t start, int length, int size,
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync IOPortWriteFunc *func, void *opaque);
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsyncvoid isa_unassign_ioport(pio_addr_t start, int length);
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync
81db31727ed27322c3f5e3bc40e71fe7fc54bf91vboxsync#ifndef VBOX
81db31727ed27322c3f5e3bc40e71fe7fc54bf91vboxsyncvoid cpu_outb(pio_addr_t addr, uint8_t val);
81db31727ed27322c3f5e3bc40e71fe7fc54bf91vboxsyncvoid cpu_outw(pio_addr_t addr, uint16_t val);
81db31727ed27322c3f5e3bc40e71fe7fc54bf91vboxsyncvoid cpu_outl(pio_addr_t addr, uint32_t val);
81db31727ed27322c3f5e3bc40e71fe7fc54bf91vboxsyncuint8_t cpu_inb(pio_addr_t addr);
81db31727ed27322c3f5e3bc40e71fe7fc54bf91vboxsyncuint16_t cpu_inw(pio_addr_t addr);
81db31727ed27322c3f5e3bc40e71fe7fc54bf91vboxsyncuint32_t cpu_inl(pio_addr_t addr);
81db31727ed27322c3f5e3bc40e71fe7fc54bf91vboxsync#else
cec22f4b94382f5ebee9d2f6b6df672689681e07vboxsyncvoid cpu_outb(CPUX86State *env, pio_addr_t addr, uint8_t val);
cec22f4b94382f5ebee9d2f6b6df672689681e07vboxsyncvoid cpu_outw(CPUX86State *env, pio_addr_t addr, uint16_t val);
cec22f4b94382f5ebee9d2f6b6df672689681e07vboxsyncvoid cpu_outl(CPUX86State *env, pio_addr_t addr, uint32_t val);
cec22f4b94382f5ebee9d2f6b6df672689681e07vboxsyncuint8_t cpu_inb(CPUX86State *env, pio_addr_t addr);
cec22f4b94382f5ebee9d2f6b6df672689681e07vboxsyncuint16_t cpu_inw(CPUX86State *env, pio_addr_t addr);
cec22f4b94382f5ebee9d2f6b6df672689681e07vboxsyncuint32_t cpu_inl(CPUX86State *env, pio_addr_t addr);
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync#endif
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync#endif /* IOPORT_H */