[RFC 2/3] powerpc: export all symbols from the definition file

Arnd Bergmann
2008-08-11T14:40:09Z

It's now possible to export symbols from .S files, so move all
exports out of the ppc_ksyms.c file to the definition of the
symbols.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
arch/powerpc/kernel/entry_32.S | 3 +++
arch/powerpc/kernel/entry_64.S | 2 ++
arch/powerpc/kernel/fpu.S | 2 ++
arch/powerpc/kernel/head_32.S | 6 ++++++
arch/powerpc/kernel/head_40x.S | 4 ++++
arch/powerpc/kernel/head_44x.S | 5 +++++
arch/powerpc/kernel/head_64.S | 2 ++
arch/powerpc/kernel/head_8xx.S | 4 ++++
arch/powerpc/kernel/head_fsl_booke.S | 6 ++++++
arch/powerpc/kernel/irq.c | 4 +++-
arch/powerpc/kernel/misc_32.S | 12 ++++++++++++
arch/powerpc/kernel/misc_64.S | 5 +++++
arch/powerpc/kernel/pci-common.c | 2 ++
arch/powerpc/kernel/pci_32.c | 3 +++
arch/powerpc/kernel/process.c | 2 ++
arch/powerpc/kernel/setup-common.c | 1 +
arch/powerpc/kernel/setup_32.c | 5 +++++
arch/powerpc/kernel/signal_32.c | 2 ++
arch/powerpc/kernel/smp.c | 2 ++
arch/powerpc/kernel/time.c | 3 +++
arch/powerpc/kernel/traps.c | 4 ++++
arch/powerpc/lib/checksum_32.S | 6 ++++++
arch/powerpc/lib/checksum_64.S | 5 +++++
arch/powerpc/lib/copy_32.S | 7 +++++++
arch/powerpc/lib/copypage_64.S | 3 +++
arch/powerpc/lib/copyuser_64.S | 3 +++
arch/powerpc/lib/mem_64.S | 3 +++
arch/powerpc/lib/memcpy_64.S | 3 +++
arch/powerpc/lib/string.S | 12 ++++++++++++
arch/powerpc/mm/hash_low_32.S | 4 ++++
arch/powerpc/mm/mmu_context_32.c | 2 ++
arch/powerpc/mm/tlb_32.c | 3 +++
arch/powerpc/sysdev/dcr-low.S | 3 +++
drivers/macintosh/adb.c | 5 +++++
drivers/macintosh/via-cuda.c | 3 +++

35 files changed, 140 insertions(+), 1 deletion(-)

diff --git a/arch/powerpc/kernel/entry_32.S b/arch/powerpc/kernel/entry_32.S
index 1cbbf70..7716264 100644
--- a/arch/powerpc/kernel/entry_32.S
+++ b/arch/powerpc/kernel/entry_32.S
@@ -22,6 +22,7 @@
#include <linux/errno.h>
#include <linux/sys.h>
#include <linux/threads.h>
+#include <linux/module.h>
#include <asm/reg.h>
#include <asm/page.h>
#include <asm/mmu.h>
@@ -209,6 +210,7 @@ transfer_to_handler_cont:
lwz r12,_LINK(r11) /* and return to address in LR */
b fast_exception_return
#endif
+EXPORT_SYMBOL(transfer_to_handler)

/*
* On kernel stack overflow, load up an initial stack pointer
@@ -1196,6 +1198,7 @@ mcount_call:
lwz r10,40(r1)
addi r1, r1, 48
bctr
+EXPORT_SYMBOL(_mcount)

_GLOBAL(ftrace_caller)
/* Based off of objdump optput from glibc */
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S
index 2d802e9..fa65272 100644
--- a/arch/powerpc/kernel/entry_64.S
+++ b/arch/powerpc/kernel/entry_64.S
@@ -18,6 +18,7 @@
* 2 of the License, or (at your option) any later version.
*/

+#include <linux/module.h>
#include <linux/errno.h>
#include <asm/unistd.h>
#include <asm/processor.h>
@@ -898,6 +899,7 @@ mcount_call:
mtlr r0
addi r1, r1, 112
blr
+EXPORT_SYMBOL(_mcount)

_GLOBAL(ftrace_caller)
/* Taken from output of objdump from lib64/glibc */
diff --git a/arch/powerpc/kernel/fpu.S b/arch/powerpc/kernel/fpu.S
index a088c06..6e137b4 100644
--- a/arch/powerpc/kernel/fpu.S
+++ b/arch/powerpc/kernel/fpu.S
@@ -14,6 +14,7 @@
*
*/

+#include <linux/module.h>
#include <asm/reg.h>
#include <asm/page.h>
#include <asm/mmu.h>
@@ -154,6 +155,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_VSX)
PPC_STL r5,ADDROFF(last_task_used_math)(r4)
#endif /* CONFIG_SMP */
blr
+EXPORT_SYMBOL(giveup_fpu)

/*
* These are used in the alignment trap handler when emulating
diff --git a/arch/powerpc/kernel/head_32.S b/arch/powerpc/kernel/head_32.S
index 99ee2f0..d6c8a03 100644
--- a/arch/powerpc/kernel/head_32.S
+++ b/arch/powerpc/kernel/head_32.S
@@ -21,6 +21,7 @@
*
*/

+#include <linux/module.h>
#include <asm/reg.h>
#include <asm/page.h>
#include <asm/mmu.h>
@@ -690,6 +691,7 @@ DataStoreTLBMiss:

