Commit 379a95d1 authored by Paul Mundt's avatar Paul Mundt

sh: Tidy up various clear_page()/copy_page() definitions.

Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
parent bcb28e42
...@@ -25,8 +25,8 @@ ...@@ -25,8 +25,8 @@
.little .little
.balign 8 .balign 8
.global sh64_page_clear .global clear_page
sh64_page_clear: clear_page:
pta/l 1f, tr1 pta/l 1f, tr1
pta/l 2f, tr2 pta/l 2f, tr2
ptabs/l r18, tr0 ptabs/l r18, tr0
......
...@@ -10,8 +10,8 @@ ...@@ -10,8 +10,8 @@
of SH5-101 cut2 eval chip with Cayman board DDR memory. of SH5-101 cut2 eval chip with Cayman board DDR memory.
Parameters: Parameters:
r2 : source effective address (start of page) r2 : destination effective address (start of page)
r3 : destination effective address (start of page) r3 : source effective address (start of page)
Always copies 4096 bytes. Always copies 4096 bytes.
...@@ -27,10 +27,10 @@ ...@@ -27,10 +27,10 @@
.little .little
.balign 8 .balign 8
.global sh64_page_copy .global copy_page
sh64_page_copy: 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 prefetches 4 lines ahead.
Do alloco 2 lines ahead */ Do alloco 2 lines ahead */
...@@ -41,21 +41,21 @@ sh64_page_copy: ...@@ -41,21 +41,21 @@ sh64_page_copy:
#if 0 #if 0
/* TAKum03020 */ /* TAKum03020 */
ld.q r2, 0x00, r63 ld.q r3, 0x00, r63
ld.q r2, 0x20, r63 ld.q r3, 0x20, r63
ld.q r2, 0x40, r63 ld.q r3, 0x40, r63
ld.q r2, 0x60, r63 ld.q r3, 0x60, r63
#endif #endif
alloco r3, 0x00 alloco r2, 0x00
synco ! TAKum03020 synco ! TAKum03020
alloco r3, 0x20 alloco r2, 0x20
synco ! TAKum03020 synco ! TAKum03020
movi 3968, r6 movi 3968, r6
add r3, r6, r6 add r2, r6, r6
addi r6, 64, r7 addi r6, 64, r7
addi r7, 64, r8 addi r7, 64, r8
sub r2, r3, r60 sub r3, r2, r60
addi r60, 8, r61 addi r60, 8, r61
addi r61, 8, r62 addi r61, 8, r62
addi r62, 8, r23 addi r62, 8, r23
...@@ -67,25 +67,23 @@ sh64_page_copy: ...@@ -67,25 +67,23 @@ sh64_page_copy:
1: 1:
#if 0 #if 0
/* TAKum03020 */ /* TAKum03020 */
bge/u r3, r6, tr2 ! skip prefetch for last 4 lines bge/u r2, r6, tr2 ! skip prefetch for last 4 lines
ldx.q r3, r22, r63 ! prefetch 4 lines hence ldx.q r2, r22, r63 ! prefetch 4 lines hence
#endif #endif
2: 2:
bge/u r3, r7, tr3 ! skip alloco for last 2 lines bge/u r2, r7, tr3 ! skip alloco for last 2 lines
alloco r3, 0x40 ! alloc destination line 2 lines ahead alloco r2, 0x40 ! alloc destination line 2 lines ahead
synco ! TAKum03020 synco ! TAKum03020
3: 3:
ldx.q r3, r60, r36 ldx.q r2, r60, r36
ldx.q r3, r61, r37 ldx.q r2, r61, r37
ldx.q r3, r62, r38 ldx.q r2, r62, r38
ldx.q r3, r23, r39 ldx.q r2, r23, r39
st.q r3, 0, r36 st.q r2, 0, r36
st.q r3, 8, r37 st.q r2, 8, r37
st.q r3, 16, r38 st.q r2, 16, r38
st.q r3, 24, r39 st.q r2, 24, r39
addi r3, 32, r3 addi r2, 32, r2
bgt/l r8, r3, tr1 bgt/l r8, r2, tr1
blink tr0, r63 ! return blink tr0, r63 ! return
...@@ -9,11 +9,11 @@ ...@@ -9,11 +9,11 @@
#include <asm/page.h> #include <asm/page.h>
/* /*
* copy_page_slow * copy_page
* @to: P1 address * @to: P1 address
* @from: P1 address * @from: P1 address
* *
* void copy_page_slow(void *to, void *from) * void copy_page(void *to, void *from)
*/ */
/* /*
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
* r10 --- to * r10 --- to
* r11 --- from * r11 --- from
*/ */
ENTRY(copy_page_slow) ENTRY(copy_page)
mov.l r8,@-r15 mov.l r8,@-r15
mov.l r10,@-r15 mov.l r10,@-r15
mov.l r11,@-r15 mov.l r11,@-r15
......
...@@ -24,9 +24,6 @@ ...@@ -24,9 +24,6 @@
DEFINE_PER_CPU(struct mmu_gather, mmu_gathers); DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);
pgd_t swapper_pg_dir[PTRS_PER_PGD]; pgd_t swapper_pg_dir[PTRS_PER_PGD];
void (*copy_page)(void *from, void *to);
void (*clear_page)(void *to);
void show_mem(void) void show_mem(void)
{ {
int total = 0, reserved = 0, free = 0; int total = 0, reserved = 0, free = 0;
...@@ -203,18 +200,6 @@ void __init mem_init(void) ...@@ -203,18 +200,6 @@ void __init mem_init(void)
memset(empty_zero_page, 0, PAGE_SIZE); memset(empty_zero_page, 0, PAGE_SIZE);
__flush_wback_region(empty_zero_page, 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; after_bootmem = 1;
codesize = (unsigned long) &_etext - (unsigned long) &_text; codesize = (unsigned long) &_etext - (unsigned long) &_text;
......
...@@ -14,12 +14,12 @@ ...@@ -14,12 +14,12 @@
#include <linux/string.h> #include <linux/string.h>
#include <asm/page.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); memcpy(to, from, PAGE_SIZE);
} }
void clear_page_nommu(void *to) void clear_page(void *to)
{ {
memset(to, 0, PAGE_SIZE); memset(to, 0, PAGE_SIZE);
} }
......
...@@ -55,20 +55,12 @@ ...@@ -55,20 +55,12 @@
#ifndef __ASSEMBLY__ #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 shm_align_mask;
extern unsigned long max_low_pfn, min_low_pfn; extern unsigned long max_low_pfn, min_low_pfn;
extern unsigned long memory_start, memory_end; extern unsigned long memory_start, memory_end;
#ifdef CONFIG_MMU extern void clear_page(void *to);
extern void clear_page_slow(void *to); extern void copy_page(void *to, void *from);
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
#if !defined(CONFIG_CACHE_OFF) && defined(CONFIG_MMU) && \ #if !defined(CONFIG_CACHE_OFF) && defined(CONFIG_MMU) && \
(defined(CONFIG_CPU_SH4) || defined(CONFIG_SH7705_CACHE_32KB)) (defined(CONFIG_CPU_SH4) || defined(CONFIG_SH7705_CACHE_32KB))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment