summaryrefslogtreecommitdiffstats
path: root/arch/sparc64
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2000-08-08 19:25:53 +0000
committerRalf Baechle <ralf@linux-mips.org>2000-08-08 19:25:53 +0000
commit57445428488a2862840c4d7c96d7746c11031aaf (patch)
tree60b88b3a21896a33ee4dccc727d88b745a9ff731 /arch/sparc64
parent2e837819b1563679b55363d469239fdf4f17fbbb (diff)
Merge with Linu 2.4.0-test6-pre6.
Diffstat (limited to 'arch/sparc64')
-rw-r--r--arch/sparc64/kernel/irq.c2
-rw-r--r--arch/sparc64/kernel/signal32.c6
-rw-r--r--arch/sparc64/kernel/smp.c4
-rw-r--r--arch/sparc64/kernel/sparc64_ksyms.c6
-rw-r--r--arch/sparc64/mm/init.c4
-rw-r--r--arch/sparc64/mm/ultra.S26
6 files changed, 36 insertions, 12 deletions
diff --git a/arch/sparc64/kernel/irq.c b/arch/sparc64/kernel/irq.c
index c7f4905b8..7f2e21a51 100644
--- a/arch/sparc64/kernel/irq.c
+++ b/arch/sparc64/kernel/irq.c
@@ -1,4 +1,4 @@
-/* $Id: irq.c,v 1.90 2000/08/01 00:28:33 davem Exp $
+/* $Id: irq.c,v 1.91 2000/08/05 10:48:40 davem Exp $
* irq.c: UltraSparc IRQ handling/init/registry.
*
* Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu)
diff --git a/arch/sparc64/kernel/signal32.c b/arch/sparc64/kernel/signal32.c
index aabde84c2..efad55a1c 100644
--- a/arch/sparc64/kernel/signal32.c
+++ b/arch/sparc64/kernel/signal32.c
@@ -1,4 +1,4 @@
-/* $Id: signal32.c,v 1.65 2000/07/07 04:25:17 davem Exp $
+/* $Id: signal32.c,v 1.66 2000/07/27 01:05:15 davem Exp $
* arch/sparc64/kernel/signal32.c
*
* Copyright (C) 1991, 1992 Linus Torvalds
@@ -750,7 +750,7 @@ static inline void new_setup_frame32(struct k_sigaction *ka, struct pt_regs *reg
goto sigsegv;
if(pte_present(*ptep)) {
- unsigned long page = page_address(pte_page(*ptep));
+ unsigned long page = (unsigned long) page_address(pte_page(*ptep));
__asm__ __volatile__("
membar #StoreStore
@@ -1175,7 +1175,7 @@ static inline void setup_rt_frame32(struct k_sigaction *ka, struct pt_regs *regs
goto sigsegv;
if(pte_present(*ptep)) {
- unsigned long page = page_address(pte_page(*ptep));
+ unsigned long page = (unsigned long) page_address(pte_page(*ptep));
__asm__ __volatile__("
membar #StoreStore
diff --git a/arch/sparc64/kernel/smp.c b/arch/sparc64/kernel/smp.c
index 96f8624ca..dbcb1f09e 100644
--- a/arch/sparc64/kernel/smp.c
+++ b/arch/sparc64/kernel/smp.c
@@ -817,14 +817,14 @@ static inline unsigned long find_flush_base(unsigned long size)
size = PAGE_ALIGN(size);
found = size;
- base = page_address(p);
+ base = (unsigned long) page_address(p);
while(found != 0) {
/* Failure. */
if(p >= (mem_map + max_mapnr))
return 0UL;
if(PageReserved(p)) {
found = size;
- base = page_address(p);
+ base = (unsigned long) page_address(p);
} else {
found -= PAGE_SIZE;
}
diff --git a/arch/sparc64/kernel/sparc64_ksyms.c b/arch/sparc64/kernel/sparc64_ksyms.c
index 4a79b76bf..5bb4c8839 100644
--- a/arch/sparc64/kernel/sparc64_ksyms.c
+++ b/arch/sparc64/kernel/sparc64_ksyms.c
@@ -1,4 +1,4 @@
-/* $Id: sparc64_ksyms.c,v 1.89 2000/07/28 12:15:02 davem Exp $
+/* $Id: sparc64_ksyms.c,v 1.91 2000/08/05 13:30:33 davem Exp $
* arch/sparc64/kernel/sparc64_ksyms.c: Sparc64 specific ksyms support.
*
* Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu)
@@ -83,7 +83,7 @@ extern long sparc32_open(const char * filename, int flags, int mode);
extern int register_ioctl32_conversion(unsigned int cmd, int (*handler)(unsigned int, unsigned int, unsigned long, struct file *));
extern int unregister_ioctl32_conversion(unsigned int cmd);
extern int io_remap_page_range(unsigned long from, unsigned long offset, unsigned long size, pgprot_t prot, int space);
-extern void flush_dcache_page(void *addr);
+extern void __flush_dcache_page(void *addr);
extern int __ashrdi3(int, int);
@@ -180,7 +180,7 @@ EXPORT_SYMBOL(disable_irq);
EXPORT_SYMBOL_PRIVATE(flushw_user);
-EXPORT_SYMBOL(flush_dcache_page);
+EXPORT_SYMBOL(__flush_dcache_page);
EXPORT_SYMBOL(mstk48t02_regs);
EXPORT_SYMBOL(request_fast_irq);
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