ioport.h revision 81db31727ed27322c3f5e3bc40e71fe7fc54bf91
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
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
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsyncvoid cpu_outb(CPUState *env, pio_addr_t addr, uint8_t val);
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsyncvoid cpu_outw(CPUState *env, pio_addr_t addr, uint16_t val);
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsyncvoid cpu_outl(CPUState *env, pio_addr_t addr, uint32_t val);
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsyncuint8_t cpu_inb(CPUState *env, pio_addr_t addr);
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsyncuint16_t cpu_inw(CPUState *env, pio_addr_t addr);
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsyncuint32_t cpu_inl(CPUState *env, pio_addr_t addr);
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync#endif
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync
4c37c32b924cb13b821f9d2e01f42cabbd3d9cf9vboxsync#endif /* IOPORT_H */