8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21
22 /*
23 * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
24 * Use is subject to license terms.
25 */
26
27
28 #if defined(__lint)
29 #pragma pack(1)
30 struct {
31 uint16_t limit_low;
32 uint16_t base_low;
33 uint8_t base_middle;
34 uint8_t attr;
35 uint8_t attr_and_limit;
36 uint8_t base_high;
37 } global_descriptor_table[8];
38 struct {
39 uint16_t limit; /* sizeof (global_descriptor_table) - 1 */
40 void *base; /* &global_descriptor_table */
41 } gdt_info;
42 #pragma pack()
43
44 #else /* __lint */
45
46 .align 16
47 .data
48 /*
49 * This must remain in sync with the entries in intel/sys/gdt.h; in
50 * particular kmdb uses B64CODE_SEL or B32CODE_SEL in perpetuity for
51 * its IDT entries (they're copied to the kernel's GDT in init_idt()).
52 */
53
54 global_descriptor_table:
55 .long 0
56 .long 0
57
58 /* GDT_B32DATA: 32 bit flat data descriptor */
59 .value 0xFFFF /* segment limit 0..15 */
60 .value 0x0000 /* segment base 0..15 */
61 .byte 0x0 /* segment base 16..23 */
62 .byte 0x92 /* P = 1, read/write data */
63 .byte 0xCF /* G=1, B=1, Limit (16..19)=1111 */
64 .byte 0x0 /* segment base 24..32 */
65
126 fake_cpu_gdt_base_24_31:
127 .byte 0x0 /* segment base 24..32 */
128
129 / .long 0
130 / .long 0
131
132 gdt_info:
133 .value gdt_info - global_descriptor_table - 1
134 .long global_descriptor_table
135 .long 0 /* needed for 64 bit */
136
137 fake_cpu:
138 .4byte 0
139 .4byte 0
140 .4byte 0
141 .globl fake_cpu_ptr
142 fake_cpu_ptr:
143 .4byte 0
144 .skip 0x6c0, 0
145
146 #endif /* __lint */
|
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21
22 /*
23 * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
24 * Use is subject to license terms.
25 */
26
27
28 .align 16
29 .data
30 /*
31 * This must remain in sync with the entries in intel/sys/gdt.h; in
32 * particular kmdb uses B64CODE_SEL or B32CODE_SEL in perpetuity for
33 * its IDT entries (they're copied to the kernel's GDT in init_idt()).
34 */
35
36 global_descriptor_table:
37 .long 0
38 .long 0
39
40 /* GDT_B32DATA: 32 bit flat data descriptor */
41 .value 0xFFFF /* segment limit 0..15 */
42 .value 0x0000 /* segment base 0..15 */
43 .byte 0x0 /* segment base 16..23 */
44 .byte 0x92 /* P = 1, read/write data */
45 .byte 0xCF /* G=1, B=1, Limit (16..19)=1111 */
46 .byte 0x0 /* segment base 24..32 */
47
108 fake_cpu_gdt_base_24_31:
109 .byte 0x0 /* segment base 24..32 */
110
111 / .long 0
112 / .long 0
113
114 gdt_info:
115 .value gdt_info - global_descriptor_table - 1
116 .long global_descriptor_table
117 .long 0 /* needed for 64 bit */
118
119 fake_cpu:
120 .4byte 0
121 .4byte 0
122 .4byte 0
123 .globl fake_cpu_ptr
124 fake_cpu_ptr:
125 .4byte 0
126 .skip 0x6c0, 0
127
|