diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2000-11-28 03:58:46 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2000-11-28 03:58:46 +0000 |
commit | b63ad0882a16a5d28003e57f2b0b81dee3fb322b (patch) | |
tree | 0a343ce219e2b8b38a5d702d66032c57b83d9720 /arch/sparc64/kernel | |
parent | a9d7bff9a84dba79609a0002e5321b74c4d64c64 (diff) |
Merge with 2.4.0-test11.
Diffstat (limited to 'arch/sparc64/kernel')
-rw-r--r-- | arch/sparc64/kernel/dtlb_base.S | 26 | ||||
-rw-r--r-- | arch/sparc64/kernel/dtlb_prot.S | 50 | ||||
-rw-r--r-- | arch/sparc64/kernel/ebus.c | 29 | ||||
-rw-r--r-- | arch/sparc64/kernel/ioctl32.c | 22 | ||||
-rw-r--r-- | arch/sparc64/kernel/itlb_base.S | 30 | ||||
-rw-r--r-- | arch/sparc64/kernel/pci.c | 8 | ||||
-rw-r--r-- | arch/sparc64/kernel/process.c | 17 | ||||
-rw-r--r-- | arch/sparc64/kernel/semaphore.c | 6 | ||||
-rw-r--r-- | arch/sparc64/kernel/sparc64_ksyms.c | 52 | ||||
-rw-r--r-- | arch/sparc64/kernel/sys_sparc32.c | 6 | ||||
-rw-r--r-- | arch/sparc64/kernel/sys_sunos32.c | 4 |
11 files changed, 113 insertions, 137 deletions
diff --git a/arch/sparc64/kernel/dtlb_base.S b/arch/sparc64/kernel/dtlb_base.S index 72120b563..80c74aa18 100644 --- a/arch/sparc64/kernel/dtlb_base.S +++ b/arch/sparc64/kernel/dtlb_base.S @@ -1,4 +1,4 @@ -/* $Id: dtlb_base.S,v 1.7 2000/03/26 09:13:48 davem Exp $ +/* $Id: dtlb_base.S,v 1.8 2000/11/10 08:28:45 davem Exp $ * dtlb_base.S: Front end to DTLB miss replacement strategy. * This is included directly into the trap table. * @@ -57,7 +57,7 @@ srax %g4, VPTE_SHIFT, %g6 ! Create VPTE offset ldxa [%g3 + %g6] ASI_S, %g5 ! Load VPTE 1: brlz,pt %g5, 9f ! Valid, load into TLB - and %g5, (_PAGE_PRESENT|_PAGE_READ), %g4 ! Mask readable bits + nop ! Delay-slot ba,a,pt %xcc, 4f ! Invalid, branch out /* DTLB ** ICACHE line 2: Quick kernel TLB misses */ @@ -68,27 +68,27 @@ nop 9: stxa %g5, [%g0] ASI_DTLB_DATA_IN ! Reload TLB retry ! Trap return - nop +4: rdpr %pstate, %g5 ! Move into alternate globals /* DTLB ** ICACHE line 3: winfixups+real_faults */ -4: cmp %g4, (_PAGE_PRESENT|_PAGE_READ) ! Readable page? - be,pn %xcc, 5f ! Yep, refbit update - sllx %g1, 60, %g4 ! Get valid bit - rdpr %pstate, %g5 ! Move into alternate globals wrpr %g5, PSTATE_AG|PSTATE_MG, %pstate rdpr %tl, %g4 ! See where we came from. cmp %g4, 1 ! Is etrap/rtrap window fault? mov TLB_TAG_ACCESS, %g4 ! Prepare for fault processing - -/* DTLB ** ICACHE line 4: padding */ ldxa [%g4] ASI_DMMU, %g5 ! Load faulting VA page be,pt %xcc, sparc64_realfault_common ! Jump to normal fault handling mov FAULT_CODE_DTLB, %g4 ! It was read from DTLB ba,a,pt %xcc, winfix_trampoline ! Call window fixup code -5: or %g5, _PAGE_ACCESSED, %g5 ! Indicate reference - or %g5, %g4, %g5 ! Set valid - stxa %g5, [%g3 + %g6] ASI_S ! Update PTE table (cant trap) - ba,a,pt %xcc, 9b ! Complete tlb miss + +/* DTLB ** ICACHE line 4: Unused... */ + nop + nop + nop + nop + nop + nop + nop + nop #undef TAG_CONTEXT_BITS #undef VPTE_SHIFT diff --git a/arch/sparc64/kernel/dtlb_prot.S b/arch/sparc64/kernel/dtlb_prot.S index 5e99d5d47..1da370c7c 100644 --- a/arch/sparc64/kernel/dtlb_prot.S +++ b/arch/sparc64/kernel/dtlb_prot.S @@ -1,4 +1,4 @@ -/* $Id: dtlb_prot.S,v 1.20 2000/03/26 09:13:48 davem Exp $ +/* $Id: dtlb_prot.S,v 1.21 2000/11/10 08:28:45 davem Exp $ * dtlb_prot.S: DTLB protection trap strategy. * This is included directly into the trap table. * @@ -6,10 +6,6 @@ * Copyright (C) 1997,1998 Jakub Jelinek (jj@ultra.linux.cz) */ -#define TAG_CONTEXT_BITS 0x3ff -#define VPTE_SHIFT (PAGE_SHIFT - 3) -#define MODIFIED_BITS (_PAGE_WRITE | _PAGE_W | _PAGE_MODIFIED | _PAGE_ACCESSED) - /* Ways we can get here: * * [TL == 0] 1) User stores to readonly pages. @@ -18,45 +14,41 @@ */ /* PROT ** ICACHE line 1: User DTLB protection trap */ - ldxa [%g1] ASI_DMMU, %g6 ! Primary or Secondary ctx? - and %g6, 0x10, %g6 ! Get pri/sec ctx bit stxa %g0, [%g1] ASI_DMMU ! Clear SFSR FaultValid bit membar #Sync ! Synchronize ASI stores - ldxa [%g1 + %g1] ASI_DMMU, %g4 ! Load TAG_ACCESS - andn %g4, TAG_CONTEXT_BITS, %g4 ! Clear CTX bits - stxa %g0, [%g4 + %g6] ASI_DMMU_DEMAP ! Perform TLB flush of page - membar #Sync ! Synchronize ASI stores - -/* PROT ** ICACHE line 2: Further normal processing */ - srax %g4, VPTE_SHIFT, %g6 ! Compute VPTE offset - ldxa [%g3 + %g6] ASI_S, %g5 ! Load PTE entry - andcc %g5, _PAGE_WRITE, %g0 ! Writable page? - be,pt %xcc, 1f ! Nope, real fault - or %g5, (MODIFIED_BITS), %g5 ! Mark as writable/modified - stxa %g5, [%g3 + %g6] ASI_S ! Update PTE entry - stxa %g5, [%g0] ASI_DTLB_DATA_IN ! Load PTE into TLB - retry ! Trap return - -/* PROT ** ICACHE line 3: Real user faults */ -1: rdpr %pstate, %g5 ! Move into alternate globals + rdpr %pstate, %g5 ! Move into alternate globals wrpr %g5, PSTATE_AG|PSTATE_MG, %pstate rdpr %tl, %g1 ! Need to do a winfixup? cmp %g1, 1 ! Trap level >1? mov TLB_TAG_ACCESS, %g4 ! Prepare reload of vaddr + nop + +/* PROT ** ICACHE line 2: More real fault processing */ bgu,pn %xcc, winfix_trampoline ! Yes, perform winfixup ldxa [%g4] ASI_DMMU, %g5 ! Put tagaccess in %g5 ba,pt %xcc, sparc64_realfault_common ! Nope, normal fault - -/* PROT ** ICACHE line 4: More real fault processing */ mov FAULT_CODE_DTLB | FAULT_CODE_WRITE, %g4 nop nop nop nop + +/* PROT ** ICACHE line 3: Unused... */ + nop + nop + nop + nop + nop nop nop nop -#undef TAG_CONTEXT_BITS -#undef VPTE_SHIFT -#undef MODIFIED_BITS +/* PROT ** ICACHE line 3: Unused... */ + nop + nop + nop + nop + nop + nop + nop + nop diff --git a/arch/sparc64/kernel/ebus.c b/arch/sparc64/kernel/ebus.c index 5872046b1..e175fac27 100644 --- a/arch/sparc64/kernel/ebus.c +++ b/arch/sparc64/kernel/ebus.c @@ -1,4 +1,4 @@ -/* $Id: ebus.c,v 1.48 2000/08/02 06:22:35 davem Exp $ +/* $Id: ebus.c,v 1.53 2000/11/08 05:08:23 davem Exp $ * ebus.c: PCI to EBus bridge device. * * Copyright (C) 1997 Eddie C. Dost (ecd@skynet.be) @@ -22,21 +22,9 @@ struct linux_ebus *ebus_chain = 0; -#ifdef CONFIG_SUN_OPENPROMIO -extern int openprom_init(void); -#endif #ifdef CONFIG_SUN_AUXIO extern void auxio_probe(void); #endif -#ifdef CONFIG_OBP_FLASH -extern int flash_init(void); -#endif -#ifdef CONFIG_ENVCTRL -extern int envctrl_init(void); -#endif -#ifdef CONFIG_DISPLAY7SEG -extern int d7s_init(void); -#endif static inline void *ebus_alloc(size_t size) { @@ -372,24 +360,9 @@ void __init ebus_init(void) ++num_ebus; } -#ifdef CONFIG_SUN_OPENPROMIO - openprom_init(); -#endif -#ifdef CONFIG_SUN_BPP - bpp_init(); -#endif #ifdef CONFIG_SUN_AUXIO auxio_probe(); #endif -#ifdef CONFIG_ENVCTRL - envctrl_init(); -#endif -#ifdef CONFIG_OBP_FLASH - flash_init(); -#endif -#ifdef CONFIG_DISPLAY7SEG - d7s_init(); -#endif clock_probe(); power_init(); } diff --git a/arch/sparc64/kernel/ioctl32.c b/arch/sparc64/kernel/ioctl32.c index 9f7cd59e9..a510c2aff 100644 --- a/arch/sparc64/kernel/ioctl32.c +++ b/arch/sparc64/kernel/ioctl32.c @@ -1,4 +1,4 @@ -/* $Id: ioctl32.c,v 1.99 2000/10/17 16:20:33 davem Exp $ +/* $Id: ioctl32.c,v 1.103 2000/11/10 05:44:33 davem Exp $ * ioctl32.c: Conversion between 32bit and 64bit native ioctls. * * Copyright (C) 1997-2000 Jakub Jelinek (jakub@redhat.com) @@ -71,8 +71,9 @@ #include <asm/openpromio.h> #include <asm/envctrl.h> #include <asm/audioio.h> -#include <asm/ethtool.h> +#include <linux/ethtool.h> #include <asm/display7seg.h> +#include <asm/module.h> #include <linux/soundcard.h> #include <linux/atm.h> @@ -3230,6 +3231,7 @@ COMPATIBLE_IOCTL(ENVCTRL_RD_SCSI_TEMPERATURE) COMPATIBLE_IOCTL(ENVCTRL_RD_ETHERNET_TEMPERATURE) COMPATIBLE_IOCTL(ENVCTRL_RD_MTHRBD_TEMPERATURE) COMPATIBLE_IOCTL(ENVCTRL_RD_CPU_VOLTAGE) +COMPATIBLE_IOCTL(ENVCTRL_RD_GLOBALADDRESS) /* COMPATIBLE_IOCTL(D7SIOCRD) same value as ENVCTRL_RD_VOLTAGE_STATUS */ COMPATIBLE_IOCTL(D7SIOCWR) COMPATIBLE_IOCTL(D7SIOCTM) @@ -3467,6 +3469,14 @@ COMPATIBLE_IOCTL(SOUND_MIXER_READ_OGAIN) COMPATIBLE_IOCTL(SOUND_MIXER_READ_LINE1) COMPATIBLE_IOCTL(SOUND_MIXER_READ_LINE2) COMPATIBLE_IOCTL(SOUND_MIXER_READ_LINE3) +COMPATIBLE_IOCTL(MIXER_READ(SOUND_MIXER_DIGITAL1)) +COMPATIBLE_IOCTL(MIXER_READ(SOUND_MIXER_DIGITAL2)) +COMPATIBLE_IOCTL(MIXER_READ(SOUND_MIXER_DIGITAL3)) +COMPATIBLE_IOCTL(MIXER_READ(SOUND_MIXER_PHONEIN)) +COMPATIBLE_IOCTL(MIXER_READ(SOUND_MIXER_PHONEOUT)) +COMPATIBLE_IOCTL(MIXER_READ(SOUND_MIXER_VIDEO)) +COMPATIBLE_IOCTL(MIXER_READ(SOUND_MIXER_RADIO)) +COMPATIBLE_IOCTL(MIXER_READ(SOUND_MIXER_MONITOR)) COMPATIBLE_IOCTL(SOUND_MIXER_READ_MUTE) /* SOUND_MIXER_READ_ENHANCE, same value as READ_MUTE */ /* SOUND_MIXER_READ_LOUD, same value as READ_MUTE */ @@ -3492,6 +3502,14 @@ COMPATIBLE_IOCTL(SOUND_MIXER_WRITE_OGAIN) COMPATIBLE_IOCTL(SOUND_MIXER_WRITE_LINE1) COMPATIBLE_IOCTL(SOUND_MIXER_WRITE_LINE2) COMPATIBLE_IOCTL(SOUND_MIXER_WRITE_LINE3) +COMPATIBLE_IOCTL(MIXER_WRITE(SOUND_MIXER_DIGITAL1)) +COMPATIBLE_IOCTL(MIXER_WRITE(SOUND_MIXER_DIGITAL2)) +COMPATIBLE_IOCTL(MIXER_WRITE(SOUND_MIXER_DIGITAL3)) +COMPATIBLE_IOCTL(MIXER_WRITE(SOUND_MIXER_PHONEIN)) +COMPATIBLE_IOCTL(MIXER_WRITE(SOUND_MIXER_PHONEOUT)) +COMPATIBLE_IOCTL(MIXER_WRITE(SOUND_MIXER_VIDEO)) +COMPATIBLE_IOCTL(MIXER_WRITE(SOUND_MIXER_RADIO)) +COMPATIBLE_IOCTL(MIXER_WRITE(SOUND_MIXER_MONITOR)) COMPATIBLE_IOCTL(SOUND_MIXER_WRITE_MUTE) /* SOUND_MIXER_WRITE_ENHANCE, same value as WRITE_MUTE */ /* SOUND_MIXER_WRITE_LOUD, same value as WRITE_MUTE */ diff --git a/arch/sparc64/kernel/itlb_base.S b/arch/sparc64/kernel/itlb_base.S index 7f0da3d14..bd6a3603d 100644 --- a/arch/sparc64/kernel/itlb_base.S +++ b/arch/sparc64/kernel/itlb_base.S @@ -1,4 +1,4 @@ -/* $Id: itlb_base.S,v 1.9 2000/03/26 09:13:48 davem Exp $ +/* $Id: itlb_base.S,v 1.10 2000/11/10 08:28:45 davem Exp $ * itlb_base.S: Front end to ITLB miss replacement strategy. * This is included directly into the trap table. * @@ -23,22 +23,13 @@ srax %g4, VPTE_SHIFT, %g6 ! Create VPTE offset ldxa [%g3 + %g6] ASI_P, %g5 ! Load VPTE 1: brgez,pn %g5, 3f ! Not valid, branch out - and %g5, (_PAGE_PRESENT|_PAGE_READ), %g4 ! Mask readable bits + nop ! Delay-slot 2: stxa %g5, [%g0] ASI_ITLB_DATA_IN ! Load PTE into TLB retry ! Trap return -3: cmp %g4, (_PAGE_PRESENT|_PAGE_READ) ! Readable page? +3: rdpr %pstate, %g4 ! Move into alternate globals -/* ITLB ** ICACHE line 2: Quick user ref updates */ - bne,pn %xcc, 4f ! Nope, real missing page - sllx %g1, 60, %g4 ! Sliiickkk... - or %g5, _PAGE_ACCESSED, %g5 ! Mark as touched - or %g5, %g4, %g5 ! Allow user to see it - ba,pt %xcc, 2b ! Branch to load TLB - stxa %g5, [%g3 + %g6] ASI_S ! Update PTE table -4: rdpr %pstate, %g4 ! Move into alternate globals +/* ITLB ** ICACHE line 2: Real faults */ wrpr %g4, PSTATE_AG|PSTATE_MG, %pstate - -/* ITLB ** ICACHE line 3: Real faults */ rdpr %tpc, %g5 ! And load faulting VA mov FAULT_CODE_ITLB, %g4 ! It was read from ITLB sparc64_realfault_common: ! Called by TL0 dtlb_miss too @@ -46,10 +37,11 @@ sparc64_realfault_common: ! Called by TL0 dtlb_miss too stx %g5, [%g6 + AOFF_task_thread + AOFF_thread_fault_address] ba,pt %xcc, etrap ! Save state 1: rd %pc, %g7 ! ... + nop + +/* ITLB ** ICACHE line 3: Finish faults + window fixups */ call do_sparc64_fault ! Call fault handler add %sp, STACK_BIAS + REGWIN_SZ, %o0! Compute pt_regs arg - -/* ITLB ** ICACHE line 4: Finish faults + window fixups */ ba,pt %xcc, rtrap_clr_l6 ! Restore cpu state nop winfix_trampoline: @@ -57,6 +49,14 @@ winfix_trampoline: or %g3, 0x7c, %g3 ! Compute offset to branch wrpr %g3, %tnpc ! Write it into TNPC done ! Do it to it + +/* ITLB ** ICACHE line 4: Unused... */ + nop + nop + nop + nop + nop + nop nop nop diff --git a/arch/sparc64/kernel/pci.c b/arch/sparc64/kernel/pci.c index dd153a24e..1abef824f 100644 --- a/arch/sparc64/kernel/pci.c +++ b/arch/sparc64/kernel/pci.c @@ -1,4 +1,4 @@ -/* $Id: pci.c,v 1.18 2000/10/03 11:31:42 anton Exp $ +/* $Id: pci.c,v 1.19 2000/11/08 04:49:17 davem Exp $ * pci.c: UltraSparc PCI controller support. * * Copyright (C) 1997, 1998, 1999 David S. Miller (davem@redhat.com) @@ -202,12 +202,6 @@ void pcibios_update_irq(struct pci_dev *pdev, int irq) { } -unsigned long resource_fixup(struct pci_dev *pdev, struct resource *res, - unsigned long start, unsigned long size) -{ - return start; -} - void pcibios_fixup_pbus_ranges(struct pci_bus *pbus, struct pbus_set_ranges_data *pranges) { diff --git a/arch/sparc64/kernel/process.c b/arch/sparc64/kernel/process.c index 1f3386d53..4534ad59b 100644 --- a/arch/sparc64/kernel/process.c +++ b/arch/sparc64/kernel/process.c @@ -1,4 +1,4 @@ -/* $Id: process.c,v 1.112 2000/09/06 00:45:01 davem Exp $ +/* $Id: process.c,v 1.113 2000/11/08 08:14:58 davem Exp $ * arch/sparc64/kernel/process.c * * Copyright (C) 1995, 1996 David S. Miller (davem@caip.rutgers.edu) @@ -647,14 +647,21 @@ pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) { long retval; - __asm__ __volatile("mov %1, %%g1\n\t" + /* If the parent runs before fn(arg) is called by the child, + * the input registers of this function can be clobbered. + * So we stash 'fn' and 'arg' into global registers which + * will not be modified by the parent. + */ + __asm__ __volatile("mov %4, %%g2\n\t" /* Save FN into global */ + "mov %5, %%g3\n\t" /* Save ARG into global */ + "mov %1, %%g1\n\t" /* Clone syscall nr. */ "mov %2, %%o0\n\t" /* Clone flags. */ "mov 0, %%o1\n\t" /* usp arg == 0 */ "t 0x6d\n\t" /* Linux/Sparc clone(). */ "brz,a,pn %%o1, 1f\n\t" /* Parent, just return. */ " mov %%o0, %0\n\t" - "jmpl %4, %%o7\n\t" /* Call the function. */ - " mov %5, %%o0\n\t" /* Set arg in delay. */ + "jmpl %%g2, %%o7\n\t" /* Call the function. */ + " mov %%g3, %%o0\n\t" /* Set arg in delay. */ "mov %3, %%g1\n\t" "t 0x6d\n\t" /* Linux/Sparc exit(). */ /* Notreached by child. */ @@ -662,7 +669,7 @@ pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) "=r" (retval) : "i" (__NR_clone), "r" (flags | CLONE_VM), "i" (__NR_exit), "r" (fn), "r" (arg) : - "g1", "o0", "o1", "memory", "cc"); + "g1", "g2", "g3", "o0", "o1", "memory", "cc"); return retval; } diff --git a/arch/sparc64/kernel/semaphore.c b/arch/sparc64/kernel/semaphore.c index 8cb6e7211..1928d5a0d 100644 --- a/arch/sparc64/kernel/semaphore.c +++ b/arch/sparc64/kernel/semaphore.c @@ -1,4 +1,4 @@ -/* $Id: semaphore.c,v 1.4 2000/10/14 10:09:00 davem Exp $ +/* $Id: semaphore.c,v 1.5 2000/11/10 04:02:03 davem Exp $ * Generic semaphore code. Buyer beware. Do your own * specific changes in <asm/semaphore-helper.h> */ @@ -223,7 +223,7 @@ void down_write_failed_biased(struct rw_semaphore *sem) for (;;) { if (test_and_clear_le_bit(1, &sem->granted)) break; - set_task_state(tsk, TASK_UNINTERRUPTIBLE | TASK_EXCLUSIVE); + set_task_state(tsk, TASK_UNINTERRUPTIBLE); if (!test_le_bit(1, &sem->granted)) schedule(); } @@ -273,7 +273,7 @@ void down_write_failed(struct rw_semaphore *sem) add_wait_queue_exclusive(&sem->wait, &wait); while (sem->count < 0) { - set_task_state(tsk, TASK_UNINTERRUPTIBLE | TASK_EXCLUSIVE); + set_task_state(tsk, TASK_UNINTERRUPTIBLE); if (sem->count >= 0) break; /* we must attempt to acquire or bias the lock */ schedule(); diff --git a/arch/sparc64/kernel/sparc64_ksyms.c b/arch/sparc64/kernel/sparc64_ksyms.c index 6e7f59309..e1ae982bf 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.95 2000/10/30 21:01:40 davem Exp $ +/* $Id: sparc64_ksyms.c,v 1.98 2000/11/13 10:03:32 davem Exp $ * arch/sparc64/kernel/sparc64_ksyms.c: Sparc64 specific ksyms support. * * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) @@ -87,7 +87,6 @@ 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 int __ashrdi3(int, int); @@ -110,25 +109,14 @@ extern void _do_write_unlock(rwlock_t *rw); extern unsigned long phys_base; -/* One thing to note is that the way the symbols of the mul/div - * support routines are named is a mess, they all start with - * a '.' which makes it a bitch to export, here is the trick: - */ - -#define EXPORT_SYMBOL_PRIVATE(sym) \ -extern int __sparc_priv_ ## sym (int) __asm__("__" #sym); \ -const struct module_symbol __export_priv_##sym \ -__attribute__((section("__ksymtab"))) = \ -{ (unsigned long) &__sparc_priv_ ## sym, "__" #sym } - /* used by various drivers */ #ifdef CONFIG_SMP #ifndef SPIN_LOCK_DEBUG /* Out of line rw-locking implementation. */ -EXPORT_SYMBOL_PRIVATE(read_lock); -EXPORT_SYMBOL_PRIVATE(read_unlock); -EXPORT_SYMBOL_PRIVATE(write_lock); -EXPORT_SYMBOL_PRIVATE(write_unlock); +EXPORT_SYMBOL(__read_lock); +EXPORT_SYMBOL(__read_unlock); +EXPORT_SYMBOL(__write_lock); +EXPORT_SYMBOL(__write_unlock); #endif /* Kernel wide locking */ @@ -137,10 +125,10 @@ EXPORT_SYMBOL(kernel_flag); /* Hard IRQ locking */ EXPORT_SYMBOL(global_irq_holder); EXPORT_SYMBOL(synchronize_irq); -EXPORT_SYMBOL_PRIVATE(global_cli); -EXPORT_SYMBOL_PRIVATE(global_sti); -EXPORT_SYMBOL_PRIVATE(global_save_flags); -EXPORT_SYMBOL_PRIVATE(global_restore_flags); +EXPORT_SYMBOL(__global_cli); +EXPORT_SYMBOL(__global_sti); +EXPORT_SYMBOL(__global_save_flags); +EXPORT_SYMBOL(__global_restore_flags); /* Per-CPU information table */ EXPORT_SYMBOL(cpu_data); @@ -163,27 +151,33 @@ EXPORT_SYMBOL(_do_write_unlock); #endif +/* semaphores */ +EXPORT_SYMBOL(__down); +EXPORT_SYMBOL(__down_interruptible); +EXPORT_SYMBOL(__down_trylock); +EXPORT_SYMBOL(__up); + /* rw semaphores */ EXPORT_SYMBOL_NOVERS(__down_read_failed); EXPORT_SYMBOL_NOVERS(__down_write_failed); EXPORT_SYMBOL_NOVERS(__rwsem_wake); /* Atomic counter implementation. */ -EXPORT_SYMBOL_PRIVATE(atomic_add); -EXPORT_SYMBOL_PRIVATE(atomic_sub); +EXPORT_SYMBOL(__atomic_add); +EXPORT_SYMBOL(__atomic_sub); /* Atomic bit operations. */ -EXPORT_SYMBOL_PRIVATE(test_and_set_bit); -EXPORT_SYMBOL_PRIVATE(test_and_clear_bit); -EXPORT_SYMBOL_PRIVATE(test_and_change_bit); -EXPORT_SYMBOL_PRIVATE(test_and_set_le_bit); -EXPORT_SYMBOL_PRIVATE(test_and_clear_le_bit); +EXPORT_SYMBOL(__test_and_set_bit); +EXPORT_SYMBOL(__test_and_clear_bit); +EXPORT_SYMBOL(__test_and_change_bit); +EXPORT_SYMBOL(__test_and_set_le_bit); +EXPORT_SYMBOL(__test_and_clear_le_bit); EXPORT_SYMBOL(ivector_table); EXPORT_SYMBOL(enable_irq); EXPORT_SYMBOL(disable_irq); -EXPORT_SYMBOL_PRIVATE(flushw_user); +EXPORT_SYMBOL(__flushw_user); EXPORT_SYMBOL(__flush_dcache_page); diff --git a/arch/sparc64/kernel/sys_sparc32.c b/arch/sparc64/kernel/sys_sparc32.c index 24c8cd593..9b211d86d 100644 --- a/arch/sparc64/kernel/sys_sparc32.c +++ b/arch/sparc64/kernel/sys_sparc32.c @@ -1,4 +1,4 @@ -/* $Id: sys_sparc32.c,v 1.165 2000/10/10 04:47:31 davem Exp $ +/* $Id: sys_sparc32.c,v 1.166 2000/11/10 04:49:56 davem Exp $ * sys_sparc32.c: Conversion between 32bit and 64bit native syscalls. * * Copyright (C) 1997,1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz) @@ -2952,7 +2952,7 @@ static int copy_strings32(int argc, u32 * argv, struct linux_binprm *bprm) return -ENOMEM; new = 1; } - kaddr = (char *)kmap(page); + kaddr = kmap(page); if (new && offset) memset(kaddr, 0, offset); @@ -2967,7 +2967,7 @@ static int copy_strings32(int argc, u32 * argv, struct linux_binprm *bprm) err = copy_from_user(kaddr + offset, (char *)A(str), bytes_to_copy); flush_page_to_ram(page); - kunmap((unsigned long)kaddr); + kunmap(page); if (err) return -EFAULT; diff --git a/arch/sparc64/kernel/sys_sunos32.c b/arch/sparc64/kernel/sys_sunos32.c index 75d5c096e..a5f5411f5 100644 --- a/arch/sparc64/kernel/sys_sunos32.c +++ b/arch/sparc64/kernel/sys_sunos32.c @@ -601,7 +601,6 @@ sunos_nfs_get_server_fd (int fd, struct sockaddr_in *addr) int try_port; int ret; struct socket *socket; - struct dentry *dentry; struct inode *inode; struct file *file; @@ -609,8 +608,7 @@ sunos_nfs_get_server_fd (int fd, struct sockaddr_in *addr) if(!file) return 0; - dentry = file->f_dentry; - inode = dentry->d_inode; + inode = file->f_dentry->d_inode; socket = &inode->u.socket_i; local.sin_family = AF_INET; |