xref: /freebsd/sys/amd64/vmm/io/vatpic.h (revision 95ee2897e98f5d444f26ed2334cc7c439f9c16c6)
1762fd208STycho Nightingale /*-
2762fd208STycho Nightingale  * Copyright (c) 2014 Tycho Nightingale <tycho.nightingale@pluribusnetworks.com>
3762fd208STycho Nightingale  * All rights reserved.
4762fd208STycho Nightingale  *
5762fd208STycho Nightingale  * Redistribution and use in source and binary forms, with or without
6762fd208STycho Nightingale  * modification, are permitted provided that the following conditions
7762fd208STycho Nightingale  * are met:
8762fd208STycho Nightingale  * 1. Redistributions of source code must retain the above copyright
9762fd208STycho Nightingale  *    notice, this list of conditions and the following disclaimer.
10762fd208STycho Nightingale  * 2. Redistributions in binary form must reproduce the above copyright
11762fd208STycho Nightingale  *    notice, this list of conditions and the following disclaimer in the
12762fd208STycho Nightingale  *    documentation and/or other materials provided with the distribution.
13762fd208STycho Nightingale  *
14762fd208STycho Nightingale  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND
15762fd208STycho Nightingale  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16762fd208STycho Nightingale  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17762fd208STycho Nightingale  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18762fd208STycho Nightingale  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19762fd208STycho Nightingale  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20762fd208STycho Nightingale  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21762fd208STycho Nightingale  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22762fd208STycho Nightingale  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23762fd208STycho Nightingale  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24762fd208STycho Nightingale  * SUCH DAMAGE.
25762fd208STycho Nightingale  */
26762fd208STycho Nightingale 
27762fd208STycho Nightingale #ifndef _VATPIC_H_
28762fd208STycho Nightingale #define	_VATPIC_H_
29762fd208STycho Nightingale 
30762fd208STycho Nightingale #include <isa/isareg.h>
31762fd208STycho Nightingale 
32762fd208STycho Nightingale #define	ICU_IMR_OFFSET	1
33762fd208STycho Nightingale 
34762fd208STycho Nightingale #define	IO_ELCR1	0x4d0
35762fd208STycho Nightingale #define	IO_ELCR2	0x4d1
36762fd208STycho Nightingale 
37483d953aSJohn Baldwin struct vm_snapshot_meta;
38483d953aSJohn Baldwin 
39762fd208STycho Nightingale struct vatpic *vatpic_init(struct vm *vm);
40762fd208STycho Nightingale void vatpic_cleanup(struct vatpic *vatpic);
41762fd208STycho Nightingale 
42*9388bc1eSJohn Baldwin int vatpic_master_handler(struct vm *vm, bool in, int port, int bytes,
43*9388bc1eSJohn Baldwin     uint32_t *eax);
44*9388bc1eSJohn Baldwin int vatpic_slave_handler(struct vm *vm, bool in, int port, int bytes,
45*9388bc1eSJohn Baldwin     uint32_t *eax);
46*9388bc1eSJohn Baldwin int vatpic_elc_handler(struct vm *vm, bool in, int port, int bytes,
47d6aa08c3STycho Nightingale     uint32_t *eax);
48762fd208STycho Nightingale 
49762fd208STycho Nightingale int vatpic_assert_irq(struct vm *vm, int irq);
50762fd208STycho Nightingale int vatpic_deassert_irq(struct vm *vm, int irq);
51762fd208STycho Nightingale int vatpic_pulse_irq(struct vm *vm, int irq);
52b3e9732aSJohn Baldwin int vatpic_set_irq_trigger(struct vm *vm, int irq, enum vm_intr_trigger trigger);
53762fd208STycho Nightingale 
540775fbb4STycho Nightingale void vatpic_pending_intr(struct vm *vm, int *vecptr);
55762fd208STycho Nightingale void vatpic_intr_accepted(struct vm *vm, int vector);
56762fd208STycho Nightingale 
57483d953aSJohn Baldwin #ifdef BHYVE_SNAPSHOT
58483d953aSJohn Baldwin int vatpic_snapshot(struct vatpic *vatpic, struct vm_snapshot_meta *meta);
59483d953aSJohn Baldwin #endif
60483d953aSJohn Baldwin 
61762fd208STycho Nightingale #endif	/* _VATPIC_H_ */
62