Subversion Repositories HelenOS

Rev

Rev 3770 | Rev 3993 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3770 Rev 3835
Line 29... Line 29...
29
 
29
 
30
#include <arch/arch.h>
30
#include <arch/arch.h>
31
#include <arch/stack.h>
31
#include <arch/stack.h>
32
#include <arch/sun4v/regdef.h>
32
#include <arch/sun4v/regdef.h>
33
#include <arch/sun4v/hypercall.h>
33
#include <arch/sun4v/hypercall.h>
-
 
34
#include <arch/sun4v/arch.h>
-
 
35
#include <arch/sun4v/cpu.h>
34
#include <arch/mm/pagesize.h>
36
#include <arch/mm/pagesize.h>
35
#include <arch/mm/sun4v/tte.h>
37
#include <arch/mm/sun4v/tte.h>
36
#include <arch/mm/sun4v/mmu.h>
38
#include <arch/mm/sun4v/mmu.h>
37
#include <arch/mm/sun4v/tlb.h>
39
#include <arch/mm/sun4v/tlb.h>
38
 
40
 
Line 189... Line 191...
189
	 */
191
	 */
190
	sethi %hi(physmem_base), %l4
192
	sethi %hi(physmem_base), %l4
191
	stx %l6, [%l4 + %lo(physmem_base)]
193
	stx %l6, [%l4 + %lo(physmem_base)]
192
 
194
 
193
	/*
195
	/*
-
 
196
	 * Set CPUID.
-
 
197
	 */
-
 
198
	__HYPERCALL_FAST(CPU_MYID)
-
 
199
	mov SCRATCHPAD_CPUID, %g1
-
 
200
	stxa %o1, [%g1] ASI_SCRATCHPAD
-
 
201
 
-
 
202
	/*
-
 
203
	 * Set MMU fault status area for the current CPU.
-
 
204
	 */
-
 
205
	set mmu_fsas, %o0			! o0 <= addr. of fault status areas array
-
 
206
	add %o0, %l6, %o0			! kernel address to real address
-
 
207
	mulx %o1, MMU_FSA_SIZE, %g1		! g1 <= offset of current CPU's fault status area
-
 
208
	add %g1, %o0, %o0			! o0 <= FSA of the current CPU
-
 
209
	mov SCRATCHPAD_MMU_FSA, %g1
-
 
210
	stxa %o0, [%g1] ASI_SCRATCHPAD		! remember MMU fault status area to speed up miss handler
-
 
211
	__HYPERCALL_FAST(MMU_FAULT_AREA_CONF)
-
 
212
	
-
 
213
	/*
-
 
214
	 * Store a template of a TTE Data entry for kernel mappings.
-
 
215
	 * This template will be used from the kernel MMU miss handler.
-
 
216
	 */
-
 
217
	!TTE_DATA(0, %l5, %g2, %g3, %g1)
-
 
218
	setx TTE_FLAGS | PAGESIZE_8K, %g2, %g1; \
-
 
219
	add %g1, %l5, %g1; \
-
 
220
	set kernel_8k_tlb_data_template, %g4
-
 
221
	stx %g1, [%g4]
-
 
222
 
-
 
223
	/*
194
	 * So far, we have not touched the stack.
224
	 * So far, we have not touched the stack.
195
	 * It is a good idea to set the kernel stack to a known state now.
225
	 * It is a good idea to set the kernel stack to a known state now.
196
	 */
226
	 */
197
	sethi %hi(temporary_boot_stack), %sp
227
	sethi %hi(temporary_boot_stack), %sp
198
	or %sp, %lo(temporary_boot_stack), %sp
228
	or %sp, %lo(temporary_boot_stack), %sp
Line 231... Line 261...
231
 
261
 
232
.align 8
262
.align 8
233
.global physmem_base		! copy of the physical memory base address
263
.global physmem_base		! copy of the physical memory base address
234
physmem_base:
264
physmem_base:
235
	.quad 0
265
	.quad 0
-
 
266
 
-
 
267
.global kernel_8k_tlb_data_template
-
 
268
kernel_8k_tlb_data_template:
-
 
269
	.quad 0
-
 
270
 
-
 
271
/* MMU fault status areas for all CPUs */
-
 
272
.align MMU_FSA_ALIGNMENT
-
 
273
.global mmu_fsas
-
 
274
mmu_fsas:
-
 
275
	!.space (MMU_FSA_SIZE * MAX_NUM_STRANDS)
-
 
276
	.space 8192