Linux-2.6.12-rc2
Initial git repository build. I'm not bothering with the full history, even though we have it. We can create a separate "historical" git archive of that later if we want to, and in the meantime it's about 3.2GB when imported into git - space that would just make the early git days unnecessarily complicated, when we don't have a lot of good infrastructure for it. Let it rip!
This commit is contained in:
54
arch/sh64/lib/page_clear.S
Normal file
54
arch/sh64/lib/page_clear.S
Normal file
@@ -0,0 +1,54 @@
|
||||
/*
|
||||
Copyright 2003 Richard Curnow, SuperH (UK) Ltd.
|
||||
|
||||
This file is subject to the terms and conditions of the GNU General Public
|
||||
License. See the file "COPYING" in the main directory of this archive
|
||||
for more details.
|
||||
|
||||
Tight version of memset for the case of just clearing a page. It turns out
|
||||
that having the alloco's spaced out slightly due to the increment/branch
|
||||
pair causes them to contend less for access to the cache. Similarly,
|
||||
keeping the stores apart from the allocos causes less contention. => Do two
|
||||
separate loops. Do multiple stores per loop to amortise the
|
||||
increment/branch cost a little.
|
||||
|
||||
Parameters:
|
||||
r2 : source effective address (start of page)
|
||||
|
||||
Always clears 4096 bytes.
|
||||
|
||||
Note : alloco guarded by synco to avoid TAKum03020 erratum
|
||||
|
||||
*/
|
||||
|
||||
.section .text..SHmedia32,"ax"
|
||||
.little
|
||||
|
||||
.balign 8
|
||||
.global sh64_page_clear
|
||||
sh64_page_clear:
|
||||
pta/l 1f, tr1
|
||||
pta/l 2f, tr2
|
||||
ptabs/l r18, tr0
|
||||
|
||||
movi 4096, r7
|
||||
add r2, r7, r7
|
||||
add r2, r63, r6
|
||||
1:
|
||||
alloco r6, 0
|
||||
synco ! TAKum03020
|
||||
addi r6, 32, r6
|
||||
bgt/l r7, r6, tr1
|
||||
|
||||
add r2, r63, r6
|
||||
2:
|
||||
st.q r6, 0, r63
|
||||
st.q r6, 8, r63
|
||||
st.q r6, 16, r63
|
||||
st.q r6, 24, r63
|
||||
addi r6, 32, r6
|
||||
bgt/l r7, r6, tr2
|
||||
|
||||
blink tr0, r63
|
||||
|
||||
|
Reference in New Issue
Block a user