Skip to content

Commit

Permalink
sh: Tidy up various clear_page()/copy_page() definitions.
Browse files Browse the repository at this point in the history
Signed-off-by: Paul Mundt <[email protected]>
  • Loading branch information
pmundt committed Jan 28, 2008
1 parent bcb28e4 commit 379a95d
Show file tree
Hide file tree
Showing 6 changed files with 36 additions and 61 deletions.
4 changes: 2 additions & 2 deletions arch/sh/lib64/page_clear.S
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
56 changes: 27 additions & 29 deletions arch/sh/lib64/page_copy.S
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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 */

Expand All @@ -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
Expand All @@ -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


6 changes: 3 additions & 3 deletions arch/sh/mm/copy_page.S
Original file line number Diff line number Diff line change
Expand Up @@ -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)
*/

/*
Expand All @@ -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
Expand Down
15 changes: 0 additions & 15 deletions arch/sh/mm/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down
4 changes: 2 additions & 2 deletions arch/sh/mm/pg-nommu.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down
12 changes: 2 additions & 10 deletions include/asm-sh/page.h
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Expand Down

0 comments on commit 379a95d

Please sign in to comment.