1 /*-
2 * Copyright (c) 1996, by Steve Passe
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. The name of the developer may NOT be used to endorse or promote products
11 * derived from this software without specific prior written permission.
12 *
13 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23 * SUCH DAMAGE.
24 *
25 * $FreeBSD$
26 */
27
28 #ifndef _MACHINE_SMPTESTS_H_
29 #define _MACHINE_SMPTESTS_H_
30
31
32 /*
33 * Various 'tests in progress' and configuration parameters.
34 */
35
36 /*
37 * Send CPUSTOP IPI for stop/restart of other CPUs on DDB break.
38 #define VERBOSE_CPUSTOP_ON_DDBBREAK
39 */
40 #define CPUSTOP_ON_DDBBREAK
41
42 /*
43 * TLB counters.
44 *
45 #define COUNT_XINVLTLB_HITS
46 */
47
48 /*
49 * Per-CPU IPI interrupt counters.
50 *
51 #define COUNT_IPIS
52 */
53
54 /*
55 * Address of POST hardware port.
56 * Defining this enables POSTCODE macros.
57 *
58 #define POST_ADDR 0x80
59 */
60
61
62 /*
63 * POST hardware macros.
64 */
65 #ifdef POST_ADDR
66 #define ASMPOSTCODE_INC \
67 pushl %eax ; \
68 movl _current_postcode, %eax ; \
69 incl %eax ; \
70 andl $0xff, %eax ; \
71 movl %eax, _current_postcode ; \
72 outb %al, $POST_ADDR ; \
73 popl %eax
74
75 /*
76 * Overwrite the current_postcode value.
77 */
78 #define ASMPOSTCODE(X) \
79 pushl %eax ; \
80 movl $X, %eax ; \
81 movl %eax, _current_postcode ; \
82 outb %al, $POST_ADDR ; \
83 popl %eax
84
85 /*
86 * Overwrite the current_postcode low nibble.
87 */
88 #define ASMPOSTCODE_LO(X) \
89 pushl %eax ; \
90 movl _current_postcode, %eax ; \
91 andl $0xf0, %eax ; \
92 orl $X, %eax ; \
93 movl %eax, _current_postcode ; \
94 outb %al, $POST_ADDR ; \
95 popl %eax
96
97 /*
98 * Overwrite the current_postcode high nibble.
99 */
100 #define ASMPOSTCODE_HI(X) \
101 pushl %eax ; \
102 movl _current_postcode, %eax ; \
103 andl $0x0f, %eax ; \
104 orl $(X<<4), %eax ; \
105 movl %eax, _current_postcode ; \
106 outb %al, $POST_ADDR ; \
107 popl %eax
108 #else
109 #define ASMPOSTCODE_INC
110 #define ASMPOSTCODE(X)
111 #define ASMPOSTCODE_LO(X)
112 #define ASMPOSTCODE_HI(X)
113 #endif /* POST_ADDR */
114
115
116 #endif /* _MACHINE_SMPTESTS_H_ */
Cache object: 7b493887ad45772f1612b404d57b369b
|