.globl mol_trampoline
.set mol_trampoline, i0x2f00
+EXPORT_SYMBOL(mol_trampoline)

. = 0x3000

@@ -801,6 +803,7 @@ giveup_altivec:
#endif /* CONFIG_SMP */
blr
#endif /* CONFIG_ALTIVEC */
+EXPORT_SYMBOL(giveup_altivec)

/*
* This code is jumped to from the startup code to copy
@@ -1092,6 +1095,7 @@ _ENTRY(set_context)
sync
isync
blr
+EXPORT_SYMBOL(set_context)

/*
* An undocumented "feature" of 604e requires that the v bit
@@ -1294,6 +1298,7 @@ sdata:
.globl empty_zero_page
empty_zero_page:
.space 4096
+EXPORT_SYMBOL(empty_zero_page)

.globl swapper_pg_dir
swapper_pg_dir:
@@ -1307,6 +1312,7 @@ intercept_table:
.long 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0
+EXPORT_SYMBOL(intercept_table)

/* Room for two PTE pointers, usually the kernel and current user pointers
* to their respective root page table.
diff --git a/arch/powerpc/kernel/head_40x.S b/arch/powerpc/kernel/head_40x.S
index 56d8e5d..717de09 100644
--- a/arch/powerpc/kernel/head_40x.S
+++ b/arch/powerpc/kernel/head_40x.S
@@ -31,6 +31,7 @@
*
*/

+#include <linux/module.h>
#include <asm/processor.h>
#include <asm/page.h>
#include <asm/mmu.h>
@@ -822,6 +823,7 @@ finish_tlb_load:
*/
_ENTRY(giveup_fpu)
blr
+EXPORT_SYMBOL(giveup_fpu)

/* This is where the main kernel code starts.
*/
@@ -987,6 +989,7 @@ _GLOBAL(set_context)
isync /* Need an isync to flush shadow */
/* TLBs after changing PID */
blr
+EXPORT_SYMBOL(set_context)

/* We put a few things here that have to be page-aligned. This stuff
* goes at the beginning of the data segment, which is page-aligned.
@@ -998,6 +1001,7 @@ sdata:
.globl empty_zero_page
empty_zero_page:
.space 4096
+EXPORT_SYMBOL(empty_zero_page)
.globl swapper_pg_dir
swapper_pg_dir:
.space PGD_TABLE_SIZE
diff --git a/arch/powerpc/kernel/head_44x.S b/arch/powerpc/kernel/head_44x.S
index f3a1ea9..703a70c 100644
--- a/arch/powerpc/kernel/head_44x.S
+++ b/arch/powerpc/kernel/head_44x.S
@@ -28,6 +28,7 @@
* option) any later version.
*/

+#include <linux/module.h>
#include <asm/processor.h>
#include <asm/page.h>
#include <asm/mmu.h>
@@ -604,6 +605,7 @@ _GLOBAL(__fixup_440A_mcheck)
*/
_GLOBAL(giveup_altivec)
blr
+EXPORT_SYMBOL(giveup_altivec)

/*
* extern void giveup_fpu(struct task_struct *prev)
@@ -613,6 +615,7 @@ _GLOBAL(giveup_altivec)
#ifndef CONFIG_PPC_FPU
_GLOBAL(giveup_fpu)
blr
+EXPORT_SYMBOL(giveup_fpu)
#endif

_GLOBAL(set_context)
@@ -628,6 +631,7 @@ _GLOBAL(set_context)
mtspr SPRN_PID,r3
isync /* Force context change */
blr
+EXPORT_SYMBOL(set_context)

/*
* We put a few things here that have to be page-aligned. This stuff
@@ -640,6 +644,7 @@ sdata:
.globl empty_zero_page
empty_zero_page:
.space 4096
+EXPORT_SYMBOL(empty_zero_page)

/*
* To support >32-bit physical addresses, we use an 8KB pgdir.
diff --git a/arch/powerpc/kernel/head_64.S b/arch/powerpc/kernel/head_64.S
index cc8fb47..d807daa 100644
--- a/arch/powerpc/kernel/head_64.S
+++ b/arch/powerpc/kernel/head_64.S
@@ -21,6 +21,7 @@
* 2 of the License, or (at your option) any later version.
*/

+#include <linux/module.h>
#include <linux/threads.h>
#include <asm/reg.h>
#include <asm/page.h>
@@ -1653,6 +1654,7 @@ END_FW_FTR_SECTION_IFSET(FW_FEATURE_ISERIES)
.globl empty_zero_page
empty_zero_page:
.space PAGE_SIZE
+EXPORT_SYMBOL(empty_zero_page)

.globl swapper_pg_dir
swapper_pg_dir:
diff --git a/arch/powerpc/kernel/head_8xx.S b/arch/powerpc/kernel/head_8xx.S
index 3c9452d..c3ef451 100644
--- a/arch/powerpc/kernel/head_8xx.S
+++ b/arch/powerpc/kernel/head_8xx.S
@@ -19,6 +19,7 @@
*
*/

+#include <linux/module.h>
#include <asm/processor.h>
#include <asm/page.h>
#include <asm/mmu.h>
@@ -590,6 +591,7 @@ DataTLBError:
.globl giveup_fpu
giveup_fpu:
blr
+EXPORT_SYMBOL(giveup_fpu)

