|
|
1.1 root 1: /*
2: * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
3: *
4: * @APPLE_LICENSE_HEADER_START@
5: *
6: * The contents of this file constitute Original Code as defined in and
7: * are subject to the Apple Public Source License Version 1.1 (the
8: * "License"). You may not use this file except in compliance with the
9: * License. Please obtain a copy of the License at
10: * http://www.apple.com/publicsource and read it before using this file.
11: *
12: * This Original Code and all software distributed under the License are
13: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
14: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
16: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
17: * License for the specific language governing rights and limitations
18: * under the License.
19: *
20: * @APPLE_LICENSE_HEADER_END@
21: */
22: /*
23: * @OSF_COPYRIGHT@
24: */
25:
26: #include <cpus.h>
27: #include <mach_rt.h>
28: #include <mach_kdb.h>
29: #include <mach_ldebug.h>
30:
31: #include <i386/AT386/misc_protos.h>
32: #include <i386/AT386/mp/mp_v1_1.h>
33: #include <i386/AT386/mp/mp.h>
34: #include <i386/AT386/mp/boot.h>
35: #include <i386/apic.h>
36: #include <i386/ipl.h>
37: #include <i386/fpu.h>
38: #include <i386/pio.h>
39: #include <i386/cpuid.h>
40: #include <i386/proc_reg.h>
41: #include <i386/misc_protos.h>
42: #include <mach/mach_types.h>
43: #include <mach/kern_return.h>
44: #include <vm/vm_kern.h>
45: #include <kern/startup.h>
46: #include <kern/cpu_number.h>
47: #include <kern/cpu_data.h>
48:
49: #define MP_DEBUG 1
50:
51: #if MP_DEBUG
52: vm_offset_t bios_start;
53: #endif /* MP_DEBUG */
54:
55: unsigned int lapic_id_initdata = 0;
56: int lapic_id = (int)&lapic_id_initdata;
57: vm_offset_t lapic_start;
58:
59: void lapic_init(void);
60: int get_ncpus(void);
61: void validate_cpus(int ncpus);
62: void cpu_interrupt(int cpu);
63: void slave_boot(int cpu);
64:
65: boolean_t mp_v1_1_initialized = FALSE;
66:
67: void
68: mp_v1_1_init(void)
69: {
70: /*WILL BE REMOVED IN FUTURE REVISION!!! !*/
71: /* SIMPLY COMMENTED OUT FOR THE MOMENT */
72: return;
73: }
74:
75: void
76: lapic_init(void)
77: {
78: }
79:
80: void
81: cpu_interrupt(
82: int cpu)
83: {
84: }
85:
86: #if NCPUS > 1
87: void
88: slave_boot(
89: int cpu)
90: {
91: }
92:
93: void
94: start_other_cpus(void)
95: {
96: }
97:
98: void
99: validate_cpus(int ncpus)
100: {
101: int i;
102: for(i=0;i<NCPUS;i++)
103: machine_slot[i].is_cpu = TRUE;
104: }
105:
106: int
107: get_ncpus(void)
108: {
109: return 1;
110: }
111:
112: void
113: slave_machine_init(void)
114: {
115: }
116:
117: #endif /* NCPUS > 1 */
118:
119: #if MACH_KDB
120: #include <ddb/db_output.h>
121:
122: #define TRAP_DEBUG 0 /* Must match interrupt.s and spl.s */
123:
124:
125: #if TRAP_DEBUG
126: #define MTRAPS 100
127: struct mp_trap_hist_struct {
128: unsigned char type;
129: unsigned char data[5];
130: } trap_hist[MTRAPS], *cur_trap_hist = trap_hist,
131: *max_trap_hist = &trap_hist[MTRAPS];
132:
133: void db_trap_hist(void);
134:
135: /*
136: * SPL:
137: * 1: new spl
138: * 2: old spl
139: * 3: new tpr
140: * 4: old tpr
141: * INT:
142: * 1: int vec
143: * 2: old spl
144: * 3: new spl
145: * 4: post eoi tpr
146: * 5: exit tpr
147: */
148:
149: void
150: db_trap_hist(void)
151: {
152: int i,j;
153: for(i=0;i<MTRAPS;i++)
154: if (trap_hist[i].type == 1 || trap_hist[i].type == 2) {
155: db_printf("%s%s",
156: (&trap_hist[i]>=cur_trap_hist)?"*":" ",
157: (trap_hist[i].type == 1)?"SPL":"INT");
158: for(j=0;j<5;j++)
159: db_printf(" %02x", trap_hist[i].data[j]);
160: db_printf("\n");
161: }
162:
163: }
164: #endif /* TRAP_DEBUG */
165:
166: void db_lapic(int cpu);
167: unsigned int db_remote_read(int cpu, int reg);
168: void db_ioapic(unsigned int);
169: void kdb_console(void);
170:
171: void
172: kdb_console(void)
173: {
174: }
175:
176: #define BOOLP(a) ((a)?' ':'!')
177:
178: static char *DM[8] = {
179: "Fixed",
180: "Lowest Priority",
181: "Invalid",
182: "Invalid",
183: "NMI",
184: "Reset",
185: "Invalid",
186: "ExtINT"};
187:
188: unsigned int
189: db_remote_read(int cpu, int reg)
190: {
191: return -1;
192: }
193:
194: void
195: db_lapic(int cpu)
196: {
197: }
198:
199: void
200: db_ioapic(unsigned int ind)
201: {
202: }
203:
204: #endif /* MACH_KDB */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.