mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-03 00:54:09 +08:00
sh: Tidy up various clear_page()/copy_page() definitions.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This commit is contained in:
parent
bcb28e42be
commit
379a95d1d2
@ -25,8 +25,8 @@
|
||||
.little
|
||||
|
||||
.balign 8
|
||||
.global sh64_page_clear
|
||||
sh64_page_clear:
|
||||
.global clear_page
|
||||
clear_page:
|
||||
pta/l 1f, tr1
|
||||
pta/l 2f, tr2
|
||||
ptabs/l r18, tr0
|
||||
|
@ -10,8 +10,8 @@
|
||||
of SH5-101 cut2 eval chip with Cayman board DDR memory.
|
||||
|
||||
Parameters:
|
||||
r2 : source effective address (start of page)
|
||||
r3 : destination effective address (start of page)
|
||||
r2 : destination effective address (start of page)
|
||||
r3 : source effective address (start of page)
|
||||
|
||||
Always copies 4096 bytes.
|
||||
|
||||
@ -27,10 +27,10 @@
|
||||
.little
|
||||
|
||||
.balign 8
|
||||
.global sh64_page_copy
|
||||
sh64_page_copy:
|
||||
.global copy_page
|
||||
copy_page:
|
||||
|
||||
/* Copy 4096 bytes worth of data from r2 to r3.
|
||||
/* Copy 4096 bytes worth of data from r3 to r2.
|
||||
Do prefetches 4 lines ahead.
|
||||
Do alloco 2 lines ahead */
|
||||
|
||||
@ -41,21 +41,21 @@ sh64_page_copy:
|
||||
|
||||
#if 0
|
||||
/* TAKum03020 */
|
||||
ld.q r2, 0x00, r63
|
||||
ld.q r2, 0x20, r63
|
||||
ld.q r2, 0x40, r63
|
||||
ld.q r2, 0x60, r63
|
||||
ld.q r3, 0x00, r63
|
||||
ld.q r3, 0x20, r63
|
||||
ld.q r3, 0x40, r63
|
||||
ld.q r3, 0x60, r63
|
||||
#endif
|
||||
alloco r3, 0x00
|
||||
alloco r2, 0x00
|
||||
synco ! TAKum03020
|
||||
alloco r3, 0x20
|
||||
alloco r2, 0x20
|
||||
synco ! TAKum03020
|
||||
|
||||
movi 3968, r6
|
||||
add r3, r6, r6
|
||||
add r2, r6, r6
|
||||
addi r6, 64, r7
|
||||
addi r7, 64, r8
|
||||
sub r2, r3, r60
|
||||
sub r3, r2, r60
|
||||
addi r60, 8, r61
|
||||
addi r61, 8, r62
|
||||
addi r62, 8, r23
|
||||
@ -67,25 +67,23 @@ sh64_page_copy:
|
||||
1:
|
||||
#if 0
|
||||
/* TAKum03020 */
|
||||
bge/u r3, r6, tr2 ! skip prefetch for last 4 lines
|
||||
ldx.q r3, r22, r63 ! prefetch 4 lines hence
|
||||
bge/u r2, r6, tr2 ! skip prefetch for last 4 lines
|
||||
ldx.q r2, r22, r63 ! prefetch 4 lines hence
|
||||
#endif
|
||||
2:
|
||||
bge/u r3, r7, tr3 ! skip alloco for last 2 lines
|
||||
alloco r3, 0x40 ! alloc destination line 2 lines ahead
|
||||
bge/u r2, r7, tr3 ! skip alloco for last 2 lines
|
||||
alloco r2, 0x40 ! alloc destination line 2 lines ahead
|
||||
synco ! TAKum03020
|
||||
3:
|
||||
ldx.q r3, r60, r36
|
||||
ldx.q r3, r61, r37
|
||||
ldx.q r3, r62, r38
|
||||
ldx.q r3, r23, r39
|
||||
st.q r3, 0, r36
|
||||
st.q r3, 8, r37
|
||||
st.q r3, 16, r38
|
||||
st.q r3, 24, r39
|
||||
addi r3, 32, r3
|
||||
bgt/l r8, r3, tr1
|
||||
ldx.q r2, r60, r36
|
||||
ldx.q r2, r61, r37
|
||||
ldx.q r2, r62, r38
|
||||
ldx.q r2, r23, r39
|
||||
st.q r2, 0, r36
|
||||
st.q r2, 8, r37
|
||||
st.q r2, 16, r38
|
||||
st.q r2, 24, r39
|
||||
addi r2, 32, r2
|
||||
bgt/l r8, r2, tr1
|
||||
|
||||
blink tr0, r63 ! return
|
||||
|
||||
|
||||
|
@ -9,11 +9,11 @@
|
||||
#include <asm/page.h>
|
||||
|
||||
/*
|
||||
* copy_page_slow
|
||||
* copy_page
|
||||
* @to: P1 address
|
||||
* @from: P1 address
|
||||
*
|
||||
* void copy_page_slow(void *to, void *from)
|
||||
* void copy_page(void *to, void *from)
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -23,7 +23,7 @@
|
||||
* r10 --- to
|
||||
* r11 --- from
|
||||
*/
|
||||
ENTRY(copy_page_slow)
|
||||
ENTRY(copy_page)
|
||||
mov.l r8,@-r15
|
||||
mov.l r10,@-r15
|
||||
mov.l r11,@-r15
|
||||
|
@ -24,9 +24,6 @@
|
||||
DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);
|
||||
pgd_t swapper_pg_dir[PTRS_PER_PGD];
|
||||
|
||||
void (*copy_page)(void *from, void *to);
|
||||
void (*clear_page)(void *to);
|
||||
|
||||
void show_mem(void)
|
||||
{
|
||||
int total = 0, reserved = 0, free = 0;
|
||||
@ -203,18 +200,6 @@ void __init mem_init(void)
|
||||
memset(empty_zero_page, 0, PAGE_SIZE);
|
||||
__flush_wback_region(empty_zero_page, PAGE_SIZE);
|
||||
|
||||
/*
|
||||
* Setup wrappers for copy/clear_page(), these will get overridden
|
||||
* later in the boot process if a better method is available.
|
||||
*/
|
||||
#ifdef CONFIG_MMU
|
||||
copy_page = copy_page_slow;
|
||||
clear_page = clear_page_slow;
|
||||
#else
|
||||
copy_page = copy_page_nommu;
|
||||
clear_page = clear_page_nommu;
|
||||
#endif
|
||||
|
||||
after_bootmem = 1;
|
||||
|
||||
codesize = (unsigned long) &_etext - (unsigned long) &_text;
|
||||
|
@ -14,12 +14,12 @@
|
||||
#include <linux/string.h>
|
||||
#include <asm/page.h>
|
||||
|
||||
void copy_page_nommu(void *to, void *from)
|
||||
void copy_page(void *to, void *from)
|
||||
{
|
||||
memcpy(to, from, PAGE_SIZE);
|
||||
}
|
||||
|
||||
void clear_page_nommu(void *to)
|
||||
void clear_page(void *to)
|
||||
{
|
||||
memset(to, 0, PAGE_SIZE);
|
||||
}
|
||||
|
@ -55,20 +55,12 @@
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
extern void (*clear_page)(void *to);
|
||||
extern void (*copy_page)(void *to, void *from);
|
||||
|
||||
extern unsigned long shm_align_mask;
|
||||
extern unsigned long max_low_pfn, min_low_pfn;
|
||||
extern unsigned long memory_start, memory_end;
|
||||
|
||||
#ifdef CONFIG_MMU
|
||||
extern void clear_page_slow(void *to);
|
||||
extern void copy_page_slow(void *to, void *from);
|
||||
#else
|
||||
extern void clear_page_nommu(void *to);
|
||||
extern void copy_page_nommu(void *to, void *from);
|
||||
#endif
|
||||
extern void clear_page(void *to);
|
||||
extern void copy_page(void *to, void *from);
|
||||
|
||||
#if !defined(CONFIG_CACHE_OFF) && defined(CONFIG_MMU) && \
|
||||
(defined(CONFIG_CPU_SH4) || defined(CONFIG_SH7705_CACHE_32KB))
|
||||
|
Loading…
Reference in New Issue
Block a user