/*
* This is where the main kernel code starts.
@@ -831,6 +833,7 @@ _GLOBAL(set_context)
#endif
SYNC
blr
+EXPORT_SYMBOL(set_context)

#ifdef CONFIG_8xx_CPU6
/* It's here because it is unique to the 8xx.
@@ -861,6 +864,7 @@ sdata:
.globl empty_zero_page
empty_zero_page:
.space 4096
+EXPORT_SYMBOL(empty_zero_page)

.globl swapper_pg_dir
swapper_pg_dir:
diff --git a/arch/powerpc/kernel/head_fsl_booke.S b/arch/powerpc/kernel/head_fsl_booke.S
index 3cb52fa..7e579fc 100644
--- a/arch/powerpc/kernel/head_fsl_booke.S
+++ b/arch/powerpc/kernel/head_fsl_booke.S
@@ -30,6 +30,7 @@
* option) any later version.
*/

+#include <linux/module.h>
#include <linux/threads.h>
#include <asm/processor.h>
#include <asm/page.h>
@@ -902,6 +903,7 @@ _GLOBAL(loadcam_entry)
*/
_GLOBAL(giveup_altivec)
blr
+EXPORT_SYMBOL(giveup_altivec)

#ifdef CONFIG_SPE
/*
@@ -938,6 +940,7 @@ _GLOBAL(giveup_spe)
#endif /* !CONFIG_SMP */
blr
#endif /* CONFIG_SPE */
+EXPORT_SYMBOL(giveup_spe)

/*
* extern void giveup_fpu(struct task_struct *prev)
@@ -947,6 +950,7 @@ _GLOBAL(giveup_spe)
#ifndef CONFIG_PPC_FPU
_GLOBAL(giveup_fpu)
blr
+EXPORT_SYMBOL(giveup_fpu)
#endif

/*
@@ -980,6 +984,7 @@ _GLOBAL(set_context)
mtspr SPRN_PID,r3
isync /* Force context change */
blr
+EXPORT_SYMBOL(set_context)

_GLOBAL(flush_dcache_L1)
mfspr r3,SPRN_L1CFG0
@@ -1038,6 +1043,7 @@ sdata:
.globl empty_zero_page
empty_zero_page:
.space 4096
+EXPORT_SYMBOL(empty_zero_page)
.globl swapper_pg_dir
swapper_pg_dir:
.space PGD_TABLE_SIZE
diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c
index d972dec..e6a9af6 100644
--- a/arch/powerpc/kernel/irq.c
+++ b/arch/powerpc/kernel/irq.c
@@ -83,9 +83,10 @@ extern int tau_interrupts(int);
#endif
#endif /* CONFIG_PPC32 */

-#ifdef CONFIG_PPC64
EXPORT_SYMBOL(irq_desc);

+#ifdef CONFIG_PPC64
+
int distribute_irqs = 1;

static inline notrace unsigned long get_hard_enabled(void)
@@ -334,6 +335,7 @@ void do_IRQ(struct pt_regs *regs)
}
#endif
}
+EXPORT_SYMBOL(do_IRQ);

