diff options
Diffstat (limited to 'include/asm-sparc')
-rw-r--r-- | include/asm-sparc/cpudata.h | 1 | ||||
-rw-r--r-- | include/asm-sparc/idprom.h | 26 | ||||
-rw-r--r-- | include/asm-sparc/oplib.h | 2 | ||||
-rw-r--r-- | include/asm-sparc/pgtable.h | 6 | ||||
-rw-r--r-- | include/asm-sparc/poll.h | 1 | ||||
-rw-r--r-- | include/asm-sparc/smp.h | 9 | ||||
-rw-r--r-- | include/asm-sparc/socket.h | 2 | ||||
-rw-r--r-- | include/asm-sparc/spinlock.h | 25 | ||||
-rw-r--r-- | include/asm-sparc/uaccess.h | 47 |
9 files changed, 40 insertions, 79 deletions
diff --git a/include/asm-sparc/cpudata.h b/include/asm-sparc/cpudata.h index ec0d9ef90a3b..a2c4d51d36c4 100644 --- a/include/asm-sparc/cpudata.h +++ b/include/asm-sparc/cpudata.h | |||
@@ -18,6 +18,7 @@ typedef struct { | |||
18 | unsigned int counter; | 18 | unsigned int counter; |
19 | int prom_node; | 19 | int prom_node; |
20 | int mid; | 20 | int mid; |
21 | int next; | ||
21 | } cpuinfo_sparc; | 22 | } cpuinfo_sparc; |
22 | 23 | ||
23 | DECLARE_PER_CPU(cpuinfo_sparc, __cpu_data); | 24 | DECLARE_PER_CPU(cpuinfo_sparc, __cpu_data); |
diff --git a/include/asm-sparc/idprom.h b/include/asm-sparc/idprom.h index d856e640acd3..59083ed85232 100644 --- a/include/asm-sparc/idprom.h +++ b/include/asm-sparc/idprom.h | |||
@@ -7,27 +7,19 @@ | |||
7 | #ifndef _SPARC_IDPROM_H | 7 | #ifndef _SPARC_IDPROM_H |
8 | #define _SPARC_IDPROM_H | 8 | #define _SPARC_IDPROM_H |
9 | 9 | ||
10 | /* Offset into the EEPROM where the id PROM is located on the 4c */ | 10 | #include <linux/types.h> |
11 | #define IDPROM_OFFSET 0x7d8 | ||
12 | 11 | ||
13 | /* On sun4m; physical. */ | 12 | struct idprom { |
14 | /* MicroSPARC(-II) does not decode 31rd bit, but it works. */ | 13 | u8 id_format; /* Format identifier (always 0x01) */ |
15 | #define IDPROM_OFFSET_M 0xfd8 | 14 | u8 id_machtype; /* Machine type */ |
16 | 15 | u8 id_ethaddr[6]; /* Hardware ethernet address */ | |
17 | struct idprom | 16 | s32 id_date; /* Date of manufacture */ |
18 | { | 17 | u32 id_sernum:24; /* Unique serial number */ |
19 | unsigned char id_format; /* Format identifier (always 0x01) */ | 18 | u8 id_cksum; /* Checksum - xor of the data bytes */ |
20 | unsigned char id_machtype; /* Machine type */ | 19 | u8 reserved[16]; |
21 | unsigned char id_ethaddr[6]; /* Hardware ethernet address */ | ||
22 | long id_date; /* Date of manufacture */ | ||
23 | unsigned int id_sernum:24; /* Unique serial number */ | ||
24 | unsigned char id_cksum; /* Checksum - xor of the data bytes */ | ||
25 | unsigned char reserved[16]; | ||
26 | }; | 20 | }; |
27 | 21 | ||
28 | extern struct idprom *idprom; | 22 | extern struct idprom *idprom; |
29 | extern void idprom_init(void); | 23 | extern void idprom_init(void); |
30 | 24 | ||
31 | #define IDPROM_SIZE (sizeof(struct idprom)) | ||
32 | |||
33 | #endif /* !(_SPARC_IDPROM_H) */ | 25 | #endif /* !(_SPARC_IDPROM_H) */ |
diff --git a/include/asm-sparc/oplib.h b/include/asm-sparc/oplib.h index d0d76b30eb4c..f283f8aaf6a9 100644 --- a/include/asm-sparc/oplib.h +++ b/include/asm-sparc/oplib.h | |||
@@ -165,6 +165,7 @@ enum prom_input_device { | |||
165 | PROMDEV_ITTYA, /* input from ttya */ | 165 | PROMDEV_ITTYA, /* input from ttya */ |
166 | PROMDEV_ITTYB, /* input from ttyb */ | 166 | PROMDEV_ITTYB, /* input from ttyb */ |
167 | PROMDEV_IRSC, /* input from rsc */ | 167 | PROMDEV_IRSC, /* input from rsc */ |
168 | PROMDEV_IVCONS, /* input from virtual-console */ | ||
168 | PROMDEV_I_UNK, | 169 | PROMDEV_I_UNK, |
169 | }; | 170 | }; |
170 | 171 | ||
@@ -177,6 +178,7 @@ enum prom_output_device { | |||
177 | PROMDEV_OTTYA, /* to ttya */ | 178 | PROMDEV_OTTYA, /* to ttya */ |
178 | PROMDEV_OTTYB, /* to ttyb */ | 179 | PROMDEV_OTTYB, /* to ttyb */ |
179 | PROMDEV_ORSC, /* to rsc */ | 180 | PROMDEV_ORSC, /* to rsc */ |
181 | PROMDEV_OVCONS, /* to virtual-console */ | ||
180 | PROMDEV_O_UNK, | 182 | PROMDEV_O_UNK, |
181 | }; | 183 | }; |
182 | 184 | ||
diff --git a/include/asm-sparc/pgtable.h b/include/asm-sparc/pgtable.h index b33c35411e82..9eea8f4d41f0 100644 --- a/include/asm-sparc/pgtable.h +++ b/include/asm-sparc/pgtable.h | |||
@@ -269,11 +269,14 @@ BTFIXUPDEF_CALL_CONST(pte_t, mk_pte, struct page *, pgprot_t) | |||
269 | 269 | ||
270 | BTFIXUPDEF_CALL_CONST(pte_t, mk_pte_phys, unsigned long, pgprot_t) | 270 | BTFIXUPDEF_CALL_CONST(pte_t, mk_pte_phys, unsigned long, pgprot_t) |
271 | BTFIXUPDEF_CALL_CONST(pte_t, mk_pte_io, unsigned long, pgprot_t, int) | 271 | BTFIXUPDEF_CALL_CONST(pte_t, mk_pte_io, unsigned long, pgprot_t, int) |
272 | BTFIXUPDEF_CALL_CONST(pgprot_t, pgprot_noncached, pgprot_t) | ||
272 | 273 | ||
273 | #define mk_pte(page,pgprot) BTFIXUP_CALL(mk_pte)(page,pgprot) | 274 | #define mk_pte(page,pgprot) BTFIXUP_CALL(mk_pte)(page,pgprot) |
274 | #define mk_pte_phys(page,pgprot) BTFIXUP_CALL(mk_pte_phys)(page,pgprot) | 275 | #define mk_pte_phys(page,pgprot) BTFIXUP_CALL(mk_pte_phys)(page,pgprot) |
275 | #define mk_pte_io(page,pgprot,space) BTFIXUP_CALL(mk_pte_io)(page,pgprot,space) | 276 | #define mk_pte_io(page,pgprot,space) BTFIXUP_CALL(mk_pte_io)(page,pgprot,space) |
276 | 277 | ||
278 | #define pgprot_noncached(pgprot) BTFIXUP_CALL(pgprot_noncached)(pgprot) | ||
279 | |||
277 | BTFIXUPDEF_INT(pte_modify_mask) | 280 | BTFIXUPDEF_INT(pte_modify_mask) |
278 | 281 | ||
279 | static pte_t pte_modify(pte_t pte, pgprot_t newprot) __attribute_const__; | 282 | static pte_t pte_modify(pte_t pte, pgprot_t newprot) __attribute_const__; |
@@ -309,9 +312,6 @@ BTFIXUPDEF_CALL(pte_t *, pte_offset_kernel, pmd_t *, unsigned long) | |||
309 | #define pte_unmap(pte) do{}while(0) | 312 | #define pte_unmap(pte) do{}while(0) |
310 | #define pte_unmap_nested(pte) do{}while(0) | 313 | #define pte_unmap_nested(pte) do{}while(0) |
311 | 314 | ||
312 | /* The permissions for pgprot_val to make a page mapped on the obio space */ | ||
313 | extern unsigned int pg_iobits; | ||
314 | |||
315 | /* Certain architectures need to do special things when pte's | 315 | /* Certain architectures need to do special things when pte's |
316 | * within a page table are directly modified. Thus, the following | 316 | * within a page table are directly modified. Thus, the following |
317 | * hook is made available. | 317 | * hook is made available. |
diff --git a/include/asm-sparc/poll.h b/include/asm-sparc/poll.h index 3ddcc6481f09..26f13fb35497 100644 --- a/include/asm-sparc/poll.h +++ b/include/asm-sparc/poll.h | |||
@@ -13,6 +13,7 @@ | |||
13 | #define POLLWRBAND 256 | 13 | #define POLLWRBAND 256 |
14 | #define POLLMSG 512 | 14 | #define POLLMSG 512 |
15 | #define POLLREMOVE 1024 | 15 | #define POLLREMOVE 1024 |
16 | #define POLLRDHUP 2048 | ||
16 | 17 | ||
17 | struct pollfd { | 18 | struct pollfd { |
18 | int fd; | 19 | int fd; |
diff --git a/include/asm-sparc/smp.h b/include/asm-sparc/smp.h index 580c51d011df..98c46e3fbe8a 100644 --- a/include/asm-sparc/smp.h +++ b/include/asm-sparc/smp.h | |||
@@ -81,16 +81,9 @@ static inline int smp_call_function(void (*func)(void *info), void *info, int no | |||
81 | return 0; | 81 | return 0; |
82 | } | 82 | } |
83 | 83 | ||
84 | extern __volatile__ int __cpu_number_map[NR_CPUS]; | ||
85 | extern __volatile__ int __cpu_logical_map[NR_CPUS]; | ||
86 | |||
87 | static inline int cpu_logical_map(int cpu) | 84 | static inline int cpu_logical_map(int cpu) |
88 | { | 85 | { |
89 | return __cpu_logical_map[cpu]; | 86 | return cpu; |
90 | } | ||
91 | static inline int cpu_number_map(int cpu) | ||
92 | { | ||
93 | return __cpu_number_map[cpu]; | ||
94 | } | 87 | } |
95 | 88 | ||
96 | static inline int hard_smp4m_processor_id(void) | 89 | static inline int hard_smp4m_processor_id(void) |
diff --git a/include/asm-sparc/socket.h b/include/asm-sparc/socket.h index 09575b608adb..4e0ce3a35ea9 100644 --- a/include/asm-sparc/socket.h +++ b/include/asm-sparc/socket.h | |||
@@ -47,7 +47,7 @@ | |||
47 | #define SO_TIMESTAMP 0x001d | 47 | #define SO_TIMESTAMP 0x001d |
48 | #define SCM_TIMESTAMP SO_TIMESTAMP | 48 | #define SCM_TIMESTAMP SO_TIMESTAMP |
49 | 49 | ||
50 | #define SO_PEERSEC 0x100e | 50 | #define SO_PEERSEC 0x001e |
51 | 51 | ||
52 | /* Security levels - as per NRL IPv6 - don't actually do anything */ | 52 | /* Security levels - as per NRL IPv6 - don't actually do anything */ |
53 | #define SO_SECURITY_AUTHENTICATION 0x5001 | 53 | #define SO_SECURITY_AUTHENTICATION 0x5001 |
diff --git a/include/asm-sparc/spinlock.h b/include/asm-sparc/spinlock.h index e344c98a6f5f..3350c90c7869 100644 --- a/include/asm-sparc/spinlock.h +++ b/include/asm-sparc/spinlock.h | |||
@@ -94,7 +94,7 @@ static inline void __read_lock(raw_rwlock_t *rw) | |||
94 | #define __raw_read_lock(lock) \ | 94 | #define __raw_read_lock(lock) \ |
95 | do { unsigned long flags; \ | 95 | do { unsigned long flags; \ |
96 | local_irq_save(flags); \ | 96 | local_irq_save(flags); \ |
97 | __raw_read_lock(lock); \ | 97 | __read_lock(lock); \ |
98 | local_irq_restore(flags); \ | 98 | local_irq_restore(flags); \ |
99 | } while(0) | 99 | } while(0) |
100 | 100 | ||
@@ -114,11 +114,11 @@ static inline void __read_unlock(raw_rwlock_t *rw) | |||
114 | #define __raw_read_unlock(lock) \ | 114 | #define __raw_read_unlock(lock) \ |
115 | do { unsigned long flags; \ | 115 | do { unsigned long flags; \ |
116 | local_irq_save(flags); \ | 116 | local_irq_save(flags); \ |
117 | __raw_read_unlock(lock); \ | 117 | __read_unlock(lock); \ |
118 | local_irq_restore(flags); \ | 118 | local_irq_restore(flags); \ |
119 | } while(0) | 119 | } while(0) |
120 | 120 | ||
121 | extern __inline__ void __raw_write_lock(raw_rwlock_t *rw) | 121 | static inline void __raw_write_lock(raw_rwlock_t *rw) |
122 | { | 122 | { |
123 | register raw_rwlock_t *lp asm("g1"); | 123 | register raw_rwlock_t *lp asm("g1"); |
124 | lp = rw; | 124 | lp = rw; |
@@ -131,9 +131,28 @@ extern __inline__ void __raw_write_lock(raw_rwlock_t *rw) | |||
131 | : "g2", "g4", "memory", "cc"); | 131 | : "g2", "g4", "memory", "cc"); |
132 | } | 132 | } |
133 | 133 | ||
134 | static inline int __raw_write_trylock(raw_rwlock_t *rw) | ||
135 | { | ||
136 | unsigned int val; | ||
137 | |||
138 | __asm__ __volatile__("ldstub [%1 + 3], %0" | ||
139 | : "=r" (val) | ||
140 | : "r" (&rw->lock) | ||
141 | : "memory"); | ||
142 | |||
143 | if (val == 0) { | ||
144 | val = rw->lock & ~0xff; | ||
145 | if (val) | ||
146 | ((volatile u8*)&rw->lock)[3] = 0; | ||
147 | } | ||
148 | |||
149 | return (val == 0); | ||
150 | } | ||
151 | |||
134 | #define __raw_write_unlock(rw) do { (rw)->lock = 0; } while(0) | 152 | #define __raw_write_unlock(rw) do { (rw)->lock = 0; } while(0) |
135 | 153 | ||
136 | #define __raw_spin_lock_flags(lock, flags) __raw_spin_lock(lock) | 154 | #define __raw_spin_lock_flags(lock, flags) __raw_spin_lock(lock) |
155 | #define __raw_read_trylock(lock) generic__raw_read_trylock(lock) | ||
137 | 156 | ||
138 | #endif /* !(__ASSEMBLY__) */ | 157 | #endif /* !(__ASSEMBLY__) */ |
139 | 158 | ||
diff --git a/include/asm-sparc/uaccess.h b/include/asm-sparc/uaccess.h index f8f1ec1f06e6..3cf132e1aa25 100644 --- a/include/asm-sparc/uaccess.h +++ b/include/asm-sparc/uaccess.h | |||
@@ -120,17 +120,6 @@ case 8: __put_user_asm(x,d,addr,__pu_ret); break; \ | |||
120 | default: __pu_ret = __put_user_bad(); break; \ | 120 | default: __pu_ret = __put_user_bad(); break; \ |
121 | } } else { __pu_ret = -EFAULT; } __pu_ret; }) | 121 | } } else { __pu_ret = -EFAULT; } __pu_ret; }) |
122 | 122 | ||
123 | #define __put_user_check_ret(x,addr,size,retval) ({ \ | ||
124 | register int __foo __asm__ ("l1"); \ | ||
125 | if (__access_ok(addr,size)) { \ | ||
126 | switch (size) { \ | ||
127 | case 1: __put_user_asm_ret(x,b,addr,retval,__foo); break; \ | ||
128 | case 2: __put_user_asm_ret(x,h,addr,retval,__foo); break; \ | ||
129 | case 4: __put_user_asm_ret(x,,addr,retval,__foo); break; \ | ||
130 | case 8: __put_user_asm_ret(x,d,addr,retval,__foo); break; \ | ||
131 | default: if (__put_user_bad()) return retval; break; \ | ||
132 | } } else return retval; }) | ||
133 | |||
134 | #define __put_user_nocheck(x,addr,size) ({ \ | 123 | #define __put_user_nocheck(x,addr,size) ({ \ |
135 | register int __pu_ret; \ | 124 | register int __pu_ret; \ |
136 | switch (size) { \ | 125 | switch (size) { \ |
@@ -141,16 +130,6 @@ case 8: __put_user_asm(x,d,addr,__pu_ret); break; \ | |||
141 | default: __pu_ret = __put_user_bad(); break; \ | 130 | default: __pu_ret = __put_user_bad(); break; \ |
142 | } __pu_ret; }) | 131 | } __pu_ret; }) |
143 | 132 | ||
144 | #define __put_user_nocheck_ret(x,addr,size,retval) ({ \ | ||
145 | register int __foo __asm__ ("l1"); \ | ||
146 | switch (size) { \ | ||
147 | case 1: __put_user_asm_ret(x,b,addr,retval,__foo); break; \ | ||
148 | case 2: __put_user_asm_ret(x,h,addr,retval,__foo); break; \ | ||
149 | case 4: __put_user_asm_ret(x,,addr,retval,__foo); break; \ | ||
150 | case 8: __put_user_asm_ret(x,d,addr,retval,__foo); break; \ | ||
151 | default: if (__put_user_bad()) return retval; break; \ | ||
152 | } }) | ||
153 | |||
154 | #define __put_user_asm(x,size,addr,ret) \ | 133 | #define __put_user_asm(x,size,addr,ret) \ |
155 | __asm__ __volatile__( \ | 134 | __asm__ __volatile__( \ |
156 | "/* Put user asm, inline. */\n" \ | 135 | "/* Put user asm, inline. */\n" \ |
@@ -170,32 +149,6 @@ __asm__ __volatile__( \ | |||
170 | : "=&r" (ret) : "r" (x), "m" (*__m(addr)), \ | 149 | : "=&r" (ret) : "r" (x), "m" (*__m(addr)), \ |
171 | "i" (-EFAULT)) | 150 | "i" (-EFAULT)) |
172 | 151 | ||
173 | #define __put_user_asm_ret(x,size,addr,ret,foo) \ | ||
174 | if (__builtin_constant_p(ret) && ret == -EFAULT) \ | ||
175 | __asm__ __volatile__( \ | ||
176 | "/* Put user asm ret, inline. */\n" \ | ||
177 | "1:\t" "st"#size " %1, %2\n\n\t" \ | ||
178 | ".section __ex_table,#alloc\n\t" \ | ||
179 | ".align 4\n\t" \ | ||
180 | ".word 1b, __ret_efault\n\n\t" \ | ||
181 | ".previous\n\n\t" \ | ||
182 | : "=r" (foo) : "r" (x), "m" (*__m(addr))); \ | ||
183 | else \ | ||
184 | __asm__ __volatile( \ | ||
185 | "/* Put user asm ret, inline. */\n" \ | ||
186 | "1:\t" "st"#size " %1, %2\n\n\t" \ | ||
187 | ".section .fixup,#alloc,#execinstr\n\t" \ | ||
188 | ".align 4\n" \ | ||
189 | "3:\n\t" \ | ||
190 | "ret\n\t" \ | ||
191 | " restore %%g0, %3, %%o0\n\t" \ | ||
192 | ".previous\n\n\t" \ | ||
193 | ".section __ex_table,#alloc\n\t" \ | ||
194 | ".align 4\n\t" \ | ||
195 | ".word 1b, 3b\n\n\t" \ | ||
196 | ".previous\n\n\t" \ | ||
197 | : "=r" (foo) : "r" (x), "m" (*__m(addr)), "i" (ret)) | ||
198 | |||
199 | extern int __put_user_bad(void); | 152 | extern int __put_user_bad(void); |
200 | 153 | ||
201 | #define __get_user_check(x,addr,size,type) ({ \ | 154 | #define __get_user_check(x,addr,size,type) ({ \ |