]> git.saurik.com Git - apple/xnu.git/blob - pexpert/pexpert/i386/protos.h
f7d0b06e68c6f0faf826d83d06f27f1a590d41a9
[apple/xnu.git] / pexpert / pexpert / i386 / protos.h
1 /*
2 * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_OSREFERENCE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. The rights granted to you under the
10 * License may not be used to create, or enable the creation or
11 * redistribution of, unlawful or unlicensed copies of an Apple operating
12 * system, or to circumvent, violate, or enable the circumvention or
13 * violation of, any terms of an Apple operating system software license
14 * agreement.
15 *
16 * Please obtain a copy of the License at
17 * http://www.opensource.apple.com/apsl/ and read it before using this
18 * file.
19 *
20 * The Original Code and all software distributed under the License are
21 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
22 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
23 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
24 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
25 * Please see the License for the specific language governing rights and
26 * limitations under the License.
27 *
28 * @APPLE_LICENSE_OSREFERENCE_HEADER_END@
29 */
30 #ifndef _PEXPERT_I386_PROTOS_H
31 #define _PEXPERT_I386_PROTOS_H
32
33 //------------------------------------------------------------------------
34 // x86 IN/OUT I/O inline functions.
35 //
36 // IN : inb, inw, inl
37 // IN(port)
38 //
39 // OUT: outb, outw, outl
40 // OUT(port, data)
41
42 typedef unsigned short i386_ioport_t;
43
44 #define __IN(s, u) \
45 static __inline__ unsigned u \
46 in##s(i386_ioport_t port) \
47 { \
48 unsigned u data; \
49 asm volatile ( \
50 "in" #s " %1,%0" \
51 : "=a" (data) \
52 : "d" (port)); \
53 return (data); \
54 }
55
56 #define __OUT(s, u) \
57 static __inline__ void \
58 out##s(i386_ioport_t port, unsigned u data) \
59 { \
60 asm volatile ( \
61 "out" #s " %1,%0" \
62 : \
63 : "d" (port), "a" (data)); \
64 }
65
66 __IN(b, char)
67 __IN(w, short)
68 __IN(l, long)
69
70 __OUT(b, char)
71 __OUT(w, short)
72 __OUT(l, long)
73
74 extern void cninit(void);
75 extern int sprintf(char * str, const char * format, ...);
76
77 //------------------------------------------------------------------------
78 // from osfmk/console/panic_dialog.c
79 extern void panic_ui_initialize(const unsigned char * clut);
80
81 //------------------------------------------------------------------------
82 // from osfmk/i386/AT386/video_console.c
83
84 extern void vc_progress_initialize( void * desc,
85 const unsigned char * data,
86 const unsigned char * clut );
87
88 extern void vc_display_icon( void * desc, const unsigned char * data );
89
90 #endif /* _PEXPERT_I386_PROTOS_H */