void __init init_IRQ(void)
{
diff --git a/arch/powerpc/kernel/misc_32.S b/arch/powerpc/kernel/misc_32.S
index 6321ae3..d8c8b82 100644
--- a/arch/powerpc/kernel/misc_32.S
+++ b/arch/powerpc/kernel/misc_32.S
@@ -16,6 +16,7 @@
*
*/

+#include <linux/module.h>
#include <linux/sys.h>
#include <asm/unistd.h>
#include <asm/errno.h>
@@ -435,6 +436,7 @@ _GLOBAL(_tlbie)
#endif /* CONFIG_SMP */
#endif /* ! CONFIG_40x */
blr
+EXPORT_SYMBOL(_tlbie)

/*
* Flush instruction cache.
@@ -481,6 +483,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_UNIFIED_ID_CACHE)
#endif /* CONFIG_8xx/4xx */
isync
blr
+EXPORT_SYMBOL(flush_instruction_cache)

/*
* Write any modified data cache blocks out to memory
@@ -512,6 +515,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_COHERENT_ICACHE)
sync /* additional sync needed on g4 */
isync
blr
+EXPORT_SYMBOL(__flush_icache_range)
/*
* Write any modified data cache blocks out to memory.
* Does not invalidate the corresponding cache lines (especially for
@@ -554,6 +558,7 @@ _GLOBAL(flush_dcache_range)
bdnz 1b
sync /* wait for dcbst's to get to ram */
blr
+EXPORT_SYMBOL(flush_dcache_range)

/*
* Like above, but invalidate the D-cache. This is used by the 8xx
@@ -670,6 +675,7 @@ _GLOBAL(clear_pages)
addi r3,r3,L1_CACHE_BYTES
bdnz 1b
blr
+EXPORT_SYMBOL(clear_pages)

/*
* Copy a whole page. We use the dcbz instruction on the destination
@@ -741,6 +747,7 @@ _GLOBAL(copy_page)
li r11,4
b 2b
#endif /* CONFIG_8xx */
+EXPORT_SYMBOL(copy_page)

/*
* void atomic_clear_mask(atomic_t mask, atomic_t *addr)
@@ -787,6 +794,7 @@ _GLOBAL(__ashrdi3)
sraw r3,r3,r5 # MSW = MSW >> count
or r4,r4,r7 # LSW |= t2
blr
+EXPORT_SYMBOL(__ashrdi3)

_GLOBAL(__ashldi3)
subfic r6,r5,32
@@ -798,6 +806,7 @@ _GLOBAL(__ashldi3)
slw r4,r4,r5 # LSW = LSW << count
or r3,r3,r7 # MSW |= t2
blr
+EXPORT_SYMBOL(__ashldi3)

_GLOBAL(__lshrdi3)
subfic r6,r5,32
@@ -809,6 +818,7 @@ _GLOBAL(__lshrdi3)
srw r3,r3,r5 # MSW = MSW >> count
or r4,r4,r7 # LSW |= t2
blr
+EXPORT_SYMBOL(__lshrdi3)

/*
* 64-bit comparison: __ucmpdi2(u64 a, u64 b)
@@ -824,6 +834,7 @@ _GLOBAL(__ucmpdi2)
bltlr
li r3,2
blr
+EXPORT_SYMBOL(__ucmpdi2);

_GLOBAL(abs)
srawi r4,r3,31
@@ -861,6 +872,7 @@ _GLOBAL(kernel_thread)
lwz r31,12(r1)
addi r1,r1,16
blr
+EXPORT_SYMBOL(kernel_thread)

/*
* This routine is just here to keep GCC happy - sigh...
diff --git a/arch/powerpc/kernel/misc_64.S b/arch/powerpc/kernel/misc_64.S
index 4dd70cf..b1d05c0 100644
--- a/arch/powerpc/kernel/misc_64.S
+++ b/arch/powerpc/kernel/misc_64.S
@@ -14,6 +14,7 @@
*
*/

+#include <linux/module.h>
#include <linux/sys.h>
#include <asm/unistd.h>
#include <asm/errno.h>
@@ -108,6 +109,7 @@ _KPROBE(__flush_icache_range)
isync
blr
.previous .text
+EXPORT_SYMBOL(__flush_icache_range)
/*
* Like above, but only do the D-cache.
*
@@ -137,6 +139,7 @@ _GLOBAL(flush_dcache_range)
bdnz 0b
sync
blr
+EXPORT_SYMBOL(flush_dcache_range)

/*
* Like above, but works on non-mapped physical addresses.
@@ -442,6 +445,7 @@ _GLOBAL(kernel_thread)
ld r29,-24(r1)
ld r30,-16(r1)
blr
+EXPORT_SYMBOL(kernel_thread)

/*
* disable_kernel_fp()
@@ -503,6 +507,7 @@ _GLOBAL(giveup_altivec)
std r5,0(r4)
#endif /* CONFIG_SMP */
blr
+EXPORT_SYMBOL(giveup_altivec)

#endif /* CONFIG_ALTIVEC */

diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c
index 224e9a1..3e7b258 100644
--- a/arch/powerpc/kernel/pci-common.c
+++ b/arch/powerpc/kernel/pci-common.c
@@ -23,6 +23,7 @@
#include <linux/string.h>
#include <linux/init.h>
#include <linux/bootmem.h>
+#include <linux/module.h>
#include <linux/mm.h>
#include <linux/list.h>
#include <linux/syscalls.h>
@@ -52,6 +53,7 @@ static int global_phb_number; /* Global phb counter */

/* ISA Memory physical address */
resource_size_t isa_mem_base;
+EXPORT_SYMBOL(isa_mem_base);

/* Default PCI flags is 0 */
unsigned int ppc_pci_flags;
diff --git a/arch/powerpc/kernel/pci_32.c b/arch/powerpc/kernel/pci_32.c
index 88db4ff..329acae 100644
--- a/arch/powerpc/kernel/pci_32.c
+++ b/arch/powerpc/kernel/pci_32.c
@@ -3,6 +3,7 @@
*/

#include <linux/kernel.h>
+#include <linux/module.h>
#include <linux/pci.h>
#include <linux/delay.h>
#include <linux/string.h>
@@ -33,7 +34,9 @@
#endif

unsigned long isa_io_base = 0;
+EXPORT_SYMBOL(isa_io_base);
unsigned long pci_dram_offset = 0;
+EXPORT_SYMBOL(pci_dram_offset);
int pcibios_assign_bus_offset = 1;

void pcibios_make_OF_bus_map(void);
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
index 957bded..c832697 100644
--- a/arch/powerpc/kernel/process.c
+++ b/arch/powerpc/kernel/process.c
@@ -167,6 +167,7 @@ void giveup_vsx(struct task_struct *tsk)
giveup_altivec(tsk);
__giveup_vsx(tsk);
}
+EXPORT_SYMBOL(giveup_vsx);

void flush_vsx_to_thread(struct task_struct *tsk)
{
@@ -760,6 +761,7 @@ void start_thread(struct pt_regs *regs, unsigned long start, unsigned long sp)
current->thread.used_spe = 0;
#endif /* CONFIG_SPE */
}
+EXPORT_SYMBOL(start_thread);

#define PR_FP_ALL_EXCEPT (PR_FP_EXC_DIV | PR_FP_EXC_OVF | PR_FP_EXC_UND \
| PR_FP_EXC_RES | PR_FP_EXC_INV)
diff --git a/arch/powerpc/kernel/setup-common.c b/arch/powerpc/kernel/setup-common.c
index 9cc5a52..174614d 100644
--- a/arch/powerpc/kernel/setup-common.c
+++ b/arch/powerpc/kernel/setup-common.c
@@ -91,6 +91,7 @@ struct screen_info screen_info = {
.orig_video_isVGA = 1,
.orig_video_points = 16
};
+EXPORT_SYMBOL(screen_info);

