diff options
Diffstat (limited to 'sys/boot/sparc64/loader/locore.S')
-rw-r--r-- | sys/boot/sparc64/loader/locore.S | 93 |
1 files changed, 11 insertions, 82 deletions
diff --git a/sys/boot/sparc64/loader/locore.S b/sys/boot/sparc64/loader/locore.S index 5eb6935..a73f5bf 100644 --- a/sys/boot/sparc64/loader/locore.S +++ b/sys/boot/sparc64/loader/locore.S @@ -4,35 +4,34 @@ * All rights reserved. * * As long as the above copyright statement and this notice remain - * unchanged, you can do what ever you want with this file. - * - * $FreeBSD$ + * unchanged, you can do what ever you want with this file. */ +#include <machine/asm.h> +__FBSDID("$FreeBSD$"); + #define LOCORE -#include <machine/asi.h> -#include <machine/asm.h> +#include <machine/frame.h> +#include <machine/fsr.h> +#include <machine/intr_machdep.h> #include <machine/pstate.h> -#include <machine/smp.h> -#include <machine/upa.h> #define PAGE_SIZE 8192 #define PAGE_SHIFT 13 -#define SPOFF 2047 #define STACK_SIZE (2 * PAGE_SIZE) ENTRY(_start) - /* limit interrupts */ - wrpr %g0, 13, %pil + /* Limit interrupts. */ + wrpr %g0, PIL_TICK - 1, %pil /* * PSTATE: privileged, interrupts enabled, floating point * unit enabled */ - wrpr %g0, PSTATE_PRIV|PSTATE_IE|PSTATE_PEF, %pstate - wr %g0, 0x4, %fprs + wrpr %g0, PSTATE_PRIV | PSTATE_IE | PSTATE_PEF, %pstate + wr %g0, FPRS_FEF, %fprs setx stack + STACK_SIZE - SPOFF - CCFSZ, %l7, %l6 mov %l6, %sp @@ -40,74 +39,4 @@ ENTRY(_start) mov %o4, %o0 sir -/* - * %o0 input VA constant - * %o1 current iTLB offset - * %o2 current iTLB TTE tag - */ -ENTRY(itlb_va_to_pa) - clr %o1 -0: ldxa [%o1] ASI_ITLB_TAG_READ_REG, %o2 - cmp %o2, %o0 - bne,a %xcc, 1f - nop - /* return PA of matching entry */ - ldxa [%o1] ASI_ITLB_DATA_ACCESS_REG, %o0 - sllx %o0, 23, %o0 - srlx %o0, PAGE_SHIFT+23, %o0 - sllx %o0, PAGE_SHIFT, %o0 - retl - mov %o0, %o1 -1: cmp %o1, 63<<3 - blu %xcc, 0b - add %o1, 8, %o1 - clr %o0 - retl - not %o0 - -ENTRY(dtlb_va_to_pa) - clr %o1 -0: ldxa [%o1] ASI_DTLB_TAG_READ_REG, %o2 - cmp %o2, %o0 - bne,a %xcc, 1f - nop - /* return PA of matching entry */ - ldxa [%o1] ASI_DTLB_DATA_ACCESS_REG, %o0 - sllx %o0, 23, %o0 - srlx %o0, PAGE_SHIFT+23, %o0 - sllx %o0, PAGE_SHIFT, %o0 - retl - mov %o0, %o1 -1: cmp %o1, 63<<3 - blu %xcc, 0b - add %o1, 8, %o1 - clr %o0 - retl - not %o0 - -/* - * %o0 = vpn - * %o1 = tte data - */ -ENTRY(itlb_enter) - rdpr %pstate, %o4 - wrpr %o4, PSTATE_IE, %pstate - mov AA_IMMU_TAR, %o3 - stxa %o0, [%o3] ASI_IMMU - stxa %o1, [%g0] ASI_ITLB_DATA_IN_REG - membar #Sync - retl - wrpr %o4, 0, %pstate - -ENTRY(dtlb_enter) - rdpr %pstate, %o4 - wrpr %o4, PSTATE_IE, %pstate - mov AA_DMMU_TAR, %o3 - stxa %o0, [%o3] ASI_DMMU - stxa %o1, [%g0] ASI_DTLB_DATA_IN_REG - membar #Sync - retl - wrpr %o4, 0, %pstate - .comm stack, STACK_SIZE, 32 - .comm smp_stack, STACK_SIZE, 32 |