URL
https://opencores.org/ocsvn/or1k_old/or1k_old/trunk
Subversion Repositories or1k_old
[/] [or1k_old/] [trunk/] [uclinux/] [uClinux-2.0.x/] [arch/] [alpha/] [kernel/] [head.S] - Rev 1782
Compare with Previous | Blame | View Log
/*
* alpha/boot/head.S
*
* initial boot stuff.. At this point, the bootloader has already
* switched into OSF/1 PAL-code, and loaded us at the correct address
* (START_ADDR). So there isn't much left for us to do: just set up
* the kernel global pointer and jump to the kernel entry-point.
*/
#define __ASSEMBLY__
#include <asm/system.h>
#define halt call_pal PAL_halt
.globl swapper_pg_dir
.globl _stext
swapper_pg_dir=SWAPPER_PGD
.set noreorder
.globl __start
.ent __start
_stext:
__start:
br $27,1f
1: ldgp $29,0($27)
lda $27,start_kernel
jsr $26,($27),start_kernel
halt
.end __start
.align 3
.globl wrent
.ent wrent
wrent:
call_pal PAL_wrent
ret ($26)
.end wrent
.align 3
.globl wrkgp
.ent wrkgp
wrkgp:
call_pal PAL_wrkgp
ret ($26)
.end wrkgp
.align 3
.globl wrusp
.ent wrusp
wrusp:
call_pal PAL_wrusp
ret ($26)
.end wrusp
.align 3
.globl rdusp
.ent rdusp
rdusp:
call_pal PAL_rdusp
ret ($26)
.end rdusp
.align 3
.globl tbi
.ent tbi
tbi:
call_pal PAL_tbi
ret ($26)
.end tbi
.align 3
.globl imb
.ent imb
imb:
call_pal PAL_imb
ret ($26)
.end imb
.align 3
.globl rdmces
.ent rdmces
rdmces:
call_pal PAL_rdmces
ret ($26)
.end rdmces
.align 3
.globl wrmces
.ent wrmces
wrmces:
call_pal PAL_wrmces
ret ($26)
.end wrmces
.align 3
.globl whami
.ent whami
whami:
call_pal PAL_whami
ret ($26)
.end whami
.align 3
.globl wripir
.ent wripir
wripir:
call_pal PAL_wripir
ret ($26)
.end wripir
.align 3
.globl cserve_ena
.ent cserve_ena
cserve_ena:
lda $30,-0x08($30)
stq $17,0($30)
bis $16,$16,$17
lda $16,52($31)
call_pal PAL_cserve
ldq $17,0($30)
lda $30,0x08($30)
ret ($26)
.end cserve_ena
.align 3
.globl cserve_dis
.ent cserve_dis
cserve_dis:
lda $30,-0x08($30)
stq $17,0($30)
bis $16,$16,$17
lda $16,53($31)
call_pal PAL_cserve
ldq $17,0($30)
lda $30,0x08($30)
ret ($26)
.end cserve_dis
#
# The following two functions don't need trapb/excb instructions
# around the mf_fpcr/mt_fpcr instructions because (a) the kernel
# never generates arithmetic faults and (b) call_pal instructions
# are implied trap barriers.
#
.align 3
.globl rdfpcr
.ent rdfpcr
rdfpcr:
lda $30,-0x10($30)
stt $f0,0($30)
mf_fpcr $f0
stt $f0,8($30)
ldt $f0,0($30)
ldq $0,8($30)
lda $30,0x10($30)
ret ($26)
.end rdfpcr
.align 3
.globl wrfpcr
.ent wrfpcr
wrfpcr:
lda $30,-0x10($30)
stt $f0,0($30)
stq $16,8($30)
ldt $f0,8($30)
mt_fpcr $f0
ldt $f0,0($30)
lda $30,0x10($30)
ret ($26)
.end wrfpcr