#ifdef __DO_IRQ_CANON
/* XXX should go elsewhere eventually */
diff --git a/arch/powerpc/kernel/setup_32.c b/arch/powerpc/kernel/setup_32.c
index 066e65c..f871152 100644
--- a/arch/powerpc/kernel/setup_32.c
+++ b/arch/powerpc/kernel/setup_32.c
@@ -50,8 +50,13 @@ EXPORT_SYMBOL_GPL(boot_cpuid);
int boot_cpuid_phys;

unsigned long ISA_DMA_THRESHOLD;
+EXPORT_SYMBOL(ISA_DMA_THRESHOLD);
+
unsigned int DMA_MODE_READ;
+EXPORT_SYMBOL(DMA_MODE_READ);
+
unsigned int DMA_MODE_WRITE;
+EXPORT_SYMBOL(DMA_MODE_WRITE);

int have_of = 1;

diff --git a/arch/powerpc/kernel/signal_32.c b/arch/powerpc/kernel/signal_32.c
index 3e80aa3..ca17314 100644
--- a/arch/powerpc/kernel/signal_32.c
+++ b/arch/powerpc/kernel/signal_32.c
@@ -25,6 +25,7 @@
#include <linux/errno.h>
#include <linux/elf.h>
#include <linux/ptrace.h>
+#include <linux/module.h>
#ifdef CONFIG_PPC64
#include <linux/syscalls.h>
#include <linux/compat.h>
@@ -1288,3 +1289,4 @@ badframe:
force_sig(SIGSEGV, current);
return 0;
}
+EXPORT_SYMBOL(sys_sigreturn);
diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c
index 5337ca7..65f4c3a 100644
--- a/arch/powerpc/kernel/smp.c
+++ b/arch/powerpc/kernel/smp.c
@@ -58,6 +58,8 @@
#endif

int smp_hw_index[NR_CPUS];
+EXPORT_SYMBOL(smp_hw_index);
+
struct thread_info *secondary_ti;

cpumask_t cpu_possible_map = CPU_MASK_NONE;
diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c
index e2ee66b..fc4646d 100644
--- a/arch/powerpc/kernel/time.c
+++ b/arch/powerpc/kernel/time.c
@@ -142,6 +142,7 @@ static void __init clocksource_init(void);
#endif

unsigned long tb_ticks_per_jiffy;
+EXPORT_SYMBOL(tb_ticks_per_jiffy);
unsigned long tb_ticks_per_usec = 100; /* sane default */
EXPORT_SYMBOL(tb_ticks_per_usec);
unsigned long tb_ticks_per_sec;
@@ -612,6 +613,7 @@ void timer_interrupt(struct pt_regs * regs)
irq_exit();
set_irq_regs(old_regs);
}
+EXPORT_SYMBOL(timer_interrupt);

void wakeup_decrementer(void)
{
@@ -1091,6 +1093,7 @@ void to_tm(int tim, struct rtc_time * tm)
*/
GregorianDay(tm);
}
+EXPORT_SYMBOL(to_tm);

/* Auxiliary function to compute scaling factors */
/* Actually the choice of a timebase running at 1/4 the of the bus
diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c
index 81ccb8d..8d9c77a 100644
--- a/arch/powerpc/kernel/traps.c
+++ b/arch/powerpc/kernel/traps.c
@@ -533,6 +533,7 @@ void machine_check_exception(struct pt_regs *regs)
if (!(regs->msr & MSR_RI))
panic("Unrecoverable Machine check");
}
+EXPORT_SYMBOL(machine_check_exception);

void SMIException(struct pt_regs *regs)
{
@@ -574,6 +575,7 @@ void __kprobes single_step_exception(struct pt_regs *regs)

_exception(SIGTRAP, regs, TRAP_TRACE, regs->nip);
}
+EXPORT_SYMBOL(single_step_exception);

/*
* After we have successfully emulated an instruction, we have to
@@ -893,6 +895,7 @@ void __kprobes program_check_exception(struct pt_regs *regs)
else
_exception(SIGILL, regs, ILL_ILLOPC, regs->nip);
}
+EXPORT_SYMBOL(program_check_exception);

void alignment_exception(struct pt_regs *regs)
{
@@ -921,6 +924,7 @@ void alignment_exception(struct pt_regs *regs)
else
bad_page_fault(regs, regs->dar, sig);
}
+EXPORT_SYMBOL(alignment_exception);

void StackOverflow(struct pt_regs *regs)
{
diff --git a/arch/powerpc/lib/checksum_32.S b/arch/powerpc/lib/checksum_32.S
index 7874e8a..194d9bb 100644
--- a/arch/powerpc/lib/checksum_32.S
+++ b/arch/powerpc/lib/checksum_32.S
@@ -12,6 +12,7 @@
* Severely hacked about by Paul Mackerras (paulus@cs.anu.edu.au).
*/

+#include <linux/module.h>
#include <linux/sys.h>
#include <asm/processor.h>
#include <asm/errno.h>
@@ -39,6 +40,7 @@ _GLOBAL(ip_fast_csum)
not r3,r3
srwi r3,r3,16
blr
+EXPORT_SYMBOL(ip_fast_csum)

