Annotation of embedaddon/pciutils/lib/i386-io-sunos.h, revision 1.1.1.1
1.1 misho 1: /*
2: * The PCI Library -- Access to i386 I/O ports on Solaris
3: *
4: * Copyright (c) 2003 Bill Moore <billm@eng.sun.com>
5: * Copyright (c) 2003--2006 Martin Mares <mj@ucw.cz>
6: *
7: * Can be freely distributed and used under the terms of the GNU GPL.
8: */
9:
10: #include <sys/sysi86.h>
11: #include <sys/psw.h>
12:
13: static int
14: intel_setup_io(struct pci_access *a UNUSED)
15: {
16: return (sysi86(SI86V86, V86SC_IOPL, PS_IOPL) < 0) ? 0 : 1;
17: }
18:
19: static inline int
20: intel_cleanup_io(struct pci_access *a UNUSED)
21: {
22: /* FIXME: How to switch off I/O port access? */
23: return 1;
24: }
25:
26: static inline u8
27: inb (u16 port)
28: {
29: u8 v;
30: __asm__ __volatile__ ("inb (%w1)":"=a" (v):"Nd" (port));
31: return v;
32: }
33:
34: static inline u16
35: inw (u16 port)
36: {
37: u16 v;
38: __asm__ __volatile__ ("inw (%w1)":"=a" (v):"Nd" (port));
39: return v;
40: }
41:
42: static inline u32
43: inl (u16 port)
44: {
45: u32 v;
46: __asm__ __volatile__ ("inl (%w1)":"=a" (v):"Nd" (port));
47: return v;
48: }
49:
50: static inline void
51: outb (u8 value, u16 port)
52: {
53: __asm__ __volatile__ ("outb (%w1)": :"a" (value), "Nd" (port));
54: }
55:
56: static inline void
57: outw (u16 value, u16 port)
58: {
59: __asm__ __volatile__ ("outw (%w1)": :"a" (value), "Nd" (port));
60: }
61:
62: static inline void
63: outl (u32 value, u16 port)
64: {
65: __asm__ __volatile__ ("outl (%w1)": :"a" (value), "Nd" (port));
66: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>