forked from Minki/linux
a88b5ba8bd
o Move all files from sparc64/kernel/ to sparc/kernel - rename as appropriate o Update sparc/Makefile to the changes o Update sparc/kernel/Makefile to include the sparc64 files NOTE: This commit changes link order on sparc64! Link order had to change for either of sparc32 and sparc64. And assuming sparc64 see more testing than sparc32 change link order on sparc64 where issues will be caught faster. Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: David S. Miller <davem@davemloft.net>
55 lines
1.2 KiB
ArmAsm
55 lines
1.2 KiB
ArmAsm
/*
|
|
* dtlb_prot.S: DTLB protection trap strategy.
|
|
* This is included directly into the trap table.
|
|
*
|
|
* Copyright (C) 1996,1998 David S. Miller (davem@redhat.com)
|
|
* Copyright (C) 1997,1998 Jakub Jelinek (jj@ultra.linux.cz)
|
|
*/
|
|
|
|
/* Ways we can get here:
|
|
*
|
|
* [TL == 0] 1) User stores to readonly pages.
|
|
* [TL == 0] 2) Nucleus stores to user readonly pages.
|
|
* [TL > 0] 3) Nucleus stores to user readonly stack frame.
|
|
*/
|
|
|
|
/* PROT ** ICACHE line 1: User DTLB protection trap */
|
|
mov TLB_SFSR, %g1
|
|
stxa %g0, [%g1] ASI_DMMU ! Clear FaultValid bit
|
|
membar #Sync ! Synchronize stores
|
|
rdpr %pstate, %g5 ! Move into alt-globals
|
|
wrpr %g5, PSTATE_AG|PSTATE_MG, %pstate
|
|
rdpr %tl, %g1 ! Need a winfixup?
|
|
cmp %g1, 1 ! Trap level >1?
|
|
mov TLB_TAG_ACCESS, %g4 ! For reload of vaddr
|
|
|
|
/* PROT ** ICACHE line 2: More real fault processing */
|
|
bgu,pn %xcc, winfix_trampoline ! Yes, perform winfixup
|
|
ldxa [%g4] ASI_DMMU, %g5 ! Put tagaccess in %g5
|
|
ba,pt %xcc, sparc64_realfault_common ! Nope, normal fault
|
|
mov FAULT_CODE_DTLB | FAULT_CODE_WRITE, %g4
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
|
|
/* PROT ** ICACHE line 3: Unused... */
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
|
|
/* PROT ** ICACHE line 4: Unused... */
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|