/*
* Compute checksum of TCP or UDP pseudo-header:
@@ -55,6 +57,7 @@ _GLOBAL(csum_tcpudp_magic)
not r3,r3
srwi r3,r3,16
blr
+EXPORT_SYMBOL(csum_tcpudp_magic)

/*
* computes the checksum of a memory block at buff, length len,
@@ -93,6 +96,7 @@ _GLOBAL(csum_partial)
adde r0,r0,r5
5: addze r3,r0 /* add in final carry */
blr
+EXPORT_SYMBOL(csum_partial)

/*
* Computes the checksum of a memory block at src, length len,
@@ -203,6 +207,8 @@ dst_error:
1: addze r3,r0
blr

+EXPORT_SYMBOL(csum_partial_copy_generic)
+
.section __ex_table,"a"
.long 81b,src_error_1
.long 91b,dst_error
diff --git a/arch/powerpc/lib/checksum_64.S b/arch/powerpc/lib/checksum_64.S
index ef96c6c..c6a7b67 100644
--- a/arch/powerpc/lib/checksum_64.S
+++ b/arch/powerpc/lib/checksum_64.S
@@ -12,6 +12,7 @@
* Severely hacked about by Paul Mackerras (paulus@cs.anu.edu.au).
*/

+#include <linux/module.h>
#include <linux/sys.h>
#include <asm/processor.h>
#include <asm/errno.h>
@@ -43,6 +44,7 @@ _GLOBAL(ip_fast_csum)
not r3,r3
srwi r3,r3,16
blr
+EXPORT_SYMBOL(ip_fast_csum)

/*
* Compute checksum of TCP or UDP pseudo-header:
@@ -64,6 +66,7 @@ _GLOBAL(csum_tcpudp_magic)
not r3,r3
srwi r3,r3,16
blr
+EXPORT_SYMBOL(csum_tcpudp_magic)

/*
* Computes the checksum of a memory block at buff, length len,
@@ -114,6 +117,7 @@ _GLOBAL(csum_partial)
add r3,r4,r5
srdi r3,r3,32
blr
+EXPORT_SYMBOL(csum_partial)

/*
* Computes the checksum of a memory block at src, length len,
@@ -169,6 +173,7 @@ _GLOBAL(csum_partial_copy_generic)
add r3,r4,r3
srdi r3,r3,32
blr
+EXPORT_SYMBOL(csum_partial_copy_generic)

/* These shouldn't go in the fixup section, since that would
cause the ex_table addresses to get out of order. */
diff --git a/arch/powerpc/lib/copy_32.S b/arch/powerpc/lib/copy_32.S
index c657de5..aa3645d 100644
--- a/arch/powerpc/lib/copy_32.S
+++ b/arch/powerpc/lib/copy_32.S
@@ -8,6 +8,7 @@
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
*/
+#include <linux/module.h>
#include <asm/processor.h>
#include <asm/cache.h>
#include <asm/errno.h>
@@ -154,6 +155,7 @@ _GLOBAL(memset)
8: stbu r4,1(r6)
bdnz 8b
blr
+EXPORT_SYMBOL(memset)

/*
* This version uses dcbz on the complete cache lines in the
@@ -235,6 +237,7 @@ _GLOBAL(cacheable_memcpy)
addi r6,r6,1
bdnz 40b
65: blr
+EXPORT_SYMBOL(cacheable_memcpy)

_GLOBAL(memmove)
cmplw 0,r3,r4
@@ -281,6 +284,8 @@ _GLOBAL(memcpy)
beq 2b
mtctr r7
b 1b
+EXPORT_SYMBOL(memmove)
+EXPORT_SYMBOL(memcpy)

_GLOBAL(backwards_memcpy)
rlwinm. r7,r5,32-3,3,31 /* r0 = r5 >> 3 */
@@ -540,3 +545,5 @@ _GLOBAL(__copy_tofrom_user)
.long 112b,120b
.long 114b,120b
.text
+
+EXPORT_SYMBOL(__copy_tofrom_user)
diff --git a/arch/powerpc/lib/copypage_64.S b/arch/powerpc/lib/copypage_64.S
index f9837f4..e81ffa2 100644
--- a/arch/powerpc/lib/copypage_64.S
+++ b/arch/powerpc/lib/copypage_64.S
@@ -6,6 +6,7 @@
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
*/
+#include <linux/module.h>
#include <asm/processor.h>
#include <asm/ppc_asm.h>

@@ -117,3 +118,5 @@ _GLOBAL(copy_4K_page)
ld r30,-16(1)
ld r31,-8(1)
blr
+
+EXPORT_SYMBOL(copy_4K_page)
diff --git a/arch/powerpc/lib/copyuser_64.S b/arch/powerpc/lib/copyuser_64.S
index 25ec537..2342fd6 100644
--- a/arch/powerpc/lib/copyuser_64.S
+++ b/arch/powerpc/lib/copyuser_64.S
@@ -6,6 +6,7 @@
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
*/
+#include <linux/module.h>
#include <asm/processor.h>
#include <asm/ppc_asm.h>

