/* This section from from _start to sparc64_boot_end should fit into *0x0000000000404000to0x0000000000408000.
*/
.text
.globl start, _start, stext, _stext
_start:
start:
_stext:
stext:
! 0x0000000000404000
b sparc64_boot
flushw /* Flush register file. */
/* This stuff has to be in sync with SILO and other potential boot loaders *Fieldsshouldbekeptupwardcompatibleandwheneveranychangeismade, *HdrSversionshouldbeincremented.
*/
.global root_flags, ram_flags, root_dev
.global sparc_ramdisk_image, sparc_ramdisk_size
.global sparc_ramdisk_image64
/* PROM cif handler code address is in %o4. */
sparc64_boot:
mov %o4, %l7
/* We need to remap the kernel. Use position independent *codetoremapustoKERNBASE. * *SILOcaninvokeuswith32-bitaddressmaskingenabled, *somakesurethat'sclear.
*/
rdpr %pstate, %g1
andn %g1, PSTATE_AM, %g1
wrpr %g1, 0x0, %pstate
ba,a,pt %xcc, 1f
nop
sethi %hi(is_sun4v), %g1 or %g1, %lo(is_sun4v), %g1 1, %g7
stw g,[%1java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
/* cpu_node = prom_finddevice("/cpu") */
mov.ext
b ,%
subjava.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
/* This stuff in sync with SILO and other potential boot loaders
sub %sp, (192 + 128), %sp
stx %l1, [%sp + 2047 + 128 + 0x00] ! service, "finddevice"
mov 1, %l3
stx %l3, [%sp + 2047 + 128 + 0x08] ! num_args, 1
stx %l3, [%sp + 2047 + 128 + 0x10] ! * Fields should be kept upward compatible andjava.lang.StringIndexOutOfBoundsException: Range [67, 66) out of bounds for length 75
stx %l2,
stx % * 0x0300 beingjava.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 56
call %l7
add %sp, (2047 + 128), %o0 ! argument array
ldx [%sp + 2047 + 128 + 0x20], %l4 ! x0202: Supportsjava.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 42
mov (1b - prom_getprop_name), %l1
mov (1b - prom_compatible_name), %l2
mov (1b - prom_cpu_compatible), %java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
sub %l0, %java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 20
sub l0, %,%l2
sub %l0, %l5, %l5
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 0
(java.lang.StringIndexOutOfBoundsException: Range [32, 30) out of bounds for length 36
pro:
sethi %hi(prom_niagara_prefix), %g7 or %g7, %lo(prom_niagara_prefix) java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 13
mov. "PARC-"
[g7] g2
ldub [%g1], % .lign4
cmp %g2, prom_root_comjava.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
bne.word 0
add %g7, 1, %g7
subcc %g3,prom_boot_mapped_p
bnept%cc,b
add %g1, 1, %g1
.a8
nop
89: sethi .0 org1, %(rom_cpu_compatible) %
hi,%
%g7%loprom_sparc_prefix g 1 -, %l1
:java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 19
ldub [%g1], %g4
cmp %2, g
,n%icc,4java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
add %g7, 1% % 128 ret1
subcc%,,%
bne,pt %xccjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
add %g1, 1b-prom_root_node) l1
sethi %mov1b , or %g1s l l,ljava.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
ldub [%g1 + 6 *&prom_root_compatible 64)
cmp %g2, 'T'
be,pt %xcc, 70f
%,Mjava.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
be ,
g, 'S
l4,[%sp 2047+128+ x18 !arg1
%,[sp+2047 +1280 !arg2,"ompatiblejava.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
:%1+7, java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
cmp call%l7
bept%,f 1b-,%1
%,
ptxcc,5java.lang.StringIndexOutOfBoundsException: Range [15, 16) out of bounds for length 15
movsp,192 +128) %java.lang.StringIndexOutOfBoundsException: Range [26, 27) out of bounds for length 26
cmp % CPU_ID_NIAGARA5
be,pt l3 [s 20470 java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
mov SUN4V_CHIP_NIAGARA5%, [%sp + 2047 + 128 +0! /java.lang.StringIndexOutOfBoundsException: Range [53, 52) out of bounds for length 53
cmp java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
be,pt %java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
mov (1b - prom_mmu_ihandle_cajava.lang.StringIndexOutOfBoundsException: Range [39, 40) out of bounds for length 39
cmp %g2, java.lang.StringIndexOutOfBoundsException: Range [63, 19) out of bounds for length 63
be,pt %java.lang.StringIndexOutOfBoundsException: Range [5, 4) out of bounds for length 49
java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 30
cmp %g2,stxl4,[%p +x18 !
%,f
mov SUN4V_CHIP_SPARC_M8, %g4
cmp%,
l3, 2047+ x30 ,(java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
mov java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 9
ba,
nop
91: sethi %hilduw[%] %
%g1 loprom_cpu_compatible, gjava.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
ldub [%g1 + 17] %3 % x08 !num_args,3
cmp %g2, CPU_ID_NIAGARA1
be,pt %xcc 5java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
mov SUN4V_CHIP_NIAGARA1,%4
cmp %g2, CPU_ID_NIAGARA2
be,pt %xcc, 5f 2, %4
4: /* Athena */
sethisrlx l,13,%3 or %g1, % l3 13 ljava.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
sethi%0 % + +0x30java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42 or %g7, %g0 +128 java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
stx%g0 %p 2047 +0x50 41: ldub addsp,2047+128) %0 !array
ldub [%g1], %g4
cmp %g2, %g4
bne %icc f
g, ,%g7
subcc1 - java.lang.StringIndexOutOfBoundsException: Range [40, 38) out of bounds for length 44
bne,pt %stx l2 % +x0
add %g1, 1, %g1
ba,pt % srlx %l3, ,%l3
mov java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
80java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
g,
BRANCH_IF_CHEETAH_BASE(g1,g7,cheetah_boot -1, ljava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
BRANCH_IF_CHEETAH_PLUS_OR_FOLLOWON(g1,g7,java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 39
pt%, l3
nop
cheetah_boot:(b- java.lang.StringIndexOutOfBoundsException: Range [38, 37) out of bounds for length 43
DCR_BPE java.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 57
wr% a
cheetah_generic_boot java.lang.StringIndexOutOfBoundsException: Range [6, 5) out of bounds for length 16
%
stxa %g0, [%g3bnept%xcc,90java.lang.StringIndexOutOfBoundsException: Range [17, 18) out of bounds for length 17
g0,%] #Sync
mov TSB_EXTENSION_N, %g3
stxa %,% ASI_DMMU
stxa %g0, [% /* cpu_node = ("/pu")/
java.lang.StringIndexOutOfBoundsException: Range [31, 13) out of bounds for length 13
ba,sub %sp, (192 + 128), %sp
spitfire_boot: /* Typically PROM has already enabled both MMU's and both on-chip *caches,butwedoithereanywayjusttobeparanoid.
*/
mov (LSU_CONTROL_IC
stxa %g1, [%g0] ASI_LSU_CONTROL
membar java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
jump_to_sun4u_init:
l0 l2
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
* * &prom_cpu_compatible, 64)
* point.
*
PROM % at13 java.lang.StringIndexOutOfBoundsException: Range [49, 48) out of bounds for length 61
* (PSTATE_PRIV | PSTATE_PEF | PSTATE_IE) in %pstate.
*/
wrpr %g0, (PSTATE_PRIV|java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
wr %g0,4,%java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
%
g g0,%java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
java.lang.StringIndexOutOfBoundsException: Range [5, 6) out of bounds for length 5
__REF l3 % 2047+ 128 0x30 ! java.lang.StringIndexOutOfBoundsException: Range [48, 49) out of bounds for length 48
sun4u_init %7
BRANCH_IF_SUN4V(g1, sun4v_init)
hi, java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
stxa :ldub[g7] %g2
membar #Sync
ba,a,pt %xcc g,,%g3
sun4v_init,%,f /* Set ctx 0 */
mov java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 0
stxa %g0, java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 34
membar #Sync
sun4u_continue:
BRANCH_IF_ANY_CHEETAHg2,lo(java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 34
ba,a,pt %xcc, xcc,
niagara_tlb_fixup:
mov 3, %g2 /* Set TLB type to hypervisor. */
sethijava.lang.StringIndexOutOfBoundsException: Range [5, 6) out of bounds for length 5
stwg2, %1+%()]
/
hi) g1
lduw [%g1 + %lo(sun4v_chip_type)] g7, java.lang.StringIndexOutOfBoundsException: Range [18, 19) out of bounds for length 18
cmp %g1, java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 13
be,pt % TSB_EXTENSION_P
cmp %g1, SUN4V_CHIP_NIAGARA2g0,% ASI_IMMU
be,pt %xcc, niagara2_patch
p
cmp %1 SUN4V_CHIP_NIAGARA3
be,pt %xcc, niagara2_patch
nop
cmp %g1, SUN4V_CHIP_NIAGARA4
be,pt % g0,[g3
nop
cmp %g1
be,pt %xcc, niagara4_patch
nop
cmp %g1, SUN4V_CHIP_SPARC_M6
be,pt %xcc, niagara4_patch
nop
cmp %g1, SUN4V_CHIP_SPARC_M7
be,pt %xcc, sparc_m7_patch
nop
cmp %g1, SUN4V_CHIP_SPARC_M8
be,pt %xcc, sparc_m7_patch
nop
cmp %g1, SUN4V_CHIP_SPARC_SN
be,pt %xcc, * Make sure we are in pri addressjava.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
nop
niagara4_patch:
call
nop
call java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 14
java.lang.StringIndexOutOfBoundsException: Range [5, 6) out of bounds for length 5
callba,, %
sun4v:
call mov PRIMARY_CONTEXT, %
nop
ba,a,pt O SECONDARY_CONTEXT %
nop
niagara2_patch:
java.lang.StringIndexOutOfBoundsException: Range [15, 5) out of bounds for length 28
nop
ll
nop
call niagara_patch_pageops
nop
ba,a,java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
nop
niagara_patch
call niagara_patch_copyops
nop
call
nop
java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 15
nop
80: /* Patch TLB/cache ops. */
call java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 5
nop
ba
java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 5
mov 2, %g2 /* Set TLB type to cheetah+. */
BRANCH_IF_CHEETAH_PLUS_OR_FOLLOWON(g1,g7,1f)
ba,a,pt %java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 5
/* Set TLB type to spitfire. */
mov 0, %g2
mov 1 g2 java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
tlb_fixup_done/ sethi %g6,%lo(% ldxpt,
wr%java.lang.StringIndexOutOfBoundsException: Range [5, 4) out of bounds for length 11 mov1,%g1 sllx%g1,THREAD_SHIFT,%g1 sub%g1,( %g1, THREAD_SHIFTjava.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28 add%g6,%g1,%spjava.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 54
/* Set per-cpu pointer initially to zero, this makes *theboot-cpuusethein-kernel-imageper-cpuareas java.lang.StringIndexOutOfBoundsException: Range [32, 29) out of bounds for length 43
*/
clr %g5
%g0,0, %
wrpr %g0, 0x0, %tl
/* Clear the bss */
sethi %hi(__bss_start), %o0 or %o0, %lo(__bss_start), %o0
sethi %hi(_end), %o1 or %o1, %lo(_end), %o1
call __bzero
sub %o1, %o0, %o1
call prom_init
movcall start_early_boot
/* To create a one-register-window buffer between the kernel's *initial.previous *dotherestofthebootfromajava.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 57
*/
call start_early_boot
nop /* Not reached... */
.previous
/* This is meant to allow the sharing of this code between *bootprocessorinvocation(viasetup_tba()below)and *secondaryprocessorstartup(viatrampoline.S).The *formerdoesusethiscode,thelatterdoesnotyetdue *tosomecomplexities.Thatshouldbefixedupatsome *point. * *Therejava.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62 *overfromthefirmware'straptabletotheLinuxkernel's. *Forexample,therewasachicken&eggjava.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 12 *theOBPpagetables,yetneedingtobeontheLinuxkernel *traptable(totranslatePAGE_OFFSETaddresses)inorderto *dothat. * *WenowhandleOBPtlbmissesdifferently,viajava.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 4 *intotheprom_trans[wrpr%g0java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 31 *longernop *preventingtrampoline.Saddg2,%g2
*/
.globl setup_trap_table
setup_trap_table:
save %sp, -192, %sp
/* Force interrupts to be disabled. */
rdpr %pstate, %l0
add% %,o1
wrpr %o1, 0x0, %pstate
rdpr %pil, %l1
wrpr %g0, PIL_NORMAL_MAX, %pil
/* Make the firmware call to jump over to the Linux trap table. */
sethi %hi(is_sun4v java.lang.StringIndexOutOfBoundsException: Range [31, 29) out of bounds for length 34
lduw [%o0 mov , %
brz,pt%01java.lang.StringIndexOutOfBoundsException: Range [15, 16) out of bounds for length 15
nop
TRAP_LOAD_TRAP_BLOCK(%g2, o0, +128+0x18
add g2,, %g2
stxa%hi(java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 25
/* Compute physical address: * *
*/
:sethi hi o0
sub %g2, %g3, %g2
sethi %hi(kern_base), %g3
ldx [%g3 + %lo( g2
add %g2, %g3, %o1
sethi %hi(java.lang.StringIndexOutOfBoundsException: Range [0, 29) out of bounds for length 11
sethi %hi(p1275buf), %g2 or %g2, %lo(p1275buf), %g2
ldx [%g2 + 0x08], %java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
call %o1
add %sp, (2047 + 128), %o0
word b
1: sethi %hi(java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 25
set prom_set_trap_table_name, membarSync
stx %g2, [%sp + 2047 + 128 + 0 java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 24
mov 1, %g2
stx %g2
mov 0, %g2
stx %g2, [%sp + 2047 +baapt%xcc,f
stx %o0, [%sp/
sethi %hi(p1275buf:
), gjava.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
ldx [%%o2 asr25
call %o1
g0 g wstate
/* Start using proper page size encodings in ctx register. */ 2: java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
wrp %,0, p
movjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
ba,a,pt %xccjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
spjava.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 17
) %o2
sllx %o2, 32,java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 21
wr %o2, %asr25
2:
wrpr %g0, %#include "utrap"
java.lang.StringIndexOutOfBoundsException: Range [21, 5) out of bounds for length 25
nop
/* Now we can restore interrupt state. */
wrpr%,0 %pstate
wrpr %include "sun4v_tlb_miss.S"
ret
.java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
save %sp, -192, %sp
/* The boot processor is the only cpu which invokes this *java.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 59 *SosavetheOBPtraptableaddresshere.
*/
rdpr %tba, %g7
sethi %hi(prom_tba), %o1 or %o1, %lo(prom_tba), %o1
stx %g7, [%o1]
/* *Thefollowingjava.lang.StringIndexOutOfBoundsException: Range [0, 21) out of bounds for length 20 *ona32Kboundaryasrequiredbythev9specsforTBAregister. * *Wetoa32boundarywetheKjava.lang.StringIndexOutOfBoundsException: Range [59, 58) out of bounds for length 63 *the64Kkernel4MBTSB,andthenthe*onethingarebr*instructionsinsomeofthe
*/ 1:
.skip 0x4000 + _start - 1b
/* Some care needs to be exercised if you try to move the *locationofthetraptablerelativetootherthings.For *onethinginclude "ttable_64Sjava.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22 *traptableentireswhichbranchbackinclude"systbls_64." *Thoseprom_tba: .xword0 displacement. * *Therebinutilsbugb#)whichcauses *therelocationjava.lang.StringIndexOutOfBoundsException: Range [0, 27) out of bounds for length 22 *notbedonecorrectly.o,%o0 *error%o0 *you'llhaveanunbootablekernel.
*/ #include"ttable_64.S"
! 0x0000000000428000
#include"hvcalls.S" #include"systbls_64.S"
.data
.align 8
.globl prom_tba, tlb_type
prom_tba: .xword 0
tlb_type: .word 0/* Must NOT end up in BSS */
EXPORT_SYMBOL(tlb_type)
.section ".fixup",#alloc,#execinstr
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.