1 # See LICENSE for license details.
53 # enable FPU and accelerator if present
54 li t0, MSTATUS_FS | MSTATUS_XS
57 # make sure XLEN agrees with compilation choice
59 #if __riscv_xlen == 64
68 #ifdef __riscv_hard_float
69 # initialize FPU if we have one
70 andi t0, t0, 1 << ('f' - 'a')
110 # initialize global pointer
118 # for now, assume only 1 core
122 # give each core 128KB of stack + TLS
136 SREG x1, 1*REGBYTES(sp)
137 SREG x2, 2*REGBYTES(sp)
138 SREG x3, 3*REGBYTES(sp)
139 SREG x4, 4*REGBYTES(sp)
140 SREG x5, 5*REGBYTES(sp)
141 SREG x6, 6*REGBYTES(sp)
142 SREG x7, 7*REGBYTES(sp)
143 SREG x8, 8*REGBYTES(sp)
144 SREG x9, 9*REGBYTES(sp)
145 SREG x10, 10*REGBYTES(sp)
146 SREG x11, 11*REGBYTES(sp)
147 SREG x12, 12*REGBYTES(sp)
148 SREG x13, 13*REGBYTES(sp)
149 SREG x14, 14*REGBYTES(sp)
150 SREG x15, 15*REGBYTES(sp)
151 SREG x16, 16*REGBYTES(sp)
152 SREG x17, 17*REGBYTES(sp)
153 SREG x18, 18*REGBYTES(sp)
154 SREG x19, 19*REGBYTES(sp)
155 SREG x20, 20*REGBYTES(sp)
156 SREG x21, 21*REGBYTES(sp)
157 SREG x22, 22*REGBYTES(sp)
158 SREG x23, 23*REGBYTES(sp)
159 SREG x24, 24*REGBYTES(sp)
160 SREG x25, 25*REGBYTES(sp)
161 SREG x26, 26*REGBYTES(sp)
162 SREG x27, 27*REGBYTES(sp)
163 SREG x28, 28*REGBYTES(sp)
164 SREG x29, 29*REGBYTES(sp)
165 SREG x30, 30*REGBYTES(sp)
166 SREG x31, 31*REGBYTES(sp)
174 # Remain in M-mode after eret
178 LREG x1, 1*REGBYTES(sp)
179 LREG x2, 2*REGBYTES(sp)
180 LREG x3, 3*REGBYTES(sp)
181 LREG x4, 4*REGBYTES(sp)
182 LREG x5, 5*REGBYTES(sp)
183 LREG x6, 6*REGBYTES(sp)
184 LREG x7, 7*REGBYTES(sp)
185 LREG x8, 8*REGBYTES(sp)
186 LREG x9, 9*REGBYTES(sp)
187 LREG x10, 10*REGBYTES(sp)
188 LREG x11, 11*REGBYTES(sp)
189 LREG x12, 12*REGBYTES(sp)
190 LREG x13, 13*REGBYTES(sp)
191 LREG x14, 14*REGBYTES(sp)
192 LREG x15, 15*REGBYTES(sp)
193 LREG x16, 16*REGBYTES(sp)
194 LREG x17, 17*REGBYTES(sp)
195 LREG x18, 18*REGBYTES(sp)
196 LREG x19, 19*REGBYTES(sp)
197 LREG x20, 20*REGBYTES(sp)
198 LREG x21, 21*REGBYTES(sp)
199 LREG x22, 22*REGBYTES(sp)
200 LREG x23, 23*REGBYTES(sp)
201 LREG x24, 24*REGBYTES(sp)
202 LREG x25, 25*REGBYTES(sp)
203 LREG x26, 26*REGBYTES(sp)
204 LREG x27, 27*REGBYTES(sp)
205 LREG x28, 28*REGBYTES(sp)
206 LREG x29, 29*REGBYTES(sp)
207 LREG x30, 30*REGBYTES(sp)
208 LREG x31, 31*REGBYTES(sp)
213 .section ".tdata.begin"
217 .section ".tdata.end"
225 .section ".tohost","aw",@progbits