@@ -572,3 +573,5 @@ _GLOBAL(__copy_tofrom_user)
.llong 89b,100b
.llong 90b,100b
.llong 91b,100b
+
+EXPORT_SYMBOL(__copy_tofrom_user)
diff --git a/arch/powerpc/lib/mem_64.S b/arch/powerpc/lib/mem_64.S
index 11ce045..2a18d58 100644
--- a/arch/powerpc/lib/mem_64.S
+++ b/arch/powerpc/lib/mem_64.S
@@ -8,6 +8,7 @@
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
*/
+#include <linux/module.h>
#include <asm/processor.h>
#include <asm/errno.h>
#include <asm/ppc_asm.h>
@@ -76,11 +77,13 @@ _GLOBAL(memset)
10: bflr 31
stb r4,0(r6)
blr
+EXPORT_SYMBOL(memset)

_GLOBAL(memmove)
cmplw 0,r3,r4
bgt .backwards_memcpy
b .memcpy
+EXPORT_SYMBOL(memmove)

_GLOBAL(backwards_memcpy)
rlwinm. r7,r5,32-3,3,31 /* r0 = r5 >> 3 */
diff --git a/arch/powerpc/lib/memcpy_64.S b/arch/powerpc/lib/memcpy_64.S
index 3f13112..839945b 100644
--- a/arch/powerpc/lib/memcpy_64.S
+++ b/arch/powerpc/lib/memcpy_64.S
@@ -6,6 +6,7 @@
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
*/
+#include <linux/module.h>
#include <asm/processor.h>
#include <asm/ppc_asm.h>

@@ -171,3 +172,5 @@ _GLOBAL(memcpy)
stb r0,0(r3)
4: ld r3,48(r1) /* return dest pointer */
blr
+
+EXPORT_SYMBOL(memcpy)
diff --git a/arch/powerpc/lib/string.S b/arch/powerpc/lib/string.S
index 64e2e49..929100a 100644
--- a/arch/powerpc/lib/string.S
+++ b/arch/powerpc/lib/string.S
@@ -8,6 +8,7 @@
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
*/
+#include <linux/module.h>
#include <asm/processor.h>
#include <asm/errno.h>
#include <asm/ppc_asm.h>
@@ -24,6 +25,7 @@ _GLOBAL(strcpy)
stbu r0,1(r5)
bne 1b
blr
+EXPORT_SYMBOL(strcpy)

/* This clears out any unused part of the destination buffer,
just as the libc version does. -- paulus */
@@ -44,6 +46,7 @@ _GLOBAL(strncpy)
2: stbu r0,1(r6) /* clear it out if so */
bdnz 2b
blr
+EXPORT_SYMBOL(strncpy)

_GLOBAL(strcat)
addi r5,r3,-1
@@ -57,6 +60,7 @@ _GLOBAL(strcat)
stbu r0,1(r5)
bne 1b
blr
+EXPORT_SYMBOL(strcat)

_GLOBAL(strcmp)
addi r5,r3,-1
@@ -68,6 +72,7 @@ _GLOBAL(strcmp)
beqlr 1
beq 1b
blr
+EXPORT_SYMBOL(strcmp)

_GLOBAL(strncmp)
PPC_LCMPI r5,0
@@ -82,6 +87,7 @@ _GLOBAL(strncmp)
beqlr 1
bdnzt eq,1b
blr
+EXPORT_SYMBOL(strncmp)

_GLOBAL(strlen)
addi r4,r3,-1
@@ -90,6 +96,7 @@ _GLOBAL(strlen)
bne 1b
subf r3,r3,r4
blr
+EXPORT_SYMBOL(strlen)

_GLOBAL(memcmp)
cmpwi 0,r5,0
@@ -104,6 +111,7 @@ _GLOBAL(memcmp)
blr
2: li r3,0
blr
+EXPORT_SYMBOL(memcmp)

_GLOBAL(memchr)
cmpwi 0,r5,0
@@ -116,6 +124,7 @@ _GLOBAL(memchr)
beqlr
2: li r3,0
blr
+EXPORT_SYMBOL(memchr)

_GLOBAL(__clear_user)
addi r6,r3,-4
@@ -158,6 +167,7 @@ _GLOBAL(__clear_user)
PPC_LONG 1b,91b
PPC_LONG 8b,92b
.text
+EXPORT_SYMBOL(__clear_user)

_GLOBAL(__strncpy_from_user)
addi r6,r3,-1
@@ -179,6 +189,7 @@ _GLOBAL(__strncpy_from_user)
.section __ex_table,"a"
PPC_LONG 1b,99b
.text
+EXPORT_SYMBOL(__strncpy_from_user)

/* r3 = str, r4 = len (> 0), r5 = top (highest addr) */
_GLOBAL(__strnlen_user)
@@ -203,3 +214,4 @@ _GLOBAL(__strnlen_user)

.section __ex_table,"a"
PPC_LONG 1b,99b
+EXPORT_SYMBOL(__strnlen_user)
diff --git a/arch/powerpc/mm/hash_low_32.S b/arch/powerpc/mm/hash_low_32.S
index b9ba7d9..ac9bef1 100644
--- a/arch/powerpc/mm/hash_low_32.S
+++ b/arch/powerpc/mm/hash_low_32.S
@@ -19,6 +19,7 @@
*
*/

+#include <linux/module.h>
#include <asm/reg.h>
#include <asm/page.h>
#include <asm/pgtable.h>
@@ -33,6 +34,7 @@
.globl mmu_hash_lock
mmu_hash_lock:
.space 4
+EXPORT_SYMBOL(mmu_hash_lock); /* For MOL */
#endif /* CONFIG_SMP */

