diff options
Diffstat (limited to 'arch/sparc64/mm')
-rw-r--r-- | arch/sparc64/mm/init.c | 4 | ||||
-rw-r--r-- | arch/sparc64/mm/ultra.S | 26 |
2 files changed, 27 insertions, 3 deletions
diff --git a/arch/sparc64/mm/init.c b/arch/sparc64/mm/init.c index 88ac93103..d3c9e5036 100644 --- a/arch/sparc64/mm/init.c +++ b/arch/sparc64/mm/init.c @@ -1,4 +1,4 @@ -/* $Id: init.c,v 1.152 2000/05/09 17:40:14 davem Exp $ +/* $Id: init.c,v 1.153 2000/07/27 01:05:15 davem Exp $ * arch/sparc64/mm/init.c * * Copyright (C) 1996-1999 David S. Miller (davem@caip.rutgers.edu) @@ -746,7 +746,7 @@ pte_t *get_pte_slow(pmd_t *pmd, unsigned long offset, unsigned long color) pte_t *pte; set_page_count((page + 1), 1); - paddr = page_address(page); + paddr = (unsigned long) page_address(page); memset((char *)paddr, 0, (PAGE_SIZE << 1)); if (!color) { diff --git a/arch/sparc64/mm/ultra.S b/arch/sparc64/mm/ultra.S index 85e62ad25..7940218d2 100644 --- a/arch/sparc64/mm/ultra.S +++ b/arch/sparc64/mm/ultra.S @@ -1,4 +1,4 @@ -/* $Id: ultra.S,v 1.44 2000/07/10 20:57:35 davem Exp $ +/* $Id: ultra.S,v 1.46 2000/08/05 13:30:33 davem Exp $ * ultra.S: Don't expand these all over the place... * * Copyright (C) 1997, 2000 David S. Miller (davem@redhat.com) @@ -206,6 +206,30 @@ iflush2:sub %o1, 0x20, %g3 flush %g6 ba,a,pt %xcc, 3b + .align 64 + .globl __flush_dcache_page +__flush_dcache_page: + sub %o0, %g4, %o0 + clr %o1 + srlx %o0, 11, %o0 + sethi %hi(1 << 14), %o2 +1: ldxa [%o1] ASI_DCACHE_TAG, %o3 + andn %o3, 0x3, %o3 + cmp %o0, %o3 + bne,pt %xcc, 2f + nop + stxa %g0, [%o1] ASI_DCACHE_TAG + membar #Sync +2: add %o1, (1 << 5), %o1 + cmp %o1, %o2 + bne,pt %xcc, 1b + nop + /* The I-cache does not snoop local stores so we + * better flush that too. + */ + ba,pt %xcc, __flush_icache_page + sllx %o0, 11, %o0 + .align 32 __prefill_dtlb: rdpr %pstate, %g7 |