Commit 54c26687 authored by Linus Torvalds's avatar Linus Torvalds

Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6:
  sparc: Fix asm/signal.h for 32-bit.
  sparc: Eliminate PROMLIB_INTERNAL as it does nothing
  sparc: Kill exports of prom internal functions
  sparc64: move EXPORT_SYMBOL to the symbols definition
  sparc: move EXPORT_SYMBOL to the symbols definition
  sparc: Create a new file lib/ksyms.c and add export of all symbols defined in assembler in lib/ to this file.
  sparc: Most unaligned_64.c tweaks for branch tracer warnings.
  sparc: Fix sun4d_irq.c build.
  sparc: Update 32-bit defconfig.
  sparc64: fix warnings in psycho_common after ull conversion
parents ddb4a9dd fc4dbea7
This diff is collapsed.
...@@ -177,17 +177,6 @@ extern void prom_putsegment(int context, unsigned long virt_addr, ...@@ -177,17 +177,6 @@ extern void prom_putsegment(int context, unsigned long virt_addr,
/* PROM device tree traversal functions... */ /* PROM device tree traversal functions... */
#ifdef PROMLIB_INTERNAL
/* Internal version of prom_getchild. */
extern int __prom_getchild(int parent_node);
/* Internal version of prom_getsibling. */
extern int __prom_getsibling(int node);
#endif
/* Get the child node of the given node, or zero if no child exists. */ /* Get the child node of the given node, or zero if no child exists. */
extern int prom_getchild(int parent_node); extern int prom_getchild(int parent_node);
......
...@@ -218,16 +218,6 @@ extern void prom_unmap(unsigned long size, unsigned long vaddr); ...@@ -218,16 +218,6 @@ extern void prom_unmap(unsigned long size, unsigned long vaddr);
/* PROM device tree traversal functions... */ /* PROM device tree traversal functions... */
#ifdef PROMLIB_INTERNAL
/* Internal version of prom_getchild. */
extern int __prom_getchild(int parent_node);
/* Internal version of prom_getsibling. */
extern int __prom_getsibling(int node);
#endif
/* Get the child node of the given node, or zero if no child exists. */ /* Get the child node of the given node, or zero if no child exists. */
extern int prom_getchild(int parent_node); extern int prom_getchild(int parent_node);
......
...@@ -84,7 +84,11 @@ ...@@ -84,7 +84,11 @@
#define __OLD_NSIG 32 #define __OLD_NSIG 32
#define __NEW_NSIG 64 #define __NEW_NSIG 64
#ifdef __arch64__
#define _NSIG_BPW 64 #define _NSIG_BPW 64
#else
#define _NSIG_BPW 32
#endif
#define _NSIG_WORDS (__NEW_NSIG / _NSIG_BPW) #define _NSIG_WORDS (__NEW_NSIG / _NSIG_BPW)
#define SIGRTMIN 32 #define SIGRTMIN 32
......
...@@ -76,6 +76,7 @@ unsigned char get_auxio(void) ...@@ -76,6 +76,7 @@ unsigned char get_auxio(void)
return sbus_readb(auxio_register); return sbus_readb(auxio_register);
return 0; return 0;
} }
EXPORT_SYMBOL(get_auxio);
void set_auxio(unsigned char bits_on, unsigned char bits_off) void set_auxio(unsigned char bits_on, unsigned char bits_off)
{ {
...@@ -102,7 +103,7 @@ void set_auxio(unsigned char bits_on, unsigned char bits_off) ...@@ -102,7 +103,7 @@ void set_auxio(unsigned char bits_on, unsigned char bits_off)
}; };
spin_unlock_irqrestore(&auxio_lock, flags); spin_unlock_irqrestore(&auxio_lock, flags);
} }
EXPORT_SYMBOL(set_auxio);
/* sun4m power control register (AUXIO2) */ /* sun4m power control register (AUXIO2) */
......
...@@ -72,6 +72,7 @@ void auxio_set_led(int on) ...@@ -72,6 +72,7 @@ void auxio_set_led(int on)
bit = (ebus ? AUXIO_PCIO_LED : AUXIO_AUX1_LED); bit = (ebus ? AUXIO_PCIO_LED : AUXIO_AUX1_LED);
__auxio_set_bit(bit, on, ebus); __auxio_set_bit(bit, on, ebus);
} }
EXPORT_SYMBOL(auxio_set_led);
static void __auxio_sbus_set_lte(int on) static void __auxio_sbus_set_lte(int on)
{ {
...@@ -90,6 +91,7 @@ void auxio_set_lte(int on) ...@@ -90,6 +91,7 @@ void auxio_set_lte(int on)
break; break;
} }
} }
EXPORT_SYMBOL(auxio_set_lte);
static struct of_device_id __initdata auxio_match[] = { static struct of_device_id __initdata auxio_match[] = {
{ {
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
*/ */
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/smp.h> #include <linux/smp.h>
#include <linux/threads.h> #include <linux/threads.h>
...@@ -20,6 +21,7 @@ ...@@ -20,6 +21,7 @@
#include "kernel.h" #include "kernel.h"
DEFINE_PER_CPU(cpuinfo_sparc, __cpu_data) = { 0 }; DEFINE_PER_CPU(cpuinfo_sparc, __cpu_data) = { 0 };
EXPORT_PER_CPU_SYMBOL(__cpu_data);
struct cpu_info { struct cpu_info {
int psr_vers; int psr_vers;
......
...@@ -8,11 +8,14 @@ ...@@ -8,11 +8,14 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/module.h>
#include <asm/oplib.h> #include <asm/oplib.h>
#include <asm/idprom.h> #include <asm/idprom.h>
struct idprom *idprom; struct idprom *idprom;
EXPORT_SYMBOL(idprom);
static struct idprom idprom_buffer; static struct idprom idprom_buffer;
#ifdef CONFIG_SPARC32 #ifdef CONFIG_SPARC32
......
...@@ -120,6 +120,7 @@ void __iomem *ioremap(unsigned long offset, unsigned long size) ...@@ -120,6 +120,7 @@ void __iomem *ioremap(unsigned long offset, unsigned long size)
sprintf(name, "phys_%08x", (u32)offset); sprintf(name, "phys_%08x", (u32)offset);
return _sparc_alloc_io(0, offset, size, name); return _sparc_alloc_io(0, offset, size, name);
} }
EXPORT_SYMBOL(ioremap);
/* /*
* Comlimentary to ioremap(). * Comlimentary to ioremap().
...@@ -141,6 +142,7 @@ void iounmap(volatile void __iomem *virtual) ...@@ -141,6 +142,7 @@ void iounmap(volatile void __iomem *virtual)
kfree(res); kfree(res);
} }
} }
EXPORT_SYMBOL(iounmap);
void __iomem *of_ioremap(struct resource *res, unsigned long offset, void __iomem *of_ioremap(struct resource *res, unsigned long offset,
unsigned long size, char *name) unsigned long size, char *name)
...@@ -237,6 +239,7 @@ void sbus_set_sbus64(struct device *dev, int x) ...@@ -237,6 +239,7 @@ void sbus_set_sbus64(struct device *dev, int x)
{ {
printk("sbus_set_sbus64: unsupported\n"); printk("sbus_set_sbus64: unsupported\n");
} }
EXPORT_SYMBOL(sbus_set_sbus64);
/* /*
* Allocate a chunk of memory suitable for DMA. * Allocate a chunk of memory suitable for DMA.
...@@ -436,6 +439,7 @@ void *pci_alloc_consistent(struct pci_dev *pdev, size_t len, dma_addr_t *pba) ...@@ -436,6 +439,7 @@ void *pci_alloc_consistent(struct pci_dev *pdev, size_t len, dma_addr_t *pba)
*pba = virt_to_phys(va); /* equals virt_to_bus (R.I.P.) for us. */ *pba = virt_to_phys(va); /* equals virt_to_bus (R.I.P.) for us. */
return (void *) res->start; return (void *) res->start;
} }
EXPORT_SYMBOL(pci_alloc_consistent);
/* Free and unmap a consistent DMA buffer. /* Free and unmap a consistent DMA buffer.
* cpu_addr is what was returned from pci_alloc_consistent, * cpu_addr is what was returned from pci_alloc_consistent,
...@@ -477,6 +481,7 @@ void pci_free_consistent(struct pci_dev *pdev, size_t n, void *p, dma_addr_t ba) ...@@ -477,6 +481,7 @@ void pci_free_consistent(struct pci_dev *pdev, size_t n, void *p, dma_addr_t ba)
free_pages(pgp, get_order(n)); free_pages(pgp, get_order(n));
} }
EXPORT_SYMBOL(pci_free_consistent);
/* Map a single buffer of the indicated size for DMA in streaming mode. /* Map a single buffer of the indicated size for DMA in streaming mode.
* The 32-bit bus address to use is returned. * The 32-bit bus address to use is returned.
...@@ -491,6 +496,7 @@ dma_addr_t pci_map_single(struct pci_dev *hwdev, void *ptr, size_t size, ...@@ -491,6 +496,7 @@ dma_addr_t pci_map_single(struct pci_dev *hwdev, void *ptr, size_t size,
/* IIep is write-through, not flushing. */ /* IIep is write-through, not flushing. */
return virt_to_phys(ptr); return virt_to_phys(ptr);
} }
EXPORT_SYMBOL(pci_map_single);
/* Unmap a single streaming mode DMA translation. The dma_addr and size /* Unmap a single streaming mode DMA translation. The dma_addr and size
* must match what was provided for in a previous pci_map_single call. All * must match what was provided for in a previous pci_map_single call. All
...@@ -508,6 +514,7 @@ void pci_unmap_single(struct pci_dev *hwdev, dma_addr_t ba, size_t size, ...@@ -508,6 +514,7 @@ void pci_unmap_single(struct pci_dev *hwdev, dma_addr_t ba, size_t size,
(size + PAGE_SIZE-1) & PAGE_MASK); (size + PAGE_SIZE-1) & PAGE_MASK);
} }
} }
EXPORT_SYMBOL(pci_unmap_single);
/* /*
* Same as pci_map_single, but with pages. * Same as pci_map_single, but with pages.
...@@ -519,6 +526,7 @@ dma_addr_t pci_map_page(struct pci_dev *hwdev, struct page *page, ...@@ -519,6 +526,7 @@ dma_addr_t pci_map_page(struct pci_dev *hwdev, struct page *page,
/* IIep is write-through, not flushing. */ /* IIep is write-through, not flushing. */
return page_to_phys(page) + offset; return page_to_phys(page) + offset;
} }
EXPORT_SYMBOL(pci_map_page);
void pci_unmap_page(struct pci_dev *hwdev, void pci_unmap_page(struct pci_dev *hwdev,
dma_addr_t dma_address, size_t size, int direction) dma_addr_t dma_address, size_t size, int direction)
...@@ -526,6 +534,7 @@ void pci_unmap_page(struct pci_dev *hwdev, ...@@ -526,6 +534,7 @@ void pci_unmap_page(struct pci_dev *hwdev,
BUG_ON(direction == PCI_DMA_NONE); BUG_ON(direction == PCI_DMA_NONE);
/* mmu_inval_dma_area XXX */ /* mmu_inval_dma_area XXX */
} }
EXPORT_SYMBOL(pci_unmap_page);
/* Map a set of buffers described by scatterlist in streaming /* Map a set of buffers described by scatterlist in streaming
* mode for DMA. This is the scather-gather version of the * mode for DMA. This is the scather-gather version of the
...@@ -557,6 +566,7 @@ int pci_map_sg(struct pci_dev *hwdev, struct scatterlist *sgl, int nents, ...@@ -557,6 +566,7 @@ int pci_map_sg(struct pci_dev *hwdev, struct scatterlist *sgl, int nents,
} }
return nents; return nents;
} }
EXPORT_SYMBOL(pci_map_sg);
/* Unmap a set of streaming mode DMA translations. /* Unmap a set of streaming mode DMA translations.
* Again, cpu read rules concerning calls here are the same as for * Again, cpu read rules concerning calls here are the same as for
...@@ -578,6 +588,7 @@ void pci_unmap_sg(struct pci_dev *hwdev, struct scatterlist *sgl, int nents, ...@@ -578,6 +588,7 @@ void pci_unmap_sg(struct pci_dev *hwdev, struct scatterlist *sgl, int nents,
} }
} }
} }
EXPORT_SYMBOL(pci_unmap_sg);
/* Make physical memory consistent for a single /* Make physical memory consistent for a single
* streaming mode DMA translation before or after a transfer. * streaming mode DMA translation before or after a transfer.
...@@ -597,6 +608,7 @@ void pci_dma_sync_single_for_cpu(struct pci_dev *hwdev, dma_addr_t ba, size_t si ...@@ -597,6 +608,7 @@ void pci_dma_sync_single_for_cpu(struct pci_dev *hwdev, dma_addr_t ba, size_t si
(size + PAGE_SIZE-1) & PAGE_MASK); (size + PAGE_SIZE-1) & PAGE_MASK);
} }
} }
EXPORT_SYMBOL(pci_dma_sync_single_for_cpu);
void pci_dma_sync_single_for_device(struct pci_dev *hwdev, dma_addr_t ba, size_t size, int direction) void pci_dma_sync_single_for_device(struct pci_dev *hwdev, dma_addr_t ba, size_t size, int direction)
{ {
...@@ -606,6 +618,7 @@ void pci_dma_sync_single_for_device(struct pci_dev *hwdev, dma_addr_t ba, size_t ...@@ -606,6 +618,7 @@ void pci_dma_sync_single_for_device(struct pci_dev *hwdev, dma_addr_t ba, size_t
(size + PAGE_SIZE-1) & PAGE_MASK); (size + PAGE_SIZE-1) & PAGE_MASK);
} }
} }
EXPORT_SYMBOL(pci_dma_sync_single_for_device);
/* Make physical memory consistent for a set of streaming /* Make physical memory consistent for a set of streaming
* mode DMA translations after a transfer. * mode DMA translations after a transfer.
...@@ -628,6 +641,7 @@ void pci_dma_sync_sg_for_cpu(struct pci_dev *hwdev, struct scatterlist *sgl, int ...@@ -628,6 +641,7 @@ void pci_dma_sync_sg_for_cpu(struct pci_dev *hwdev, struct scatterlist *sgl, int
} }
} }
} }
EXPORT_SYMBOL(pci_dma_sync_sg_for_cpu);
void pci_dma_sync_sg_for_device(struct pci_dev *hwdev, struct scatterlist *sgl, int nents, int direction) void pci_dma_sync_sg_for_device(struct pci_dev *hwdev, struct scatterlist *sgl, int nents, int direction)
{ {
...@@ -644,6 +658,7 @@ void pci_dma_sync_sg_for_device(struct pci_dev *hwdev, struct scatterlist *sgl, ...@@ -644,6 +658,7 @@ void pci_dma_sync_sg_for_device(struct pci_dev *hwdev, struct scatterlist *sgl,
} }
} }
} }
EXPORT_SYMBOL(pci_dma_sync_sg_for_device);
#endif /* CONFIG_PCI */ #endif /* CONFIG_PCI */
#ifdef CONFIG_PROC_FS #ifdef CONFIG_PROC_FS
......
...@@ -294,6 +294,7 @@ void synchronize_irq(unsigned int irq) ...@@ -294,6 +294,7 @@ void synchronize_irq(unsigned int irq)
while (sparc_irq[cpu_irq].flags & SPARC_IRQ_INPROGRESS) while (sparc_irq[cpu_irq].flags & SPARC_IRQ_INPROGRESS)
cpu_relax(); cpu_relax();
} }
EXPORT_SYMBOL(synchronize_irq);
#endif /* SMP */ #endif /* SMP */
void unexpected_irq(int irq, void *dev_id, struct pt_regs * regs) void unexpected_irq(int irq, void *dev_id, struct pt_regs * regs)
......
...@@ -1077,6 +1077,7 @@ int pci_dma_supported(struct pci_dev *pdev, u64 device_mask) ...@@ -1077,6 +1077,7 @@ int pci_dma_supported(struct pci_dev *pdev, u64 device_mask)
return (device_mask & dma_addr_mask) == dma_addr_mask; return (device_mask & dma_addr_mask) == dma_addr_mask;
} }
EXPORT_SYMBOL(pci_dma_supported);
void pci_resource_to_user(const struct pci_dev *pdev, int bar, void pci_resource_to_user(const struct pci_dev *pdev, int bar,
const struct resource *rp, resource_size_t *start, const struct resource *rp, resource_size_t *start,
......
...@@ -956,6 +956,7 @@ void outsb(unsigned long addr, const void *src, unsigned long count) ...@@ -956,6 +956,7 @@ void outsb(unsigned long addr, const void *src, unsigned long count)
/* addr += 1; */ /* addr += 1; */
} }
} }
EXPORT_SYMBOL(outsb);
void outsw(unsigned long addr, const void *src, unsigned long count) void outsw(unsigned long addr, const void *src, unsigned long count)
{ {
...@@ -966,6 +967,7 @@ void outsw(unsigned long addr, const void *src, unsigned long count) ...@@ -966,6 +967,7 @@ void outsw(unsigned long addr, const void *src, unsigned long count)
/* addr += 2; */ /* addr += 2; */
} }
} }
EXPORT_SYMBOL(outsw);
void outsl(unsigned long addr, const void *src, unsigned long count) void outsl(unsigned long addr, const void *src, unsigned long count)
{ {
...@@ -976,6 +978,7 @@ void outsl(unsigned long addr, const void *src, unsigned long count) ...@@ -976,6 +978,7 @@ void outsl(unsigned long addr, const void *src, unsigned long count)
/* addr += 4; */ /* addr += 4; */
} }
} }
EXPORT_SYMBOL(outsl);
void insb(unsigned long addr, void *dst, unsigned long count) void insb(unsigned long addr, void *dst, unsigned long count)
{ {
...@@ -986,6 +989,7 @@ void insb(unsigned long addr, void *dst, unsigned long count) ...@@ -986,6 +989,7 @@ void insb(unsigned long addr, void *dst, unsigned long count)
/* addr += 1; */ /* addr += 1; */
} }
} }
EXPORT_SYMBOL(insb);
void insw(unsigned long addr, void *dst, unsigned long count) void insw(unsigned long addr, void *dst, unsigned long count)
{ {
...@@ -996,6 +1000,7 @@ void insw(unsigned long addr, void *dst, unsigned long count) ...@@ -996,6 +1000,7 @@ void insw(unsigned long addr, void *dst, unsigned long count)
/* addr += 2; */ /* addr += 2; */
} }
} }
EXPORT_SYMBOL(insw);
void insl(unsigned long addr, void *dst, unsigned long count) void insl(unsigned long addr, void *dst, unsigned long count)
{ {
...@@ -1009,5 +1014,6 @@ void insl(unsigned long addr, void *dst, unsigned long count) ...@@ -1009,5 +1014,6 @@ void insl(unsigned long addr, void *dst, unsigned long count)
/* addr += 4; */ /* addr += 4; */
} }
} }
EXPORT_SYMBOL(insl);
subsys_initcall(pcic_init); subsys_initcall(pcic_init);
...@@ -44,6 +44,7 @@ ...@@ -44,6 +44,7 @@
* Set in pm platform drivers (apc.c and pmc.c) * Set in pm platform drivers (apc.c and pmc.c)
*/ */
void (*pm_idle)(void); void (*pm_idle)(void);
EXPORT_SYMBOL(pm_idle);
/* /*
* Power-off handler instantiation for pm.h compliance * Power-off handler instantiation for pm.h compliance
...@@ -673,6 +674,7 @@ pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) ...@@ -673,6 +674,7 @@ pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
"g1", "g2", "g3", "o0", "o1", "memory", "cc"); "g1", "g2", "g3", "o0", "o1", "memory", "cc");
return retval; return retval;
} }
EXPORT_SYMBOL(kernel_thread);
unsigned long get_wchan(struct task_struct *task) unsigned long get_wchan(struct task_struct *task)
{ {
......
...@@ -678,6 +678,7 @@ pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) ...@@ -678,6 +678,7 @@ pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
"g1", "g2", "g3", "o0", "o1", "memory", "cc"); "g1", "g2", "g3", "o0", "o1", "memory", "cc");
return retval; return retval;
} }
EXPORT_SYMBOL(kernel_thread);
typedef struct { typedef struct {
union { union {
...@@ -743,6 +744,7 @@ int dump_fpu (struct pt_regs * regs, elf_fpregset_t * fpregs) ...@@ -743,6 +744,7 @@ int dump_fpu (struct pt_regs * regs, elf_fpregset_t * fpregs)
} }
return 1; return 1;
} }
EXPORT_SYMBOL(dump_fpu);
/* /*
* sparc_execve() executes a new program after the asm stub has set * sparc_execve() executes a new program after the asm stub has set
......
...@@ -11,19 +11,19 @@ ...@@ -11,19 +11,19 @@
#include "iommu_common.h" #include "iommu_common.h"
#include "psycho_common.h" #include "psycho_common.h"
#define PSYCHO_STRBUF_CTRL_DENAB 0x0000000000000002UL #define PSYCHO_STRBUF_CTRL_DENAB 0x0000000000000002ULL
#define PSYCHO_STCERR_WRITE 0x0000000000000002UL #define PSYCHO_STCERR_WRITE 0x0000000000000002ULL
#define PSYCHO_STCERR_READ 0x0000000000000001UL #define PSYCHO_STCERR_READ 0x0000000000000001ULL
#define PSYCHO_STCTAG_PPN 0x0fffffff00000000UL #define PSYCHO_STCTAG_PPN 0x0fffffff00000000ULL
#define PSYCHO_STCTAG_VPN 0x00000000ffffe000UL #define PSYCHO_STCTAG_VPN 0x00000000ffffe000ULL
#define PSYCHO_STCTAG_VALID 0x0000000000000002UL #define PSYCHO_STCTAG_VALID 0x0000000000000002ULL
#define PSYCHO_STCTAG_WRITE 0x0000000000000001UL #define PSYCHO_STCTAG_WRITE 0x0000000000000001ULL
#define PSYCHO_STCLINE_LINDX 0x0000000001e00000UL #define PSYCHO_STCLINE_LINDX 0x0000000001e00000ULL
#define PSYCHO_STCLINE_SPTR 0x00000000001f8000UL #define PSYCHO_STCLINE_SPTR 0x00000000001f8000ULL
#define PSYCHO_STCLINE_LADDR 0x0000000000007f00UL #define PSYCHO_STCLINE_LADDR 0x0000000000007f00ULL
#define PSYCHO_STCLINE_EPTR 0x00000000000000fcUL #define PSYCHO_STCLINE_EPTR 0x00000000000000fcULL
#define PSYCHO_STCLINE_VALID 0x0000000000000002UL #define PSYCHO_STCLINE_VALID 0x0000000000000002ULL
#define PSYCHO_STCLINE_FOFN 0x0000000000000001UL #define PSYCHO_STCLINE_FOFN 0x0000000000000001ULL
static DEFINE_SPINLOCK(stc_buf_lock); static DEFINE_SPINLOCK(stc_buf_lock);
static unsigned long stc_error_buf[128]; static unsigned long stc_error_buf[128];
...@@ -144,10 +144,10 @@ static void psycho_record_iommu_tags_and_data(struct pci_pbm_info *pbm, ...@@ -144,10 +144,10 @@ static void psycho_record_iommu_tags_and_data(struct pci_pbm_info *pbm,
#define PSYCHO_IOMMU_TAG_WRITE (0x1UL << 21UL) #define PSYCHO_IOMMU_TAG_WRITE (0x1UL << 21UL)
#define PSYCHO_IOMMU_TAG_STREAM (0x1UL << 20UL) #define PSYCHO_IOMMU_TAG_STREAM (0x1UL << 20UL)
#define PSYCHO_IOMMU_TAG_SIZE (0x1UL << 19UL) #define PSYCHO_IOMMU_TAG_SIZE (0x1UL << 19UL)
#define PSYCHO_IOMMU_TAG_VPAGE 0x7ffffUL #define PSYCHO_IOMMU_TAG_VPAGE 0x7ffffULL
#define PSYCHO_IOMMU_DATA_VALID (1UL << 30UL) #define PSYCHO_IOMMU_DATA_VALID (1UL << 30UL)
#define PSYCHO_IOMMU_DATA_CACHE (1UL << 28UL) #define PSYCHO_IOMMU_DATA_CACHE (1UL << 28UL)
#define PSYCHO_IOMMU_DATA_PPAGE 0xfffffffUL #define PSYCHO_IOMMU_DATA_PPAGE 0xfffffffULL
static void psycho_dump_iommu_tags_and_data(struct pci_pbm_info *pbm, static void psycho_dump_iommu_tags_and_data(struct pci_pbm_info *pbm,
u64 *tag, u64 *data) u64 *tag, u64 *data)
...@@ -190,7 +190,7 @@ static void psycho_dump_iommu_tags_and_data(struct pci_pbm_info *pbm, ...@@ -190,7 +190,7 @@ static void psycho_dump_iommu_tags_and_data(struct pci_pbm_info *pbm,
pbm->name, i, pbm->name, i,
((data_val & PSYCHO_IOMMU_DATA_VALID) ? 1 : 0), ((data_val & PSYCHO_IOMMU_DATA_VALID) ? 1 : 0),
((data_val & PSYCHO_IOMMU_DATA_CACHE) ? 1 : 0), ((data_val & PSYCHO_IOMMU_DATA_CACHE) ? 1 : 0),
(data_val & PSYCHO_IOMMU_DATA_PPAGE)<<IOMMU_PAGE_SHIFT); (data_val & PSYCHO_IOMMU_DATA_PPAGE) << IOMMU_PAGE_SHIFT);
} }
} }
...@@ -285,20 +285,20 @@ static irqreturn_t psycho_pcierr_intr_other(struct pci_pbm_info *pbm) ...@@ -285,20 +285,20 @@ static irqreturn_t psycho_pcierr_intr_other(struct pci_pbm_info *pbm)
return ret; return ret;
} }
#define PSYCHO_PCIAFSR_PMA 0x8000000000000000UL #define PSYCHO_PCIAFSR_PMA 0x8000000000000000ULL
#define PSYCHO_PCIAFSR_PTA 0x4000000000000000UL #define PSYCHO_PCIAFSR_PTA 0x4000000000000000ULL
#define PSYCHO_PCIAFSR_PRTRY 0x2000000000000000UL #define PSYCHO_PCIAFSR_PRTRY 0x2000000000000000ULL
#define PSYCHO_PCIAFSR_PPERR 0x1000000000000000UL #define PSYCHO_PCIAFSR_PPERR 0x1000000000000000ULL
#define PSYCHO_PCIAFSR_SMA 0x0800000000000000UL #define PSYCHO_PCIAFSR_SMA 0x0800000000000000ULL
#define PSYCHO_PCIAFSR_STA 0x0400000000000000UL #define PSYCHO_PCIAFSR_STA 0x0400000000000000ULL
#define PSYCHO_PCIAFSR_SRTRY 0x0200000000000000UL #define PSYCHO_PCIAFSR_SRTRY 0x0200000000000000ULL
#define PSYCHO_PCIAFSR_SPERR 0x0100000000000000UL #define PSYCHO_PCIAFSR_SPERR 0x0100000000000000ULL
#define PSYCHO_PCIAFSR_RESV1 0x00ff000000000000UL #define PSYCHO_PCIAFSR_RESV1 0x00ff000000000000ULL
#define PSYCHO_PCIAFSR_BMSK 0x0000ffff00000000UL #define PSYCHO_PCIAFSR_BMSK 0x0000ffff00000000ULL
#define PSYCHO_PCIAFSR_BLK 0x0000000080000000UL #define PSYCHO_PCIAFSR_BLK 0x0000000080000000ULL
#define PSYCHO_PCIAFSR_RESV2 0x0000000040000000UL #define PSYCHO_PCIAFSR_RESV2 0x0000000040000000ULL
#define PSYCHO_PCIAFSR_MID 0x000000003e000000UL #define PSYCHO_PCIAFSR_MID 0x000000003e000000ULL
#define PSYCHO_PCIAFSR_RESV3 0x0000000001ffffffUL #define PSYCHO_PCIAFSR_RESV3 0x0000000001ffffffULL
irqreturn_t psycho_pcierr_intr(int irq, void *dev_id) irqreturn_t psycho_pcierr_intr(int irq, void *dev_id)
{ {
......
...@@ -117,6 +117,7 @@ void sbus_set_sbus64(struct device *dev, int bursts) ...@@ -117,6 +117,7 @@ void sbus_set_sbus64(struct device *dev, int bursts)
val |= (1UL << 4UL); val |= (1UL << 4UL);
upa_writeq(val, cfg_reg); upa_writeq(val, cfg_reg);
} }
EXPORT_SYMBOL(sbus_set_sbus64);
/* INO number to IMAP register offset for SYSIO external IRQ's. /* INO number to IMAP register offset for SYSIO external IRQ's.
* This should conform to both Sunfire/Wildfire server and Fusion * This should conform to both Sunfire/Wildfire server and Fusion
......
...@@ -199,7 +199,9 @@ extern unsigned short ram_flags; ...@@ -199,7 +199,9 @@ extern unsigned short ram_flags;
extern int root_mountflags; extern int root_mountflags;
char reboot_command[COMMAND_LINE_SIZE]; char reboot_command[COMMAND_LINE_SIZE];
enum sparc_cpu sparc_cpu_model; enum sparc_cpu sparc_cpu_model;
EXPORT_SYMBOL(sparc_cpu_model);
struct tt_entry *sparc_ttable; struct tt_entry *sparc_ttable;
...@@ -391,6 +393,7 @@ void sun_do_break(void) ...@@ -391,6 +393,7 @@ void sun_do_break(void)
prom_cmdline(); prom_cmdline();
} }
EXPORT_SYMBOL(sun_do_break);
int stop_a_enabled = 1; int stop_a_enabled = 1;
......
...@@ -58,6 +58,7 @@ ...@@ -58,6 +58,7 @@
* operations in asm/ns87303.h * operations in asm/ns87303.h
*/ */
DEFINE_SPINLOCK(ns87303_lock); DEFINE_SPINLOCK(ns87303_lock);
EXPORT_SYMBOL(ns87303_lock);
struct screen_info screen_info = { struct screen_info screen_info = {
0, 0, /* orig-x, orig-y */ 0, 0, /* orig-x, orig-y */
...@@ -425,5 +426,7 @@ void sun_do_break(void) ...@@ -425,5 +426,7 @@ void sun_do_break(void)
prom_cmdline(); prom_cmdline();
} }
EXPORT_SYMBOL(sun_do_break);
int stop_a_enabled = 1; int stop_a_enabled = 1;
EXPORT_SYMBOL(stop_a_enabled);
...@@ -5,49 +5,14 @@ ...@@ -5,49 +5,14 @@
* Copyright (C) 1996 Eddie C. Dost (ecd@skynet.be) * Copyright (C) 1996 Eddie C. Dost (ecd@skynet.be)
*/ */
/* Tell string.h we don't want memcpy etc. as cpp defines */
#define EXPORT_SYMTAB_STROPS
#define PROMLIB_INTERNAL
#include <linux/module.h> #include <linux/module.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/smp.h>
#include <linux/types.h>
#include <linux/string.h>
#include <linux/sched.h>
#include <linux/interrupt.h>
#include <linux/in6.h>
#include <linux/spinlock.h>
#include <linux/mm.h>
#include <linux/syscalls.h>
#ifdef CONFIG_PCI
#include <linux/pci.h>
#endif
#include <linux/pm.h>
#ifdef CONFIG_HIGHMEM
#include <linux/highmem.h>
#endif
#include <asm/oplib.h>
#include <asm/delay.h>
#include <asm/system.h>
#include <asm/auxio.h>
#include <asm/pgtable.h> #include <asm/pgtable.h>
#include <asm/io.h>
#include <asm/irq.h>
#include <asm/idprom.h>
#include <asm/head.h>
#include <asm/smp.h>
#include <asm/ptrace.h>
#include <asm/uaccess.h> #include <asm/uaccess.h>
#include <asm/checksum.h> #include <asm/delay.h>
#ifdef CONFIG_SBUS #include <asm/head.h>
#include <asm/dma.h> #include <asm/dma.h>
#endif
#include <asm/io-unit.h>
#include <asm/bug.h>
extern spinlock_t rtc_lock;
struct poll { struct poll {
int fd; int fd;
...@@ -55,72 +20,15 @@ struct poll { ...@@ -55,72 +20,15 @@ struct poll {
short revents; short revents;
}; };
extern void (*__copy_1page)(void *, const void *); /* from entry.S */
extern void __memmove(void *, const void *, __kernel_size_t);
extern void (*bzero_1page)(void *);
extern void *__bzero(void *, size_t);
extern void *__memscan_zero(void *, size_t);
extern void *__memscan_generic(void *, int, size_t);
extern int __strncmp(const char *, const char *, __kernel_size_t);
extern int __ashrdi3(int, int);
extern int __ashldi3(int, int);
extern int __lshrdi3(int, int);
extern int __muldi3(int, int);
extern int __divdi3(int, int);
/* Private functions with odd calling conventions. */
extern void ___atomic24_add(void);
extern void ___atomic24_sub(void);
extern void ___rw_read_enter(void);
extern void ___rw_read_try(void);
extern void ___rw_read_exit(void);
extern void ___rw_write_enter(void);
/* Alias functions whose names begin with "." and export the aliases.
* The module references will be fixed up by module_frob_arch_sections.
*/
extern int _Div(int, int);
extern int _Mul(int, int);
extern int _Rem(int, int);
extern unsigned _Udiv(unsigned, unsigned);
extern unsigned _Umul(unsigned, unsigned);
extern unsigned _Urem(unsigned, unsigned);
/* used by various drivers */
EXPORT_SYMBOL(sparc_cpu_model);
EXPORT_SYMBOL(kernel_thread);
#ifdef CONFIG_SMP
// XXX find what uses (or used) these. AV: see asm/spinlock.h
EXPORT_SYMBOL(___rw_read_enter);
EXPORT_SYMBOL(___rw_read_try);
EXPORT_SYMBOL(___rw_read_exit);
EXPORT_SYMBOL(___rw_write_enter);
#endif
EXPORT_SYMBOL(sparc_valid_addr_bitmap);
EXPORT_SYMBOL(phys_base);
EXPORT_SYMBOL(pfn_base);
/* Atomic operations. */
EXPORT_SYMBOL(___atomic24_add);
EXPORT_SYMBOL(___atomic24_sub);
/* Per-CPU information table */
EXPORT_PER_CPU_SYMBOL(__cpu_data);
#ifdef CONFIG_SMP
/* IRQ implementation. */
EXPORT_SYMBOL(synchronize_irq);
#endif
EXPORT_SYMBOL(__udelay); EXPORT_SYMBOL(__udelay);
EXPORT_SYMBOL(__ndelay); EXPORT_SYMBOL(__ndelay);
EXPORT_SYMBOL(rtc_lock);
EXPORT_SYMBOL(set_auxio);
EXPORT_SYMBOL(get_auxio);
EXPORT_SYMBOL(io_remap_pfn_range);
/* from head_32.S */
EXPORT_SYMBOL(__ret_efault);
EXPORT_SYMBOL(empty_zero_page);
/* Defined using magic */
#ifndef CONFIG_SMP #ifndef CONFIG_SMP
EXPORT_SYMBOL(BTFIXUP_CALL(___xchg32)); EXPORT_SYMBOL(BTFIXUP_CALL(___xchg32));
#else #else
...@@ -132,122 +40,7 @@ EXPORT_SYMBOL(BTFIXUP_CALL(mmu_get_scsi_sgl)); ...@@ -132,122 +40,7 @@ EXPORT_SYMBOL(BTFIXUP_CALL(mmu_get_scsi_sgl));
EXPORT_SYMBOL(BTFIXUP_CALL(mmu_get_scsi_one)); EXPORT_SYMBOL(BTFIXUP_CALL(mmu_get_scsi_one));
EXPORT_SYMBOL(BTFIXUP_CALL(mmu_release_scsi_sgl)); EXPORT_SYMBOL(BTFIXUP_CALL(mmu_release_scsi_sgl));
EXPORT_SYMBOL(BTFIXUP_CALL(mmu_release_scsi_one)); EXPORT_SYMBOL(BTFIXUP_CALL(mmu_release_scsi_one));
EXPORT_SYMBOL(BTFIXUP_CALL(pgprot_noncached)); EXPORT_SYMBOL(BTFIXUP_CALL(pgprot_noncached));
#ifdef CONFIG_SBUS /* Exporting a symbol from /init/main.c */
EXPORT_SYMBOL(sbus_set_sbus64);
#endif
#ifdef CONFIG_PCI
EXPORT_SYMBOL(insb);
EXPORT_SYMBOL(outsb);
EXPORT_SYMBOL(insw);
EXPORT_SYMBOL(outsw);
EXPORT_SYMBOL(insl);
EXPORT_SYMBOL(outsl);
EXPORT_SYMBOL(pci_alloc_consistent);
EXPORT_SYMBOL(pci_free_consistent);
EXPORT_SYMBOL(pci_map_single);
EXPORT_SYMBOL(pci_unmap_single);
EXPORT_SYMBOL(pci_dma_sync_single_for_cpu);
EXPORT_SYMBOL(pci_dma_sync_single_for_device);
EXPORT_SYMBOL(pci_dma_sync_sg_for_cpu);
EXPORT_SYMBOL(pci_dma_sync_sg_for_device);
EXPORT_SYMBOL(pci_map_sg);
EXPORT_SYMBOL(pci_unmap_sg);
EXPORT_SYMBOL(pci_map_page);
EXPORT_SYMBOL(pci_unmap_page);
/* Actually, ioremap/iounmap are not PCI specific. But it is ok for drivers. */
EXPORT_SYMBOL(ioremap);
EXPORT_SYMBOL(iounmap);
#endif
/* in arch/sparc/mm/highmem.c */
#ifdef CONFIG_HIGHMEM
EXPORT_SYMBOL(kmap_atomic);
EXPORT_SYMBOL(kunmap_atomic);
#endif
/* prom symbols */
EXPORT_SYMBOL(idprom);
EXPORT_SYMBOL(prom_root_node);
EXPORT_SYMBOL(prom_getchild);
EXPORT_SYMBOL(prom_getsibling);
EXPORT_SYMBOL(prom_searchsiblings);
EXPORT_SYMBOL(prom_firstprop);
EXPORT_SYMBOL(prom_nextprop);
EXPORT_SYMBOL(prom_getproplen);
EXPORT_SYMBOL(prom_getproperty);
EXPORT_SYMBOL(prom_node_has_property);
EXPORT_SYMBOL(prom_setprop);
EXPORT_SYMBOL(saved_command_line); EXPORT_SYMBOL(saved_command_line);
EXPORT_SYMBOL(prom_apply_obio_ranges);
EXPORT_SYMBOL(prom_feval);
EXPORT_SYMBOL(prom_getbool);
EXPORT_SYMBOL(prom_getstring);
EXPORT_SYMBOL(prom_getint);
EXPORT_SYMBOL(prom_getintdefault);
EXPORT_SYMBOL(prom_finddevice);
EXPORT_SYMBOL(romvec);
EXPORT_SYMBOL(__prom_getchild);
EXPORT_SYMBOL(__prom_getsibling);
/* sparc library symbols */
EXPORT_SYMBOL(memscan);
EXPORT_SYMBOL(strlen);
EXPORT_SYMBOL(strncmp);
EXPORT_SYMBOL(page_kernel);
/* Special internal versions of library functions. */
EXPORT_SYMBOL(__copy_1page);
EXPORT_SYMBOL(__memcpy);
EXPORT_SYMBOL(__memset);
EXPORT_SYMBOL(bzero_1page);
EXPORT_SYMBOL(__bzero);
EXPORT_SYMBOL(__memscan_zero);
EXPORT_SYMBOL(__memscan_generic);
EXPORT_SYMBOL(__strncmp);
EXPORT_SYMBOL(__memmove);
/* Moving data to/from userspace. */
EXPORT_SYMBOL(__copy_user);
EXPORT_SYMBOL(__strncpy_from_user);
EXPORT_SYMBOL(__strnlen_user);
/* Networking helper routines. */
EXPORT_SYMBOL(__csum_partial_copy_sparc_generic);
EXPORT_SYMBOL(csum_partial);
/* Cache flushing. */
EXPORT_SYMBOL(sparc_flush_page_to_ram);
/* For when serial stuff is built as modules. */
EXPORT_SYMBOL(sun_do_break);
EXPORT_SYMBOL(__ret_efault);
EXPORT_SYMBOL(memcmp);
EXPORT_SYMBOL(memcpy);
EXPORT_SYMBOL(memset);
EXPORT_SYMBOL(memmove);
EXPORT_SYMBOL(__ashrdi3);
EXPORT_SYMBOL(__ashldi3);
EXPORT_SYMBOL(__lshrdi3);
EXPORT_SYMBOL(__muldi3);
EXPORT_SYMBOL(__divdi3);
EXPORT_SYMBOL(_Rem);
EXPORT_SYMBOL(_Urem);
EXPORT_SYMBOL(_Mul);
EXPORT_SYMBOL(_Umul);
EXPORT_SYMBOL(_Div);
EXPORT_SYMBOL(_Udiv);
#ifdef CONFIG_DEBUG_BUGVERBOSE
EXPORT_SYMBOL(do_BUG);
#endif
/* Sun Power Management Idle Handler */
EXPORT_SYMBOL(pm_idle);
EXPORT_SYMBOL(empty_zero_page);
...@@ -5,50 +5,16 @@ ...@@ -5,50 +5,16 @@
* Copyright (C) 1999 Jakub Jelinek (jj@ultra.linux.cz) * Copyright (C) 1999 Jakub Jelinek (jj@ultra.linux.cz)
*/ */
/* Tell string.h we don't want memcpy etc. as cpp defines */
#define EXPORT_SYMTAB_STROPS
#define PROMLIB_INTERNAL
#include <linux/module.h> #include <linux/module.h>
#include <linux/types.h>
#include <linux/string.h>
#include <linux/sched.h>
#include <linux/in6.h>
#include <linux/pci.h> #include <linux/pci.h>
#include <linux/interrupt.h>
#include <linux/fs_struct.h>
#include <linux/fs.h>
#include <linux/mm.h>
#include <linux/socket.h>
#include <linux/syscalls.h>
#include <linux/percpu.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/rwsem.h>
#include <net/compat.h>
#include <asm/oplib.h> #include <asm/spinlock.h>
#include <asm/system.h> #include <asm/system.h>
#include <asm/auxio.h>
#include <asm/pgtable.h>
#include <asm/io.h>
#include <asm/irq.h>
#include <asm/idprom.h>
#include <asm/elf.h>
#include <asm/head.h>
#include <asm/smp.h>
#include <asm/ptrace.h>
#include <asm/uaccess.h>
#include <asm/checksum.h>
#include <asm/fpumacro.h>
#include <asm/pgalloc.h>
#include <asm/cacheflush.h>
#ifdef CONFIG_SBUS
#include <asm/dma.h>
#endif
#include <asm/ns87303.h>
#include <asm/timer.h>
#include <asm/cpudata.h> #include <asm/cpudata.h>
#include <asm/ftrace.h> #include <asm/uaccess.h>
#include <asm/spitfire.h>
#include <asm/oplib.h>
#include <asm/hypervisor.h> #include <asm/hypervisor.h>
struct poll { struct poll {
...@@ -57,42 +23,6 @@ struct poll { ...@@ -57,42 +23,6 @@ struct poll {
short revents; short revents;
}; };
extern void die_if_kernel(char *str, struct pt_regs *regs);
extern pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
extern void *__bzero(void *, size_t);
extern void *__memscan_zero(void *, size_t);
extern void *__memscan_generic(void *, int, size_t);
extern __kernel_size_t strlen(const char *);
extern void sys_sigsuspend(void);
extern int compat_sys_ioctl(unsigned int fd, unsigned int cmd, u32 arg);
extern int (*handle_mathemu)(struct pt_regs *, struct fpustate *);
extern long sparc32_open(const char __user * filename, int flags, int mode);
extern int io_remap_pfn_range(struct vm_area_struct *vma, unsigned long from,
unsigned long pfn, unsigned long size, pgprot_t prot);
extern int __ashrdi3(int, int);
extern int dump_fpu (struct pt_regs * regs, elf_fpregset_t * fpregs);
extern void xor_vis_2(unsigned long, unsigned long *, unsigned long *);
extern void xor_vis_3(unsigned long, unsigned long *, unsigned long *,
unsigned long *);
extern void xor_vis_4(unsigned long, unsigned long *, unsigned long *,
unsigned long *, unsigned long *);
extern void xor_vis_5(unsigned long, unsigned long *, unsigned long *,
unsigned long *, unsigned long *, unsigned long *);
extern void xor_niagara_2(unsigned long, unsigned long *, unsigned long *);
extern void xor_niagara_3(unsigned long, unsigned long *, unsigned long *,
unsigned long *);
extern void xor_niagara_4(unsigned long, unsigned long *, unsigned long *,
unsigned long *, unsigned long *);
extern void xor_niagara_5(unsigned long, unsigned long *, unsigned long *,
unsigned long *, unsigned long *, unsigned long *);
/* Per-CPU information table */
EXPORT_PER_CPU_SYMBOL(__cpu_data);
/* used by various drivers */ /* used by various drivers */
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
/* Out of line rw-locking implementation. */ /* Out of line rw-locking implementation. */
...@@ -103,68 +33,24 @@ EXPORT_SYMBOL(__write_unlock); ...@@ -103,68 +33,24 @@ EXPORT_SYMBOL(__write_unlock);
EXPORT_SYMBOL(__write_trylock); EXPORT_SYMBOL(__write_trylock);
#endif /* CONFIG_SMP */ #endif /* CONFIG_SMP */
#ifdef CONFIG_MCOUNT /* from helpers.S */
EXPORT_SYMBOL(_mcount);
#endif
EXPORT_SYMBOL(sparc64_get_clock_tick);
/* RW semaphores */
EXPORT_SYMBOL(__down_read);
EXPORT_SYMBOL(__down_read_trylock);
EXPORT_SYMBOL(__down_write);
EXPORT_SYMBOL(__down_write_trylock);
EXPORT_SYMBOL(__up_read);
EXPORT_SYMBOL(__up_write);
EXPORT_SYMBOL(__downgrade_write);
/* Atomic counter implementation. */
EXPORT_SYMBOL(atomic_add);
EXPORT_SYMBOL(atomic_add_ret);
EXPORT_SYMBOL(atomic_sub);
EXPORT_SYMBOL(atomic_sub_ret);
EXPORT_SYMBOL(atomic64_add);
EXPORT_SYMBOL(atomic64_add_ret);
EXPORT_SYMBOL(atomic64_sub);
EXPORT_SYMBOL(atomic64_sub_ret);
/* Atomic bit operations. */
EXPORT_SYMBOL(test_and_set_bit);
EXPORT_SYMBOL(test_and_clear_bit);
EXPORT_SYMBOL(test_and_change_bit);
EXPORT_SYMBOL(set_bit);
EXPORT_SYMBOL(clear_bit);
EXPORT_SYMBOL(change_bit);
EXPORT_SYMBOL(__flushw_user); EXPORT_SYMBOL(__flushw_user);
EXPORT_SYMBOL_GPL(real_hard_smp_processor_id);
/* from head_64.S */
EXPORT_SYMBOL(__ret_efault);
EXPORT_SYMBOL(tlb_type); EXPORT_SYMBOL(tlb_type);
EXPORT_SYMBOL(sun4v_chip_type); EXPORT_SYMBOL(sun4v_chip_type);
EXPORT_SYMBOL(get_fb_unmapped_area); EXPORT_SYMBOL(prom_root_node);
EXPORT_SYMBOL(flush_icache_range);
EXPORT_SYMBOL(flush_dcache_page);
#ifdef DCACHE_ALIASING_POSSIBLE
EXPORT_SYMBOL(__flush_dcache_range);
#endif
/* from hvcalls.S */
EXPORT_SYMBOL(sun4v_niagara_getperf); EXPORT_SYMBOL(sun4v_niagara_getperf);
EXPORT_SYMBOL(sun4v_niagara_setperf); EXPORT_SYMBOL(sun4v_niagara_setperf);
EXPORT_SYMBOL(sun4v_niagara2_getperf); EXPORT_SYMBOL(sun4v_niagara2_getperf);
EXPORT_SYMBOL(sun4v_niagara2_setperf); EXPORT_SYMBOL(sun4v_niagara2_setperf);
EXPORT_SYMBOL(auxio_set_led);
EXPORT_SYMBOL(auxio_set_lte);
#ifdef CONFIG_SBUS
EXPORT_SYMBOL(sbus_set_sbus64);
#endif
EXPORT_SYMBOL(outsb);
EXPORT_SYMBOL(outsw);
EXPORT_SYMBOL(outsl);
EXPORT_SYMBOL(insb);
EXPORT_SYMBOL(insw);
EXPORT_SYMBOL(insl);
#ifdef CONFIG_PCI #ifdef CONFIG_PCI
/* inline functions in asm/pci_64.h */
EXPORT_SYMBOL(pci_alloc_consistent); EXPORT_SYMBOL(pci_alloc_consistent);
EXPORT_SYMBOL(pci_free_consistent); EXPORT_SYMBOL(pci_free_consistent);
EXPORT_SYMBOL(pci_map_single); EXPORT_SYMBOL(pci_map_single);
...@@ -173,112 +59,7 @@ EXPORT_SYMBOL(pci_map_sg); ...@@ -173,112 +59,7 @@ EXPORT_SYMBOL(pci_map_sg);
EXPORT_SYMBOL(pci_unmap_sg); EXPORT_SYMBOL(pci_unmap_sg);
EXPORT_SYMBOL(pci_dma_sync_single_for_cpu); EXPORT_SYMBOL(pci_dma_sync_single_for_cpu);
EXPORT_SYMBOL(pci_dma_sync_sg_for_cpu); EXPORT_SYMBOL(pci_dma_sync_sg_for_cpu);
EXPORT_SYMBOL(pci_dma_supported);
#endif #endif
/* I/O device mmaping on Sparc64. */ /* Exporting a symbol from /init/main.c */
EXPORT_SYMBOL(io_remap_pfn_range);
EXPORT_SYMBOL(dump_fpu);
/* math-emu wants this */
EXPORT_SYMBOL(die_if_kernel);
/* Kernel thread creation. */
EXPORT_SYMBOL(kernel_thread);
/* prom symbols */
EXPORT_SYMBOL(idprom);
EXPORT_SYMBOL(prom_root_node);
EXPORT_SYMBOL(prom_getchild);
EXPORT_SYMBOL(prom_getsibling);
EXPORT_SYMBOL(prom_searchsiblings);
EXPORT_SYMBOL(prom_firstprop);
EXPORT_SYMBOL(prom_nextprop);
EXPORT_SYMBOL(prom_getproplen);
EXPORT_SYMBOL(prom_getproperty);
EXPORT_SYMBOL(prom_node_has_property);
EXPORT_SYMBOL(prom_setprop);
EXPORT_SYMBOL(saved_command_line); EXPORT_SYMBOL(saved_command_line);
EXPORT_SYMBOL(prom_finddevice);
EXPORT_SYMBOL(prom_feval);
EXPORT_SYMBOL(prom_getbool);
EXPORT_SYMBOL(prom_getstring);
EXPORT_SYMBOL(prom_getint);
EXPORT_SYMBOL(prom_getintdefault);
EXPORT_SYMBOL(__prom_getchild);
EXPORT_SYMBOL(__prom_getsibling);
/* sparc library symbols */
EXPORT_SYMBOL(strlen);
EXPORT_SYMBOL(__strlen_user);
EXPORT_SYMBOL(__strnlen_user);
/* Special internal versions of library functions. */
EXPORT_SYMBOL(_clear_page);
EXPORT_SYMBOL(clear_user_page);
EXPORT_SYMBOL(copy_user_page);
EXPORT_SYMBOL(__bzero);
EXPORT_SYMBOL(__memscan_zero);
EXPORT_SYMBOL(__memscan_generic);
EXPORT_SYMBOL(__memset);
EXPORT_SYMBOL(csum_partial);
EXPORT_SYMBOL(csum_partial_copy_nocheck);
EXPORT_SYMBOL(__csum_partial_copy_from_user);
EXPORT_SYMBOL(__csum_partial_copy_to_user);
EXPORT_SYMBOL(ip_fast_csum);
/* Moving data to/from/in userspace. */
EXPORT_SYMBOL(___copy_to_user);
EXPORT_SYMBOL(___copy_from_user);
EXPORT_SYMBOL(___copy_in_user);
EXPORT_SYMBOL(copy_to_user_fixup);
EXPORT_SYMBOL(copy_from_user_fixup);
EXPORT_SYMBOL(copy_in_user_fixup);
EXPORT_SYMBOL(__strncpy_from_user);
EXPORT_SYMBOL(__clear_user);
/* Various address conversion macros use this. */
EXPORT_SYMBOL(sparc64_valid_addr_bitmap);
/* No version information on this, heavily used in inline asm,
* and will always be 'void __ret_efault(void)'.
*/
EXPORT_SYMBOL(__ret_efault);
/* No version information on these, as gcc produces such symbols. */
EXPORT_SYMBOL(memcmp);
EXPORT_SYMBOL(memcpy);
EXPORT_SYMBOL(memset);
EXPORT_SYMBOL(memmove);
EXPORT_SYMBOL(strncmp);
void VISenter(void);
/* RAID code needs this */
EXPORT_SYMBOL(VISenter);
/* for input/keybdev */
EXPORT_SYMBOL(sun_do_break);
EXPORT_SYMBOL(stop_a_enabled);
#ifdef CONFIG_DEBUG_BUGVERBOSE
EXPORT_SYMBOL(do_BUG);
#endif
/* for ns8703 */
EXPORT_SYMBOL(ns87303_lock);
EXPORT_SYMBOL(tick_ops);
EXPORT_SYMBOL(xor_vis_2);
EXPORT_SYMBOL(xor_vis_3);
EXPORT_SYMBOL(xor_vis_4);
EXPORT_SYMBOL(xor_vis_5);
EXPORT_SYMBOL(xor_niagara_2);
EXPORT_SYMBOL(xor_niagara_3);
EXPORT_SYMBOL(xor_niagara_4);
EXPORT_SYMBOL(xor_niagara_5);
EXPORT_SYMBOL_GPL(real_hard_smp_processor_id);
...@@ -60,7 +60,7 @@ extern int __smp4d_processor_id(void); ...@@ -60,7 +60,7 @@ extern int __smp4d_processor_id(void);
#define SMP_PRINTK(x) #define SMP_PRINTK(x)
#endif #endif
static inline unsigned long swap(volatile unsigned long *ptr, unsigned long val) static inline unsigned long sun4d_swap(volatile unsigned long *ptr, unsigned long val)
{ {
__asm__ __volatile__("swap [%1], %0\n\t" : __asm__ __volatile__("swap [%1], %0\n\t" :
"=&r" (val), "=&r" (ptr) : "=&r" (val), "=&r" (ptr) :
...@@ -115,7 +115,7 @@ void __cpuinit smp4d_callin(void) ...@@ -115,7 +115,7 @@ void __cpuinit smp4d_callin(void)
local_flush_tlb_all(); local_flush_tlb_all();
/* Allow master to continue. */ /* Allow master to continue. */
swap((unsigned long *)&cpu_callin_map[cpuid], 1); sun4d_swap((unsigned long *)&cpu_callin_map[cpuid], 1);
local_flush_cache_all(); local_flush_cache_all();
local_flush_tlb_all(); local_flush_tlb_all();
......
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
#include <linux/ipc.h> #include <linux/ipc.h>
#include <linux/personality.h> #include <linux/personality.h>
#include <linux/random.h> #include <linux/random.h>
#include <linux/module.h>
#include <asm/uaccess.h> #include <asm/uaccess.h>
#include <asm/utrap.h> #include <asm/utrap.h>
...@@ -354,6 +355,7 @@ unsigned long get_fb_unmapped_area(struct file *filp, unsigned long orig_addr, u ...@@ -354,6 +355,7 @@ unsigned long get_fb_unmapped_area(struct file *filp, unsigned long orig_addr, u
return addr; return addr;
} }
EXPORT_SYMBOL(get_fb_unmapped_area);
/* Essentially the same as PowerPC... */ /* Essentially the same as PowerPC... */
void arch_pick_mmap_layout(struct mm_struct *mm) void arch_pick_mmap_layout(struct mm_struct *mm)
......
...@@ -48,6 +48,8 @@ ...@@ -48,6 +48,8 @@
#include "irq.h" #include "irq.h"
DEFINE_SPINLOCK(rtc_lock); DEFINE_SPINLOCK(rtc_lock);
EXPORT_SYMBOL(rtc_lock);
static int set_rtc_mmss(unsigned long); static int set_rtc_mmss(unsigned long);
static int sbus_do_settimeofday(struct timespec *tv); static int sbus_do_settimeofday(struct timespec *tv);
......
...@@ -176,6 +176,7 @@ static struct sparc64_tick_ops tick_operations __read_mostly = { ...@@ -176,6 +176,7 @@ static struct sparc64_tick_ops tick_operations __read_mostly = {
}; };
struct sparc64_tick_ops *tick_ops __read_mostly = &tick_operations; struct sparc64_tick_ops *tick_ops __read_mostly = &tick_operations;
EXPORT_SYMBOL(tick_ops);
static void stick_disable_irq(void) static void stick_disable_irq(void)
{ {
...@@ -639,6 +640,7 @@ unsigned long sparc64_get_clock_tick(unsigned int cpu) ...@@ -639,6 +640,7 @@ unsigned long sparc64_get_clock_tick(unsigned int cpu)
return ft->clock_tick_ref; return ft->clock_tick_ref;
return cpu_data(cpu).clock_tick; return cpu_data(cpu).clock_tick;
} }
EXPORT_SYMBOL(sparc64_get_clock_tick);
#ifdef CONFIG_CPU_FREQ #ifdef CONFIG_CPU_FREQ
......
...@@ -424,6 +424,7 @@ void do_BUG(const char *file, int line) ...@@ -424,6 +424,7 @@ void do_BUG(const char *file, int line)
// bust_spinlocks(1); XXX Not in our original BUG() // bust_spinlocks(1); XXX Not in our original BUG()
printk("kernel BUG at %s:%d!\n", file, line); printk("kernel BUG at %s:%d!\n", file, line);
} }
EXPORT_SYMBOL(do_BUG);
#endif #endif
/* Since we have our mappings set up, on multiprocessors we can spin them /* Since we have our mappings set up, on multiprocessors we can spin them
......
...@@ -128,6 +128,7 @@ void do_BUG(const char *file, int line) ...@@ -128,6 +128,7 @@ void do_BUG(const char *file, int line)
bust_spinlocks(1); bust_spinlocks(1);
printk("kernel BUG at %s:%d!\n", file, line); printk("kernel BUG at %s:%d!\n", file, line);
} }
EXPORT_SYMBOL(do_BUG);
#endif #endif
static DEFINE_SPINLOCK(dimm_handler_lock); static DEFINE_SPINLOCK(dimm_handler_lock);
...@@ -2261,6 +2262,7 @@ void die_if_kernel(char *str, struct pt_regs *regs) ...@@ -2261,6 +2262,7 @@ void die_if_kernel(char *str, struct pt_regs *regs)
do_exit(SIGKILL); do_exit(SIGKILL);
do_exit(SIGSEGV); do_exit(SIGSEGV);
} }
EXPORT_SYMBOL(die_if_kernel);
#define VIS_OPCODE_MASK ((0x3 << 30) | (0x3f << 19)) #define VIS_OPCODE_MASK ((0x3 << 30) | (0x3f << 19))
#define VIS_OPCODE_VAL ((0x2 << 30) | (0x36 << 19)) #define VIS_OPCODE_VAL ((0x2 << 30) | (0x36 << 19))
......
...@@ -589,7 +589,6 @@ void handle_lddfmna(struct pt_regs *regs, unsigned long sfar, unsigned long sfsr ...@@ -589,7 +589,6 @@ void handle_lddfmna(struct pt_regs *regs, unsigned long sfar, unsigned long sfsr
unsigned long pc = regs->tpc; unsigned long pc = regs->tpc;
unsigned long tstate = regs->tstate; unsigned long tstate = regs->tstate;
u32 insn; u32 insn;
u32 first, second;
u64 value; u64 value;
u8 freg; u8 freg;
int flag; int flag;
...@@ -601,19 +600,20 @@ void handle_lddfmna(struct pt_regs *regs, unsigned long sfar, unsigned long sfsr ...@@ -601,19 +600,20 @@ void handle_lddfmna(struct pt_regs *regs, unsigned long sfar, unsigned long sfsr
pc = (u32)pc; pc = (u32)pc;
if (get_user(insn, (u32 __user *) pc) != -EFAULT) { if (get_user(insn, (u32 __user *) pc) != -EFAULT) {
int asi = decode_asi(insn, regs); int asi = decode_asi(insn, regs);
u32 first, second;
int err; int err;
if ((asi > ASI_SNFL) || if ((asi > ASI_SNFL) ||
(asi < ASI_P)) (asi < ASI_P))
goto daex; goto daex;
first = second = 0;
err = get_user(first, (u32 __user *)sfar); err = get_user(first, (u32 __user *)sfar);
if (!err) if (!err)
err = get_user(second, (u32 __user *)(sfar + 4)); err = get_user(second, (u32 __user *)(sfar + 4));
if (err) { if (err) {
if (asi & 0x2) /* NF */ { if (!(asi & 0x2))
first = 0; second = 0;
} else
goto daex; goto daex;
first = second = 0;
} }
save_and_clear_fpu(); save_and_clear_fpu();
freg = ((insn >> 25) & 0x1e) | ((insn >> 20) & 0x20); freg = ((insn >> 25) & 0x1e) | ((insn >> 20) & 0x20);
......
...@@ -42,3 +42,4 @@ lib-$(CONFIG_SPARC64) += mcount.o ipcsum.o xor.o ...@@ -42,3 +42,4 @@ lib-$(CONFIG_SPARC64) += mcount.o ipcsum.o xor.o
obj-y += iomap.o obj-y += iomap.o
obj-$(CONFIG_SPARC32) += atomic32.o obj-$(CONFIG_SPARC32) += atomic32.o
obj-y += ksyms.o
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
* Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu) * Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu)
*/ */
#include <linux/module.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/byteorder.h> #include <asm/byteorder.h>
...@@ -15,6 +17,7 @@ void outsb(unsigned long __addr, const void *src, unsigned long count) ...@@ -15,6 +17,7 @@ void outsb(unsigned long __addr, const void *src, unsigned long count)
while (count--) while (count--)
outb(*p++, addr); outb(*p++, addr);
} }
EXPORT_SYMBOL(outsb);
void outsw(unsigned long __addr, const void *src, unsigned long count) void outsw(unsigned long __addr, const void *src, unsigned long count)
{ {
...@@ -25,6 +28,7 @@ void outsw(unsigned long __addr, const void *src, unsigned long count) ...@@ -25,6 +28,7 @@ void outsw(unsigned long __addr, const void *src, unsigned long count)
src += sizeof(u16); src += sizeof(u16);
} }
} }
EXPORT_SYMBOL(outsw);
void outsl(unsigned long __addr, const void *src, unsigned long count) void outsl(unsigned long __addr, const void *src, unsigned long count)
{ {
...@@ -78,6 +82,7 @@ void outsl(unsigned long __addr, const void *src, unsigned long count) ...@@ -78,6 +82,7 @@ void outsl(unsigned long __addr, const void *src, unsigned long count)
break; break;
} }
} }
EXPORT_SYMBOL(outsl);
void insb(unsigned long __addr, void *dst, unsigned long count) void insb(unsigned long __addr, void *dst, unsigned long count)
{ {
...@@ -105,6 +110,7 @@ void insb(unsigned long __addr, void *dst, unsigned long count) ...@@ -105,6 +110,7 @@ void insb(unsigned long __addr, void *dst, unsigned long count)
*pb++ = inb(addr); *pb++ = inb(addr);
} }
} }
EXPORT_SYMBOL(insb);
void insw(unsigned long __addr, void *dst, unsigned long count) void insw(unsigned long __addr, void *dst, unsigned long count)
{ {
...@@ -132,6 +138,7 @@ void insw(unsigned long __addr, void *dst, unsigned long count) ...@@ -132,6 +138,7 @@ void insw(unsigned long __addr, void *dst, unsigned long count)
*ps = le16_to_cpu(inw(addr)); *ps = le16_to_cpu(inw(addr));
} }
} }
EXPORT_SYMBOL(insw);
void insl(unsigned long __addr, void *dst, unsigned long count) void insl(unsigned long __addr, void *dst, unsigned long count)
{ {
...@@ -200,4 +207,5 @@ void insl(unsigned long __addr, void *dst, unsigned long count) ...@@ -200,4 +207,5 @@ void insl(unsigned long __addr, void *dst, unsigned long count)
} }
} }
} }
EXPORT_SYMBOL(insl);
/*
* Export of symbols defined in assembler
*/
/* Tell string.h we don't want memcpy etc. as cpp defines */
#define EXPORT_SYMTAB_STROPS
#include <linux/module.h>
#include <linux/string.h>
#include <linux/types.h>
#include <asm/checksum.h>
#include <asm/uaccess.h>
#include <asm/ftrace.h>
/* string functions */
EXPORT_SYMBOL(strlen);
EXPORT_SYMBOL(__strlen_user);
EXPORT_SYMBOL(__strnlen_user);
EXPORT_SYMBOL(strncmp);
/* mem* functions */
extern void *__memscan_zero(void *, size_t);
extern void *__memscan_generic(void *, int, size_t);
extern void *__bzero(void *, size_t);
EXPORT_SYMBOL(memscan);
EXPORT_SYMBOL(__memscan_zero);
EXPORT_SYMBOL(__memscan_generic);
EXPORT_SYMBOL(memcmp);
EXPORT_SYMBOL(memcpy);
EXPORT_SYMBOL(memset);
EXPORT_SYMBOL(__memset);
EXPORT_SYMBOL(memmove);
EXPORT_SYMBOL(__bzero);
/* Moving data to/from/in userspace. */
EXPORT_SYMBOL(__strncpy_from_user);
/* Networking helper routines. */
EXPORT_SYMBOL(csum_partial);
#ifdef CONFIG_MCOUNT
EXPORT_SYMBOL(_mcount);
#endif
/*
* sparc
*/
#ifdef CONFIG_SPARC32
extern int __ashrdi3(int, int);
extern int __ashldi3(int, int);
extern int __lshrdi3(int, int);
extern int __muldi3(int, int);
extern int __divdi3(int, int);
extern void (*__copy_1page)(void *, const void *);
extern void (*bzero_1page)(void *);
extern int __strncmp(const char *, const char *, __kernel_size_t);
extern void ___rw_read_enter(void);
extern void ___rw_read_try(void);
extern void ___rw_read_exit(void);
extern void ___rw_write_enter(void);
extern void ___atomic24_add(void);
extern void ___atomic24_sub(void);
/* Alias functions whose names begin with "." and export the aliases.
* The module references will be fixed up by module_frob_arch_sections.
*/
extern int _Div(int, int);
extern int _Mul(int, int);
extern int _Rem(int, int);
extern unsigned _Udiv(unsigned, unsigned);
extern unsigned _Umul(unsigned, unsigned);
extern unsigned _Urem(unsigned, unsigned);
/* Networking helper routines. */
EXPORT_SYMBOL(__csum_partial_copy_sparc_generic);
/* Special internal versions of library functions. */
EXPORT_SYMBOL(__copy_1page);
EXPORT_SYMBOL(__memcpy);
EXPORT_SYMBOL(__memmove);
EXPORT_SYMBOL(bzero_1page);
/* string functions */
EXPORT_SYMBOL(__strncmp);
/* Moving data to/from/in userspace. */
EXPORT_SYMBOL(__copy_user);
/* Used by asm/spinlock.h */
#ifdef CONFIG_SMP
EXPORT_SYMBOL(___rw_read_enter);
EXPORT_SYMBOL(___rw_read_try);
EXPORT_SYMBOL(___rw_read_exit);
EXPORT_SYMBOL(___rw_write_enter);
#endif
/* Atomic operations. */
EXPORT_SYMBOL(___atomic24_add);
EXPORT_SYMBOL(___atomic24_sub);
EXPORT_SYMBOL(__ashrdi3);
EXPORT_SYMBOL(__ashldi3);
EXPORT_SYMBOL(__lshrdi3);
EXPORT_SYMBOL(__muldi3);
EXPORT_SYMBOL(__divdi3);
EXPORT_SYMBOL(_Rem);
EXPORT_SYMBOL(_Urem);
EXPORT_SYMBOL(_Mul);
EXPORT_SYMBOL(_Umul);
EXPORT_SYMBOL(_Div);
EXPORT_SYMBOL(_Udiv);
#endif
/*
* sparc64
*/
#ifdef CONFIG_SPARC64
/* Networking helper routines. */
EXPORT_SYMBOL(csum_partial_copy_nocheck);
EXPORT_SYMBOL(__csum_partial_copy_from_user);
EXPORT_SYMBOL(__csum_partial_copy_to_user);
EXPORT_SYMBOL(ip_fast_csum);
/* Moving data to/from/in userspace. */
EXPORT_SYMBOL(___copy_to_user);
EXPORT_SYMBOL(___copy_from_user);
EXPORT_SYMBOL(___copy_in_user);
EXPORT_SYMBOL(__clear_user);
/* RW semaphores */
EXPORT_SYMBOL(__down_read);
EXPORT_SYMBOL(__down_read_trylock);
EXPORT_SYMBOL(__down_write);
EXPORT_SYMBOL(__down_write_trylock);
EXPORT_SYMBOL(__up_read);
EXPORT_SYMBOL(__up_write);
EXPORT_SYMBOL(__downgrade_write);
/* Atomic counter implementation. */
EXPORT_SYMBOL(atomic_add);
EXPORT_SYMBOL(atomic_add_ret);
EXPORT_SYMBOL(atomic_sub);
EXPORT_SYMBOL(atomic_sub_ret);
EXPORT_SYMBOL(atomic64_add);
EXPORT_SYMBOL(atomic64_add_ret);
EXPORT_SYMBOL(atomic64_sub);
EXPORT_SYMBOL(atomic64_sub_ret);
/* Atomic bit operations. */
EXPORT_SYMBOL(test_and_set_bit);
EXPORT_SYMBOL(test_and_clear_bit);
EXPORT_SYMBOL(test_and_change_bit);
EXPORT_SYMBOL(set_bit);
EXPORT_SYMBOL(clear_bit);
EXPORT_SYMBOL(change_bit);
/* Special internal versions of library functions. */
EXPORT_SYMBOL(_clear_page);
EXPORT_SYMBOL(clear_user_page);
EXPORT_SYMBOL(copy_user_page);
/* RAID code needs this */
void VISenter(void);
EXPORT_SYMBOL(VISenter);
extern void xor_vis_2(unsigned long, unsigned long *, unsigned long *);
extern void xor_vis_3(unsigned long, unsigned long *, unsigned long *,
unsigned long *);
extern void xor_vis_4(unsigned long, unsigned long *, unsigned long *,
unsigned long *, unsigned long *);
extern void xor_vis_5(unsigned long, unsigned long *, unsigned long *,
unsigned long *, unsigned long *, unsigned long *);
EXPORT_SYMBOL(xor_vis_2);
EXPORT_SYMBOL(xor_vis_3);
EXPORT_SYMBOL(xor_vis_4);
EXPORT_SYMBOL(xor_vis_5);
extern void xor_niagara_2(unsigned long, unsigned long *, unsigned long *);
extern void xor_niagara_3(unsigned long, unsigned long *, unsigned long *,
unsigned long *);
extern void xor_niagara_4(unsigned long, unsigned long *, unsigned long *,
unsigned long *, unsigned long *);
extern void xor_niagara_5(unsigned long, unsigned long *, unsigned long *,
unsigned long *, unsigned long *, unsigned long *);
EXPORT_SYMBOL(xor_niagara_2);
EXPORT_SYMBOL(xor_niagara_3);
EXPORT_SYMBOL(xor_niagara_4);
EXPORT_SYMBOL(xor_niagara_5);
#endif
...@@ -7,6 +7,8 @@ ...@@ -7,6 +7,8 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/string.h> #include <linux/string.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/module.h>
#include <asm/uaccess.h> #include <asm/uaccess.h>
/* Calculating the exact fault address when using /* Calculating the exact fault address when using
...@@ -40,6 +42,7 @@ unsigned long copy_from_user_fixup(void *to, const void __user *from, unsigned l ...@@ -40,6 +42,7 @@ unsigned long copy_from_user_fixup(void *to, const void __user *from, unsigned l
return size; return size;
} }
EXPORT_SYMBOL(copy_from_user_fixup);
unsigned long copy_to_user_fixup(void __user *to, const void *from, unsigned long size) unsigned long copy_to_user_fixup(void __user *to, const void *from, unsigned long size)
{ {
...@@ -47,6 +50,7 @@ unsigned long copy_to_user_fixup(void __user *to, const void *from, unsigned lon ...@@ -47,6 +50,7 @@ unsigned long copy_to_user_fixup(void __user *to, const void *from, unsigned lon
return compute_size((unsigned long) to, size, &offset); return compute_size((unsigned long) to, size, &offset);
} }
EXPORT_SYMBOL(copy_to_user_fixup);
unsigned long copy_in_user_fixup(void __user *to, void __user *from, unsigned long size) unsigned long copy_in_user_fixup(void __user *to, void __user *from, unsigned long size)
{ {
...@@ -64,3 +68,4 @@ unsigned long copy_in_user_fixup(void __user *to, void __user *from, unsigned lo ...@@ -64,3 +68,4 @@ unsigned long copy_in_user_fixup(void __user *to, void __user *from, unsigned lo
return size; return size;
} }
EXPORT_SYMBOL(copy_in_user_fixup);
...@@ -95,3 +95,4 @@ int io_remap_pfn_range(struct vm_area_struct *vma, unsigned long from, ...@@ -95,3 +95,4 @@ int io_remap_pfn_range(struct vm_area_struct *vma, unsigned long from,
flush_tlb_range(vma, beg, end); flush_tlb_range(vma, beg, end);
return error; return error;
} }
EXPORT_SYMBOL(io_remap_pfn_range);
...@@ -161,3 +161,4 @@ int io_remap_pfn_range(struct vm_area_struct *vma, unsigned long from, ...@@ -161,3 +161,4 @@ int io_remap_pfn_range(struct vm_area_struct *vma, unsigned long from,
flush_tlb_range(vma, beg, end); flush_tlb_range(vma, beg, end);
return error; return error;
} }
EXPORT_SYMBOL(io_remap_pfn_range);
...@@ -62,6 +62,7 @@ void *kmap_atomic(struct page *page, enum km_type type) ...@@ -62,6 +62,7 @@ void *kmap_atomic(struct page *page, enum km_type type)
return (void*) vaddr; return (void*) vaddr;
} }
EXPORT_SYMBOL(kmap_atomic);
void kunmap_atomic(void *kvaddr, enum km_type type) void kunmap_atomic(void *kvaddr, enum km_type type)
{ {
...@@ -98,6 +99,7 @@ void kunmap_atomic(void *kvaddr, enum km_type type) ...@@ -98,6 +99,7 @@ void kunmap_atomic(void *kvaddr, enum km_type type)
pagefault_enable(); pagefault_enable();
} }
EXPORT_SYMBOL(kunmap_atomic);
/* We may be fed a pagetable here by ptep_to_xxx and others. */ /* We may be fed a pagetable here by ptep_to_xxx and others. */
struct page *kmap_atomic_to_page(void *ptr) struct page *kmap_atomic_to_page(void *ptr)
......
...@@ -38,11 +38,16 @@ ...@@ -38,11 +38,16 @@
DEFINE_PER_CPU(struct mmu_gather, mmu_gathers); DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);
unsigned long *sparc_valid_addr_bitmap; unsigned long *sparc_valid_addr_bitmap;
EXPORT_SYMBOL(sparc_valid_addr_bitmap);
unsigned long phys_base; unsigned long phys_base;
EXPORT_SYMBOL(phys_base);
unsigned long pfn_base; unsigned long pfn_base;
EXPORT_SYMBOL(pfn_base);
unsigned long page_kernel; unsigned long page_kernel;
EXPORT_SYMBOL(page_kernel);
struct sparc_phys_banks sp_banks[SPARC_PHYS_BANKS+1]; struct sparc_phys_banks sp_banks[SPARC_PHYS_BANKS+1];
unsigned long sparc_unmapped_base; unsigned long sparc_unmapped_base;
...@@ -522,3 +527,4 @@ void sparc_flush_page_to_ram(struct page *page) ...@@ -522,3 +527,4 @@ void sparc_flush_page_to_ram(struct page *page)
if (vaddr) if (vaddr)
__flush_page_to_ram(vaddr); __flush_page_to_ram(vaddr);
} }
EXPORT_SYMBOL(sparc_flush_page_to_ram);
...@@ -146,6 +146,7 @@ static void __init read_obp_memory(const char *property, ...@@ -146,6 +146,7 @@ static void __init read_obp_memory(const char *property,
} }
unsigned long *sparc64_valid_addr_bitmap __read_mostly; unsigned long *sparc64_valid_addr_bitmap __read_mostly;
EXPORT_SYMBOL(sparc64_valid_addr_bitmap);
/* Kernel physical address base and size in bytes. */ /* Kernel physical address base and size in bytes. */
unsigned long kern_base __read_mostly; unsigned long kern_base __read_mostly;
...@@ -369,6 +370,7 @@ void flush_dcache_page(struct page *page) ...@@ -369,6 +370,7 @@ void flush_dcache_page(struct page *page)
out: out:
put_cpu(); put_cpu();
} }
EXPORT_SYMBOL(flush_dcache_page);
void __kprobes flush_icache_range(unsigned long start, unsigned long end) void __kprobes flush_icache_range(unsigned long start, unsigned long end)
{ {
...@@ -396,6 +398,7 @@ void __kprobes flush_icache_range(unsigned long start, unsigned long end) ...@@ -396,6 +398,7 @@ void __kprobes flush_icache_range(unsigned long start, unsigned long end)
} }
} }
} }
EXPORT_SYMBOL(flush_icache_range);
void mmu_info(struct seq_file *m) void mmu_info(struct seq_file *m)
{ {
...@@ -599,6 +602,7 @@ void __flush_dcache_range(unsigned long start, unsigned long end) ...@@ -599,6 +602,7 @@ void __flush_dcache_range(unsigned long start, unsigned long end)
"i" (ASI_DCACHE_INVALIDATE)); "i" (ASI_DCACHE_INVALIDATE));
} }
} }
EXPORT_SYMBOL(__flush_dcache_range);
/* get_new_mmu_context() uses "cache + 1". */ /* get_new_mmu_context() uses "cache + 1". */
DEFINE_SPINLOCK(ctx_alloc_lock); DEFINE_SPINLOCK(ctx_alloc_lock);
......
...@@ -8,16 +8,20 @@ ...@@ -8,16 +8,20 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/module.h>
#include <asm/openprom.h> #include <asm/openprom.h>
#include <asm/oplib.h> #include <asm/oplib.h>
struct linux_romvec *romvec; struct linux_romvec *romvec;
EXPORT_SYMBOL(romvec);
enum prom_major_version prom_vers; enum prom_major_version prom_vers;
unsigned int prom_rev, prom_prev; unsigned int prom_rev, prom_prev;
/* The root node of the prom device tree. */ /* The root node of the prom device tree. */
int prom_root_node; int prom_root_node;
EXPORT_SYMBOL(prom_root_node);
/* Pointer to the device tree operations structure. */ /* Pointer to the device tree operations structure. */
struct linux_nodeops *prom_nodeops; struct linux_nodeops *prom_nodeops;
......
...@@ -8,6 +8,8 @@ ...@@ -8,6 +8,8 @@
#include <linux/types.h> #include <linux/types.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/module.h>
#include <asm/openprom.h> #include <asm/openprom.h>
#include <asm/oplib.h> #include <asm/oplib.h>
#include <asm/auxio.h> #include <asm/auxio.h>
...@@ -44,6 +46,7 @@ prom_feval(char *fstring) ...@@ -44,6 +46,7 @@ prom_feval(char *fstring)
restore_current(); restore_current();
spin_unlock_irqrestore(&prom_lock, flags); spin_unlock_irqrestore(&prom_lock, flags);
} }
EXPORT_SYMBOL(prom_feval);
/* Drop into the prom, with the chance to continue with the 'go' /* Drop into the prom, with the chance to continue with the 'go'
* prom command. * prom command.
......
...@@ -11,6 +11,8 @@ ...@@ -11,6 +11,8 @@
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/module.h>
#include <asm/openprom.h> #include <asm/openprom.h>
#include <asm/oplib.h> #include <asm/oplib.h>
#include <asm/system.h> #include <asm/system.h>
...@@ -54,6 +56,7 @@ void prom_feval(const char *fstring) ...@@ -54,6 +56,7 @@ void prom_feval(const char *fstring)
p1275_cmd("interpret", P1275_ARG(0, P1275_ARG_IN_STRING) | p1275_cmd("interpret", P1275_ARG(0, P1275_ARG_IN_STRING) |
P1275_INOUT(1, 1), fstring); P1275_INOUT(1, 1), fstring);
} }
EXPORT_SYMBOL(prom_feval);
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
extern void smp_capture(void); extern void smp_capture(void);
......
...@@ -6,6 +6,8 @@ ...@@ -6,6 +6,8 @@
*/ */
#include <linux/init.h> #include <linux/init.h>
#include <linux/module.h>
#include <asm/openprom.h> #include <asm/openprom.h>
#include <asm/oplib.h> #include <asm/oplib.h>
#include <asm/types.h> #include <asm/types.h>
...@@ -62,6 +64,7 @@ prom_apply_obio_ranges(struct linux_prom_registers *regs, int nregs) ...@@ -62,6 +64,7 @@ prom_apply_obio_ranges(struct linux_prom_registers *regs, int nregs)
if(num_obio_ranges) if(num_obio_ranges)
prom_adjust_regs(regs, nregs, promlib_obio_ranges, num_obio_ranges); prom_adjust_regs(regs, nregs, promlib_obio_ranges, num_obio_ranges);
} }
EXPORT_SYMBOL(prom_apply_obio_ranges);
void __init prom_ranges_init(void) void __init prom_ranges_init(void)
{ {
......
...@@ -5,13 +5,12 @@ ...@@ -5,13 +5,12 @@
* Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
*/ */
#define PROMLIB_INTERNAL
#include <linux/string.h> #include <linux/string.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/ctype.h> #include <linux/ctype.h>
#include <linux/module.h>
#include <asm/openprom.h> #include <asm/openprom.h>
#include <asm/oplib.h> #include <asm/oplib.h>
...@@ -50,6 +49,7 @@ int prom_getchild(int node) ...@@ -50,6 +49,7 @@ int prom_getchild(int node)
return cnode; return cnode;
} }
EXPORT_SYMBOL(prom_getchild);
/* Internal version of prom_getsibling that does not alter return values. */ /* Internal version of prom_getsibling that does not alter return values. */
int __prom_getsibling(int node) int __prom_getsibling(int node)
...@@ -81,6 +81,7 @@ int prom_getsibling(int node) ...@@ -81,6 +81,7 @@ int prom_getsibling(int node)
return sibnode; return sibnode;
} }
EXPORT_SYMBOL(prom_getsibling);
/* Return the length in bytes of property 'prop' at node 'node'. /* Return the length in bytes of property 'prop' at node 'node'.
* Return -1 on error. * Return -1 on error.
...@@ -99,6 +100,7 @@ int prom_getproplen(int node, const char *prop) ...@@ -99,6 +100,7 @@ int prom_getproplen(int node, const char *prop)
spin_unlock_irqrestore(&prom_lock, flags); spin_unlock_irqrestore(&prom_lock, flags);
return ret; return ret;
} }
EXPORT_SYMBOL(prom_getproplen);
/* Acquire a property 'prop' at node 'node' and place it in /* Acquire a property 'prop' at node 'node' and place it in
* 'buffer' which has a size of 'bufsize'. If the acquisition * 'buffer' which has a size of 'bufsize'. If the acquisition
...@@ -119,6 +121,7 @@ int prom_getproperty(int node, const char *prop, char *buffer, int bufsize) ...@@ -119,6 +121,7 @@ int prom_getproperty(int node, const char *prop, char *buffer, int bufsize)
spin_unlock_irqrestore(&prom_lock, flags); spin_unlock_irqrestore(&prom_lock, flags);
return ret; return ret;
} }
EXPORT_SYMBOL(prom_getproperty);
/* Acquire an integer property and return its value. Returns -1 /* Acquire an integer property and return its value. Returns -1
* on failure. * on failure.
...@@ -132,6 +135,7 @@ int prom_getint(int node, char *prop) ...@@ -132,6 +135,7 @@ int prom_getint(int node, char *prop)
return -1; return -1;
} }
EXPORT_SYMBOL(prom_getint);
/* Acquire an integer property, upon error return the passed default /* Acquire an integer property, upon error return the passed default
* integer. * integer.
...@@ -145,6 +149,7 @@ int prom_getintdefault(int node, char *property, int deflt) ...@@ -145,6 +149,7 @@ int prom_getintdefault(int node, char *property, int deflt)
return retval; return retval;
} }
EXPORT_SYMBOL(prom_getintdefault);
/* Acquire a boolean property, 1=TRUE 0=FALSE. */ /* Acquire a boolean property, 1=TRUE 0=FALSE. */
int prom_getbool(int node, char *prop) int prom_getbool(int node, char *prop)
...@@ -155,6 +160,7 @@ int prom_getbool(int node, char *prop) ...@@ -155,6 +160,7 @@ int prom_getbool(int node, char *prop)
if(retval == -1) return 0; if(retval == -1) return 0;
return 1; return 1;
} }
EXPORT_SYMBOL(prom_getbool);
/* Acquire a property whose value is a string, returns a null /* Acquire a property whose value is a string, returns a null
* string on error. The char pointer is the user supplied string * string on error. The char pointer is the user supplied string
...@@ -169,6 +175,7 @@ void prom_getstring(int node, char *prop, char *user_buf, int ubuf_size) ...@@ -169,6 +175,7 @@ void prom_getstring(int node, char *prop, char *user_buf, int ubuf_size)
user_buf[0] = 0; user_buf[0] = 0;
return; return;
} }
EXPORT_SYMBOL(prom_getstring);
/* Does the device at node 'node' have name 'name'? /* Does the device at node 'node' have name 'name'?
...@@ -204,6 +211,7 @@ int prom_searchsiblings(int node_start, char *nodename) ...@@ -204,6 +211,7 @@ int prom_searchsiblings(int node_start, char *nodename)
return 0; return 0;
} }
EXPORT_SYMBOL(prom_searchsiblings);
/* Interal version of nextprop that does not alter return values. */ /* Interal version of nextprop that does not alter return values. */
char * __prom_nextprop(int node, char * oprop) char * __prom_nextprop(int node, char * oprop)
...@@ -228,6 +236,7 @@ char * prom_firstprop(int node, char *bufer) ...@@ -228,6 +236,7 @@ char * prom_firstprop(int node, char *bufer)
return __prom_nextprop(node, ""); return __prom_nextprop(node, "");
} }
EXPORT_SYMBOL(prom_firstprop);
/* Return the property type string after property type 'oprop' /* Return the property type string after property type 'oprop'
* at node 'node' . Returns empty string if no more * at node 'node' . Returns empty string if no more
...@@ -240,6 +249,7 @@ char * prom_nextprop(int node, char *oprop, char *buffer) ...@@ -240,6 +249,7 @@ char * prom_nextprop(int node, char *oprop, char *buffer)
return __prom_nextprop(node, oprop); return __prom_nextprop(node, oprop);
} }
EXPORT_SYMBOL(prom_nextprop);
int prom_finddevice(char *name) int prom_finddevice(char *name)
{ {
...@@ -287,6 +297,7 @@ int prom_finddevice(char *name) ...@@ -287,6 +297,7 @@ int prom_finddevice(char *name)
} }
return node; return node;
} }
EXPORT_SYMBOL(prom_finddevice);
int prom_node_has_property(int node, char *prop) int prom_node_has_property(int node, char *prop)
{ {
...@@ -299,6 +310,7 @@ int prom_node_has_property(int node, char *prop) ...@@ -299,6 +310,7 @@ int prom_node_has_property(int node, char *prop)
} while (*current_property); } while (*current_property);
return 0; return 0;
} }
EXPORT_SYMBOL(prom_node_has_property);
/* Set property 'pname' at node 'node' to value 'value' which has a length /* Set property 'pname' at node 'node' to value 'value' which has a length
* of 'size' bytes. Return the number of bytes the prom accepted. * of 'size' bytes. Return the number of bytes the prom accepted.
...@@ -316,6 +328,7 @@ int prom_setprop(int node, const char *pname, char *value, int size) ...@@ -316,6 +328,7 @@ int prom_setprop(int node, const char *pname, char *value, int size)
spin_unlock_irqrestore(&prom_lock, flags); spin_unlock_irqrestore(&prom_lock, flags);
return ret; return ret;
} }
EXPORT_SYMBOL(prom_setprop);
int prom_inst2pkg(int inst) int prom_inst2pkg(int inst)
{ {
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include <linux/types.h> #include <linux/types.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/module.h>
#include <asm/openprom.h> #include <asm/openprom.h>
#include <asm/oplib.h> #include <asm/oplib.h>
...@@ -32,6 +33,7 @@ inline int prom_getchild(int node) ...@@ -32,6 +33,7 @@ inline int prom_getchild(int node)
if(cnode == -1) return 0; if(cnode == -1) return 0;
return (int)cnode; return (int)cnode;
} }
EXPORT_SYMBOL(prom_getchild);
inline int prom_getparent(int node) inline int prom_getparent(int node)
{ {
...@@ -63,6 +65,7 @@ inline int prom_getsibling(int node) ...@@ -63,6 +65,7 @@ inline int prom_getsibling(int node)
return sibnode; return sibnode;
} }
EXPORT_SYMBOL(prom_getsibling);
/* Return the length in bytes of property 'prop' at node 'node'. /* Return the length in bytes of property 'prop' at node 'node'.
* Return -1 on error. * Return -1 on error.
...@@ -75,6 +78,7 @@ inline int prom_getproplen(int node, const char *prop) ...@@ -75,6 +78,7 @@ inline int prom_getproplen(int node, const char *prop)
P1275_INOUT(2, 1), P1275_INOUT(2, 1),
node, prop); node, prop);
} }
EXPORT_SYMBOL(prom_getproplen);
/* Acquire a property 'prop' at node 'node' and place it in /* Acquire a property 'prop' at node 'node' and place it in
* 'buffer' which has a size of 'bufsize'. If the acquisition * 'buffer' which has a size of 'bufsize'. If the acquisition
...@@ -97,6 +101,7 @@ inline int prom_getproperty(int node, const char *prop, ...@@ -97,6 +101,7 @@ inline int prom_getproperty(int node, const char *prop,
node, prop, buffer, P1275_SIZE(plen)); node, prop, buffer, P1275_SIZE(plen));
} }
} }
EXPORT_SYMBOL(prom_getproperty);
/* Acquire an integer property and return its value. Returns -1 /* Acquire an integer property and return its value. Returns -1
* on failure. * on failure.
...@@ -110,6 +115,7 @@ inline int prom_getint(int node, const char *prop) ...@@ -110,6 +115,7 @@ inline int prom_getint(int node, const char *prop)
return -1; return -1;
} }
EXPORT_SYMBOL(prom_getint);
/* Acquire an integer property, upon error return the passed default /* Acquire an integer property, upon error return the passed default
* integer. * integer.
...@@ -124,6 +130,7 @@ int prom_getintdefault(int node, const char *property, int deflt) ...@@ -124,6 +130,7 @@ int prom_getintdefault(int node, const char *property, int deflt)
return retval; return retval;
} }
EXPORT_SYMBOL(prom_getintdefault);
/* Acquire a boolean property, 1=TRUE 0=FALSE. */ /* Acquire a boolean property, 1=TRUE 0=FALSE. */
int prom_getbool(int node, const char *prop) int prom_getbool(int node, const char *prop)
...@@ -134,6 +141,7 @@ int prom_getbool(int node, const char *prop) ...@@ -134,6 +141,7 @@ int prom_getbool(int node, const char *prop)
if(retval == -1) return 0; if(retval == -1) return 0;
return 1; return 1;
} }
EXPORT_SYMBOL(prom_getbool);
/* Acquire a property whose value is a string, returns a null /* Acquire a property whose value is a string, returns a null
* string on error. The char pointer is the user supplied string * string on error. The char pointer is the user supplied string
...@@ -148,7 +156,7 @@ void prom_getstring(int node, const char *prop, char *user_buf, int ubuf_size) ...@@ -148,7 +156,7 @@ void prom_getstring(int node, const char *prop, char *user_buf, int ubuf_size)
user_buf[0] = 0; user_buf[0] = 0;
return; return;
} }
EXPORT_SYMBOL(prom_getstring);
/* Does the device at node 'node' have name 'name'? /* Does the device at node 'node' have name 'name'?
* YES = 1 NO = 0 * YES = 1 NO = 0
...@@ -181,6 +189,7 @@ int prom_searchsiblings(int node_start, const char *nodename) ...@@ -181,6 +189,7 @@ int prom_searchsiblings(int node_start, const char *nodename)
return 0; return 0;
} }
EXPORT_SYMBOL(prom_searchsiblings);
/* Return the first property type for node 'node'. /* Return the first property type for node 'node'.
* buffer should be at least 32B in length * buffer should be at least 32B in length
...@@ -194,6 +203,7 @@ inline char *prom_firstprop(int node, char *buffer) ...@@ -194,6 +203,7 @@ inline char *prom_firstprop(int node, char *buffer)
node, (char *) 0x0, buffer); node, (char *) 0x0, buffer);
return buffer; return buffer;
} }
EXPORT_SYMBOL(prom_firstprop);
/* Return the property type string after property type 'oprop' /* Return the property type string after property type 'oprop'
* at node 'node' . Returns NULL string if no more * at node 'node' . Returns NULL string if no more
...@@ -217,6 +227,7 @@ inline char *prom_nextprop(int node, const char *oprop, char *buffer) ...@@ -217,6 +227,7 @@ inline char *prom_nextprop(int node, const char *oprop, char *buffer)
node, oprop, buffer); node, oprop, buffer);
return buffer; return buffer;
} }
EXPORT_SYMBOL(prom_nextprop);
int int
prom_finddevice(const char *name) prom_finddevice(const char *name)
...@@ -228,6 +239,7 @@ prom_finddevice(const char *name) ...@@ -228,6 +239,7 @@ prom_finddevice(const char *name)
P1275_INOUT(1, 1), P1275_INOUT(1, 1),
name); name);
} }
EXPORT_SYMBOL(prom_finddevice);
int prom_node_has_property(int node, const char *prop) int prom_node_has_property(int node, const char *prop)
{ {
...@@ -241,7 +253,8 @@ int prom_node_has_property(int node, const char *prop) ...@@ -241,7 +253,8 @@ int prom_node_has_property(int node, const char *prop)
} while (*buf); } while (*buf);
return 0; return 0;
} }
EXPORT_SYMBOL(prom_node_has_property);
/* Set property 'pname' at node 'node' to value 'value' which has a length /* Set property 'pname' at node 'node' to value 'value' which has a length
* of 'size' bytes. Return the number of bytes the prom accepted. * of 'size' bytes. Return the number of bytes the prom accepted.
*/ */
...@@ -264,6 +277,7 @@ prom_setprop(int node, const char *pname, char *value, int size) ...@@ -264,6 +277,7 @@ prom_setprop(int node, const char *pname, char *value, int size)
P1275_INOUT(4, 1), P1275_INOUT(4, 1),
node, pname, value, P1275_SIZE(size)); node, pname, value, P1275_SIZE(size));
} }
EXPORT_SYMBOL(prom_setprop);
inline int prom_inst2pkg(int inst) inline int prom_inst2pkg(int inst)
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment