Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / verif / diag / assembly / include / c / template_mt.s
CommitLineData
86530b38
AT
1/*
2* ========== Copyright Header Begin ==========================================
3*
4* OpenSPARC T2 Processor File: template_mt.s
5* Copyright (C) 1995-2007 Sun Microsystems, Inc. All Rights Reserved
6* 4150 Network Circle, Santa Clara, California 95054, U.S.A.
7*
8* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
9*
10* This program is free software; you can redistribute it and/or modify
11* it under the terms of the GNU General Public License as published by
12* the Free Software Foundation; version 2 of the License.
13*
14* This program is distributed in the hope that it will be useful,
15* but WITHOUT ANY WARRANTY; without even the implied warranty of
16* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17* GNU General Public License for more details.
18*
19* You should have received a copy of the GNU General Public License
20* along with this program; if not, write to the Free Software
21* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22*
23* For the avoidance of doubt, and except that if any non-GPL license
24* choice is available it will apply instead, Sun elects to use only
25* the General Public License version 2 (GPLv2) at this time for any
26* software where a choice of GPL license versions is made
27* available with the language indicating that GPLv2 or any later version
28* may be used, or where a choice of which version of the GPL is applied is
29* otherwise unspecified.
30*
31* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
32* CA 95054 USA or visit www.sun.com if you need additional information or
33* have any questions.
34*
35*
36* ========== Copyright Header End ============================================
37*/
38#define USER_START_LABEL c_start
39#define MAIN_TEXT_DATA_ALSO
40
41!define stack size
42!--------------------------------------------------
43#ifndef STACKSIZE
44#define STACKSIZE 4096
45#endif
46
47!Include this before boot.s to use spill/fill traps
48!--------------------------------------------------
49#include "c/ctraps.h"
50#include "hboot.s"
51
52#ifndef CUSTOM_TRAPS_BASE_TEXT_ADDR
53#define CUSTOM_TRAPS_BASE_TEXT_ADDR 0x500000
54#endif
55
56#ifndef CUSTOM_TRAPS_BASE_TEXT_ADDR_RA
57#define CUSTOM_TRAPS_BASE_TEXT_ADDR_RA 0x10500000
58#endif
59
60#ifndef CUSTOM_TRAPS_BASE_DATA_ADDR
61#define CUSTOM_TRAPS_BASE_DATA_ADDR 0x510000
62#endif
63
64#ifndef CUSTOM_TRAPS_BASE_DATA_ADDR_RA
65#define CUSTOM_TRAPS_BASE_DATA_ADDR_RA 0x10510000
66#endif
67
68#ifndef C_BASE_TEXT_ADDR
69#define C_BASE_TEXT_ADDR 0x520000
70#endif
71
72#ifndef C_BASE_TEXT_ADDR_RA
73#define C_BASE_TEXT_ADDR_RA 0x10520000
74#endif
75
76#ifndef C_BASE_DATA_ADDR
77#define C_BASE_DATA_ADDR 0x530000
78#endif
79
80#ifndef C_BASE_DATA_ADDR_RA
81#define C_BASE_DATA_ADDR_RA 0x10530000
82#endif
83
84#ifndef MTCHELPER_BASE_DATA_ADDR0
85#define MTCHELPER_BASE_DATA_ADDR0 0xd30000
86#endif
87
88#ifndef MTCHELPER_BASE_DATA_ADDR_RA0
89#define MTCHELPER_BASE_DATA_ADDR_RA0 0x10d30000
90#endif
91
92
93/*****************************************************************************
94 * SECTION .CUSTOM_TRAPS
95 * Trap handlers that will run in nucleus context
96 *****************************************************************************/
97
98SECTION .CUSTOM_TRAPS \
99 TEXT_VA=CUSTOM_TRAPS_BASE_TEXT_ADDR, \
100 DATA_VA=CUSTOM_TRAPS_BASE_DATA_ADDR
101
102changequote([, ])dnl
103forloop([i], 0, 7, [
104ifdef([part_]i[_used],[
105attr_text {
106 NAME=.CUSTOM_TRAPS,
107 VA=CUSTOM_TRAPS_BASE_TEXT_ADDR,
108 RA=CUSTOM_TRAPS_BASE_TEXT_ADDR_RA,
109 PA=ra2pa2(CUSTOM_TRAPS_BASE_TEXT_ADDR_RA, i),
110#ifndef USE_N1_TSB_NAMES
111 [part_]i[_ctx_zero_tsb_config_0],
112#else
113 [part_]i[_i_ctx_zero_ps0_tsb],
114#endif
115 TTE_G=1, TTE_Context=0, TTE_V=1, TTE_Size=0, TTE_NFO=0,
116 TTE_IE=0, TTE_Soft2=0, TTE_Diag=0, TTE_Soft=0,
117 TTE_L=0, TTE_CP=1, TTE_CV=0, TTE_E=0, TTE_P=0, TTE_W=0, TTE_X=1
118 }
119])dnl
120])dnl
121changequote(`,')dnl'
122
123#ifdef MAIN_PAGE_HV_ALSO
124attr_text {
125 NAME=.CUSTOM_TRAPS,
126 VA=CUSTOM_TRAPS_BASE_TEXT_ADDR,
127 hypervisor
128 }
129#endif
130
131changequote([, ])dnl
132forloop([i], 0, 7, [
133ifdef([part_]i[_used],[
134attr_data {
135 NAME=.CUSTOM_TRAPS,
136 VA=CUSTOM_TRAPS_BASE_DATA_ADDR,
137 RA=CUSTOM_TRAPS_BASE_DATA_ADDR_RA,
138 PA=ra2pa2(CUSTOM_TRAPS_BASE_DATA_ADDR_RA, i),
139#ifndef USE_N1_TSB_NAMES
140 [part_]i[_ctx_zero_tsb_config_1],
141#else
142 [part_]i[_d_ctx_zero_ps0_tsb],
143#endif
144 TTE_G=1, TTE_Context=0, TTE_V=1, TTE_Size=0, TTE_NFO=0,
145 TTE_IE=0, TTE_Soft2=0, TTE_Diag=0, TTE_Soft=0,
146 TTE_L=0, TTE_CP=1, TTE_CV=0, TTE_E=0, TTE_P=0, TTE_W=1
147 }
148])dnl
149])dnl
150changequote(`,')dnl'
151
152#include "c/ctraps.s"
153
154/*****************************************************************************
155 * SECTION .C
156 * Code and data for C library
157 *****************************************************************************/
158
159SECTION .C \
160 TEXT_VA=C_BASE_TEXT_ADDR, \
161 DATA_VA=C_BASE_DATA_ADDR
162
163changequote([, ])dnl
164forloop([i], 0, 7, [
165ifdef([part_]i[_used],[
166attr_text {
167 NAME=.C
168 VA=C_BASE_TEXT_ADDR,
169 RA=C_BASE_TEXT_ADDR_RA,
170 PA=ra2pa2(C_BASE_TEXT_ADDR_RA, i),
171#ifndef USE_N1_TSB_NAMES
172 [part_]i[_ctx_nonzero_tsb_config_0],
173#else
174 [part_]i[_i_ctx_nonzero_ps0_tsb],
175#endif
176 TTE_G=0, TTE_Context=PCONTEXT, TTE_V=1, TTE_Size=0, TTE_NFO=0,
177 TTE_IE=0, TTE_Soft2=0, TTE_Diag=0, TTE_Soft=0,
178 TTE_L=0, TTE_CP=1, TTE_CV=0, TTE_E=0, TTE_P=0, TTE_W=0, TTE_X=1
179}
180])dnl
181])dnl
182changequote(`,')dnl'
183
184
185#ifdef MAIN_PAGE_HV_ALSO
186attr_text {
187 NAME=.C
188 VA=C_BASE_TEXT_ADDR,
189 hypervisor
190 }
191#endif
192
193changequote([, ])dnl
194forloop([i], 0, 7, [
195ifdef([part_]i[_used],[
196attr_data {
197 NAME=.C,
198 VA=C_BASE_DATA_ADDR,
199 RA=C_BASE_DATA_ADDR_RA,
200 PA=ra2pa2(C_BASE_DATA_ADDR_RA, i),
201#ifndef USE_N1_TSB_NAMES
202 [part_]i[_ctx_nonzero_tsb_config_1],
203#else
204 [part_]i[_d_ctx_nonzero_ps0_tsb],
205#endif
206 TTE_G=0, TTE_Context=PCONTEXT, TTE_V=1,
207 TTE_Size=0, TTE_NFO=0,
208 TTE_IE=0, TTE_Soft2=0, TTE_Diag=0, TTE_Soft=0,
209 TTE_L=0, TTE_CP=1, TTE_CV=0, TTE_E=0, TTE_P=0, TTE_W=1
210}
211])dnl
212])dnl
213changequote(`,')dnl'
214
215#include "c/stackinit_mt.s"
216#include "c/libc.s"
217
218!------------------------------------------------------------------------------
219
220
221
222#ifdef MTCHELPER
223
224/*****************************************************************************
225 * SECTION .MTCHELPER0
226 * An additional sectiob with more data
227 *****************************************************************************/
228
229SECTION .MTCHELPER0 \
230 DATA_VA=MTCHELPER_BASE_DATA_ADDR0
231
232attr_data {
233 NAME=.MTCHELPER0,
234 VA=MTCHELPER_BASE_DATA_ADDR0,
235 RA=MTCHELPER_BASE_DATA_ADDR_RA0,
236 PA=ra2pa(MTCHELPER_BASE_DATA_ADDR_RA0, 0),
237#ifndef USE_N1_TSB_NAMES
238 part_0_ctx_nonzero_tsb_config_1,
239#else
240 part_0_d_ctx_nonzero_ps0_tsb,
241#endif
242 TTE_G=0, TTE_Context=PCONTEXT, TTE_V=1,
243 TTE_Size=0, TTE_NFO=0,
244 TTE_IE=0, TTE_Soft2=0, TTE_Diag=0, TTE_Soft=0,
245 TTE_L=0, TTE_CP=1, TTE_CV=0, TTE_E=0, TTE_P=0, TTE_W=1
246}
247
248.section .data
249
250.global shared_memory2
251shared_memory2:
252 .skip 0x1000
253
254.global shared_memory_buffers2
255shared_memory_buffers2:
256 .skip 0x4000
257
258#endif
259
260
261#ifndef USER_PAGE_CUSTOM_MAP
262SECTION .MAIN
263#endif