/*
@@ -609,3 +611,5 @@ _GLOBAL(flush_hash_patch_B)
SYNC_601
isync
blr
+
+EXPORT_SYMBOL(flush_hash_pages); /* For MOL */
diff --git a/arch/powerpc/mm/mmu_context_32.c b/arch/powerpc/mm/mmu_context_32.c
index cc32ba4..b990cc4 100644
--- a/arch/powerpc/mm/mmu_context_32.c
+++ b/arch/powerpc/mm/mmu_context_32.c
@@ -23,12 +23,14 @@
*/

#include <linux/mm.h>
+#include <linux/module.h>
#include <linux/init.h>

#include <asm/mmu_context.h>
#include <asm/tlbflush.h>

unsigned long next_mmu_context;
+EXPORT_SYMBOL(next_mmu_context);
unsigned long context_map[LAST_CONTEXT / BITS_PER_LONG + 1];
#ifdef FEW_CONTEXTS
atomic_t nr_free_contexts;
diff --git a/arch/powerpc/mm/tlb_32.c b/arch/powerpc/mm/tlb_32.c
index eb4b512..2523d71 100644
--- a/arch/powerpc/mm/tlb_32.c
+++ b/arch/powerpc/mm/tlb_32.c
@@ -24,6 +24,7 @@

#include <linux/kernel.h>
#include <linux/mm.h>
+#include <linux/module.h>
#include <linux/init.h>
#include <linux/highmem.h>
#include <linux/pagemap.h>
@@ -136,6 +137,7 @@ void flush_tlb_kernel_range(unsigned long start, unsigned long end)
flush_range(&init_mm, start, end);
FINISH_FLUSH;
}
+EXPORT_SYMBOL(flush_tlb_kernel_range);

/*
* Flush all the (user) entries for the address space described by mm.
@@ -175,6 +177,7 @@ void flush_tlb_page(struct vm_area_struct *vma, unsigned long vmaddr)
flush_hash_pages(mm->context.id, vmaddr, pmd_val(*pmd), 1);
FINISH_FLUSH;
}
+EXPORT_SYMBOL(flush_tlb_page);

/*
* For each address in the range, find the pte for the address
diff --git a/arch/powerpc/sysdev/dcr-low.S b/arch/powerpc/sysdev/dcr-low.S
index 2078f39..27bc06c 100644
--- a/arch/powerpc/sysdev/dcr-low.S
+++ b/arch/powerpc/sysdev/dcr-low.S
@@ -9,6 +9,7 @@
* option) any later version.
*/

+#include <linux/module.h>
#include <asm/ppc_asm.h>
#include <asm/processor.h>

@@ -22,9 +23,11 @@

_GLOBAL(__mfdcr)
DCR_ACCESS_PROLOG(__mfdcr_table)
+EXPORT_SYMBOL(__mfdcr);

_GLOBAL(__mtdcr)
DCR_ACCESS_PROLOG(__mtdcr_table)
+EXPORT_SYMBOL(__mtdcr);

__mfdcr_table:
mfdcr r3,0; blr
iff --git a/drivers/macintosh/adb.c b/drivers/macintosh/adb.c
index cae5248..b915cc4 100644
--- a/drivers/macintosh/adb.c
+++ b/drivers/macintosh/adb.c
@@ -390,6 +390,7 @@ adb_poll(void)
return;
adb_controller->poll();
}
+EXPORT_SYMBOL(adb_poll);

static void adb_sync_req_done(struct adb_request *req)
{
@@ -439,6 +440,7 @@ adb_request(struct adb_request *req, void (*done)(struct adb_request *),

return rc;
}
+EXPORT_SYMBOL(adb_request);

/* Ultimately this should return the number of devices with
the given default id.
@@ -474,6 +476,7 @@ adb_register(int default_id, int handler_id, struct adb_ids *ids,
mutex_unlock(&adb_handler_mutex);
return ids->nids;
}
+EXPORT_SYMBOL(adb_register);

int
adb_unregister(int index)
@@ -495,6 +498,7 @@ adb_unregister(int index)
mutex_unlock(&adb_handler_mutex);
return ret;
}
+EXPORT_SYMBOL(adb_unregister);

void
adb_input(unsigned char *buf, int nb, int autopoll)
@@ -561,6 +565,7 @@ adb_try_handler_change(int address, int new_id)
mutex_unlock(&adb_handler_mutex);
return ret;
}
+EXPORT_SYMBOL(adb_try_handler_change);

int
adb_get_infos(int address, int *original_address, int *handler_id)
diff --git a/drivers/macintosh/via-cuda.c b/drivers/macintosh/via-cuda.c
index 741a93a..91dd6bf 100644
--- a/drivers/macintosh/via-cuda.c
+++ b/drivers/macintosh/via-cuda.c
@@ -10,6 +10,7 @@
*/
#include <stdarg.h>
#include <linux/types.h>
+#include <linux/module.h>
#include <linux/errno.h>
#include <linux/kernel.h>
#include <linux/delay.h>
@@ -375,6 +376,7 @@ cuda_request(struct adb_request *req, void (*done)(struct adb_request *),
req->reply_expected = 1;
return cuda_write(req);
}
+EXPORT_SYMBOL(cuda_request);

static int
cuda_write(struct adb_request *req)
@@ -435,6 +437,7 @@ cuda_poll(void)
cuda_interrupt(0, NULL);
enable_irq(cuda_irq);
}
+EXPORT_SYMBOL(cuda_poll);

static irqreturn_t
cuda_interrupt(int irq, void *arg)