summaryrefslogtreecommitdiffstats
path: root/include/asm-sparc
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2000-07-12 01:43:08 +0000
committerRalf Baechle <ralf@linux-mips.org>2000-07-12 01:43:08 +0000
commitf4ae78d536e6dfaeb24c01b331fc38d950ed062b (patch)
tree6930a78aa7cc4ee1829d50d3bcbaf0dbe9e2e905 /include/asm-sparc
parent66f20d0f9bd86dc11f3869d78f3c5749789323ee (diff)
Merge with 2.4.0-test4-pre2.
Diffstat (limited to 'include/asm-sparc')
-rw-r--r--include/asm-sparc/asm_offsets.h40
-rw-r--r--include/asm-sparc/bitops.h28
-rw-r--r--include/asm-sparc/pgalloc.h6
-rw-r--r--include/asm-sparc/pgtable.h9
-rw-r--r--include/asm-sparc/smp.h6
5 files changed, 45 insertions, 44 deletions
diff --git a/include/asm-sparc/asm_offsets.h b/include/asm-sparc/asm_offsets.h
index 3447973a0..44d4c371e 100644
--- a/include/asm-sparc/asm_offsets.h
+++ b/include/asm-sparc/asm_offsets.h
@@ -18,24 +18,24 @@
#define ASIZ_task_exec_domain 0x00000004
#define AOFF_task_need_resched 0x00000014
#define ASIZ_task_need_resched 0x00000004
-#define AOFF_task_avg_slice 0x00000018
-#define ASIZ_task_avg_slice 0x00000004
-#define AOFF_task_lock_depth 0x0000001c
+#define AOFF_task_lock_depth 0x00000018
#define ASIZ_task_lock_depth 0x00000004
-#define AOFF_task_counter 0x00000020
+#define AOFF_task_counter 0x0000001c
#define ASIZ_task_counter 0x00000004
-#define AOFF_task_priority 0x00000024
+#define AOFF_task_priority 0x00000020
#define ASIZ_task_priority 0x00000004
-#define AOFF_task_policy 0x00000028
+#define AOFF_task_policy 0x00000024
#define ASIZ_task_policy 0x00000004
-#define AOFF_task_mm 0x0000002c
+#define AOFF_task_mm 0x00000028
#define ASIZ_task_mm 0x00000004
-#define AOFF_task_active_mm 0x00000030
+#define AOFF_task_active_mm 0x0000002c
#define ASIZ_task_active_mm 0x00000004
-#define AOFF_task_has_cpu 0x00000034
+#define AOFF_task_has_cpu 0x00000030
#define ASIZ_task_has_cpu 0x00000004
-#define AOFF_task_processor 0x00000038
+#define AOFF_task_processor 0x00000034
#define ASIZ_task_processor 0x00000004
+#define AOFF_task_cpus_allowed 0x00000038
+#define ASIZ_task_cpus_allowed 0x00000004
#define AOFF_task_ptrace 0x0000003c
#define ASIZ_task_ptrace 0x00000004
#define AOFF_task_run_list 0x00000040
@@ -301,24 +301,24 @@
#define ASIZ_task_exec_domain 0x00000004
#define AOFF_task_need_resched 0x00000014
#define ASIZ_task_need_resched 0x00000004
-#define AOFF_task_avg_slice 0x00000018
-#define ASIZ_task_avg_slice 0x00000004
-#define AOFF_task_lock_depth 0x0000001c
+#define AOFF_task_lock_depth 0x00000018
#define ASIZ_task_lock_depth 0x00000004
-#define AOFF_task_counter 0x00000020
+#define AOFF_task_counter 0x0000001c
#define ASIZ_task_counter 0x00000004
-#define AOFF_task_priority 0x00000024
+#define AOFF_task_priority 0x00000020
#define ASIZ_task_priority 0x00000004
-#define AOFF_task_policy 0x00000028
+#define AOFF_task_policy 0x00000024
#define ASIZ_task_policy 0x00000004
-#define AOFF_task_mm 0x0000002c
+#define AOFF_task_mm 0x00000028
#define ASIZ_task_mm 0x00000004
-#define AOFF_task_active_mm 0x00000030
+#define AOFF_task_active_mm 0x0000002c
#define ASIZ_task_active_mm 0x00000004
-#define AOFF_task_has_cpu 0x00000034
+#define AOFF_task_has_cpu 0x00000030
#define ASIZ_task_has_cpu 0x00000004
-#define AOFF_task_processor 0x00000038
+#define AOFF_task_processor 0x00000034
#define ASIZ_task_processor 0x00000004
+#define AOFF_task_cpus_allowed 0x00000038
+#define ASIZ_task_cpus_allowed 0x00000004
#define AOFF_task_ptrace 0x0000003c
#define ASIZ_task_ptrace 0x00000004
#define AOFF_task_run_list 0x00000040
diff --git a/include/asm-sparc/bitops.h b/include/asm-sparc/bitops.h
index eb9710eb1..af8d4a2d4 100644
--- a/include/asm-sparc/bitops.h
+++ b/include/asm-sparc/bitops.h
@@ -1,4 +1,4 @@
-/* $Id: bitops.h,v 1.57 2000/06/30 10:18:39 davem Exp $
+/* $Id: bitops.h,v 1.58 2000/07/07 07:29:30 anton Exp $
* bitops.h: Bit string operations on the Sparc.
*
* Copyright 1995 David S. Miller (davem@caip.rutgers.edu)
@@ -19,8 +19,6 @@
* themself.
*/
-#define __SMPVOL
-
extern __inline__ unsigned long set_bit(unsigned long nr, void *addr)
{
int mask;
@@ -83,19 +81,13 @@ extern __inline__ void change_bit(unsigned long nr, void *addr)
#include <asm/system.h>
-#ifdef CONFIG_SMP
-#define __SMPVOL volatile
-#else
-#define __SMPVOL
-#endif
-
/* Set bit 'nr' in 32-bit quantity at address 'addr' where bit '0'
* is in the highest of the four bytes and bit '31' is the high bit
* within the first byte. Sparc is BIG-Endian. Unless noted otherwise
* all bit-ops return 0 if bit was previously clear and != 0 otherwise.
*/
-extern __inline__ int test_and_set_bit(unsigned long nr, __SMPVOL void *addr)
+extern __inline__ int test_and_set_bit(unsigned long nr, volatile void *addr)
{
register unsigned long mask asm("g2");
register unsigned long *ADDR asm("g1");
@@ -112,12 +104,12 @@ extern __inline__ int test_and_set_bit(unsigned long nr, __SMPVOL void *addr)
return mask != 0;
}
-extern __inline__ void set_bit(unsigned long nr, __SMPVOL void *addr)
+extern __inline__ void set_bit(unsigned long nr, volatile void *addr)
{
(void) test_and_set_bit(nr, addr);
}
-extern __inline__ int test_and_clear_bit(unsigned long nr, __SMPVOL void *addr)
+extern __inline__ int test_and_clear_bit(unsigned long nr, volatile void *addr)
{
register unsigned long mask asm("g2");
register unsigned long *ADDR asm("g1");
@@ -135,12 +127,12 @@ extern __inline__ int test_and_clear_bit(unsigned long nr, __SMPVOL void *addr)
return mask != 0;
}
-extern __inline__ void clear_bit(unsigned long nr, __SMPVOL void *addr)
+extern __inline__ void clear_bit(unsigned long nr, volatile void *addr)
{
(void) test_and_clear_bit(nr, addr);
}
-extern __inline__ int test_and_change_bit(unsigned long nr, __SMPVOL void *addr)
+extern __inline__ int test_and_change_bit(unsigned long nr, volatile void *addr)
{
register unsigned long mask asm("g2");
register unsigned long *ADDR asm("g1");
@@ -158,7 +150,7 @@ extern __inline__ int test_and_change_bit(unsigned long nr, __SMPVOL void *addr)
return mask != 0;
}
-extern __inline__ void change_bit(unsigned long nr, __SMPVOL void *addr)
+extern __inline__ void change_bit(unsigned long nr, volatile void *addr)
{
(void) test_and_change_bit(nr, addr);
}
@@ -166,7 +158,7 @@ extern __inline__ void change_bit(unsigned long nr, __SMPVOL void *addr)
#endif /* __KERNEL__ */
/* The following routine need not be atomic. */
-extern __inline__ int test_bit(int nr, __const__ __SMPVOL void *addr)
+extern __inline__ int test_bit(int nr, __const__ void *addr)
{
return (1 & (((__const__ unsigned int *) addr)[nr >> 5] >> (nr & 31))) != 0;
}
@@ -298,7 +290,7 @@ extern __inline__ int clear_le_bit(int nr, void *addr)
/* Now for the ext2 filesystem bit operations and helper routines. */
-extern __inline__ int set_le_bit(int nr,void * addr)
+extern __inline__ int set_le_bit(int nr, volatile void * addr)
{
register int mask asm("g2");
register unsigned char *ADDR asm("g1");
@@ -316,7 +308,7 @@ extern __inline__ int set_le_bit(int nr,void * addr)
return mask;
}
-extern __inline__ int clear_le_bit(int nr, void * addr)
+extern __inline__ int clear_le_bit(int nr, volatile void * addr)
{
register int mask asm("g2");
register unsigned char *ADDR asm("g1");
diff --git a/include/asm-sparc/pgalloc.h b/include/asm-sparc/pgalloc.h
index 71a03dc02..20e9d805e 100644
--- a/include/asm-sparc/pgalloc.h
+++ b/include/asm-sparc/pgalloc.h
@@ -1,4 +1,4 @@
-/* $Id: pgalloc.h,v 1.5 2000/06/04 06:23:53 anton Exp $ */
+/* $Id: pgalloc.h,v 1.6 2000/07/10 20:56:53 anton Exp $ */
#ifndef _SPARC_PGALLOC_H
#define _SPARC_PGALLOC_H
@@ -92,14 +92,10 @@ extern struct pgtable_cache_struct {
unsigned long *pte_cache;
unsigned long pgtable_cache_sz;
unsigned long pgd_cache_sz;
- spinlock_t pgd_spinlock;
- spinlock_t pte_spinlock;
} pgt_quicklists;
#define pgd_quicklist (pgt_quicklists.pgd_cache)
#define pmd_quicklist ((unsigned long *)0)
#define pte_quicklist (pgt_quicklists.pte_cache)
-#define pgd_spinlock (pgt_quicklists.pgd_spinlock)
-#define pte_spinlock (pgt_quicklists.pte_spinlock)
#define pgtable_cache_size (pgt_quicklists.pgtable_cache_sz)
#define pgd_cache_size (pgt_quicklists.pgd_cache_sz)
diff --git a/include/asm-sparc/pgtable.h b/include/asm-sparc/pgtable.h
index a4a1ef3ce..53039cc9c 100644
--- a/include/asm-sparc/pgtable.h
+++ b/include/asm-sparc/pgtable.h
@@ -1,4 +1,4 @@
-/* $Id: pgtable.h,v 1.96 2000/06/05 06:08:46 anton Exp $ */
+/* $Id: pgtable.h,v 1.97 2000/07/07 07:33:11 anton Exp $ */
#ifndef _SPARC_PGTABLE_H
#define _SPARC_PGTABLE_H
@@ -125,7 +125,14 @@ BTFIXUPDEF_INT(page_kernel)
#define PAGE_SHARED __pgprot(BTFIXUP_INT(page_shared))
#define PAGE_COPY __pgprot(BTFIXUP_INT(page_copy))
#define PAGE_READONLY __pgprot(BTFIXUP_INT(page_readonly))
+
+extern unsigned long page_kernel;
+
+#ifdef MODULE
+#define PAGE_KERNEL page_kernel
+#else
#define PAGE_KERNEL __pgprot(BTFIXUP_INT(page_kernel))
+#endif
/* Top-level page directory */
extern pgd_t swapper_pg_dir[1024];
diff --git a/include/asm-sparc/smp.h b/include/asm-sparc/smp.h
index 5f7040345..f6504165d 100644
--- a/include/asm-sparc/smp.h
+++ b/include/asm-sparc/smp.h
@@ -93,6 +93,12 @@ extern __inline__ void xc5(smpfunc_t func, unsigned long arg1, unsigned long arg
unsigned long arg3, unsigned long arg4, unsigned long arg5)
{ smp_cross_call(func, arg1, arg2, arg3, arg4, arg5); }
+extern __inline__ int smp_call_function(void (*func)(void *info), void *info, int nonatomic, int wait)
+{
+ xc1((smpfunc_t)func, (unsigned long)info);
+ return 0;
+}
+
extern __volatile__ int __cpu_number_map[NR_CPUS];
extern __volatile__ int __cpu_logical_map[NR_CPUS];
extern unsigned long smp_proc_in_lock[NR_CPUS];