Bläddra i källkod

[PARISC] more ENTRY(), ENDPROC(), END() conversions

Signed-off-by: Helge Deller <deller@gmx.de>
Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
Helge Deller 18 år sedan
förälder
incheckning
8e9e9844b4

+ 9 - 6
arch/parisc/kernel/head.S

@@ -2,7 +2,7 @@
  * License.  See the file "COPYING" in the main directory of this archive
  * License.  See the file "COPYING" in the main directory of this archive
  * for more details.
  * for more details.
  *
  *
- * Copyright (C) 1999 by Helge Deller
+ * Copyright (C) 1999-2007 by Helge Deller <deller@gmx.de>
  * Copyright 1999 SuSE GmbH (Philipp Rumpf)
  * Copyright 1999 SuSE GmbH (Philipp Rumpf)
  * Copyright 1999 Philipp Rumpf (prumpf@tux.org)
  * Copyright 1999 Philipp Rumpf (prumpf@tux.org)
  * Copyright 2000 Hewlett Packard (Paul Bame, bame@puffin.external.hp.com)
  * Copyright 2000 Hewlett Packard (Paul Bame, bame@puffin.external.hp.com)
@@ -19,16 +19,17 @@
 #include <asm/assembly.h>
 #include <asm/assembly.h>
 #include <asm/pgtable.h>
 #include <asm/pgtable.h>
 
 
+#include <linux/linkage.h>
+
 	.level	LEVEL
 	.level	LEVEL
 
 
 	.data
 	.data
-
-	.export boot_args
-boot_args:
+ENTRY(boot_args)
 	.word 0 /* arg0 */
 	.word 0 /* arg0 */
 	.word 0 /* arg1 */
 	.word 0 /* arg1 */
 	.word 0 /* arg2 */
 	.word 0 /* arg2 */
 	.word 0 /* arg3 */
 	.word 0 /* arg3 */
+END(boot_args)
 
 
 	.text
 	.text
 	.align	4
 	.align	4
@@ -38,10 +39,9 @@ boot_args:
         .import fault_vector_11,code    /* IVA parisc 1.1 32 bit */
         .import fault_vector_11,code    /* IVA parisc 1.1 32 bit */
 	.import	$global$		/* forward declaration */
 	.import	$global$		/* forward declaration */
 #endif /*!CONFIG_64BIT*/
 #endif /*!CONFIG_64BIT*/
-	.export stext
 	.export _stext,data		/* Kernel want it this way! */
 	.export _stext,data		/* Kernel want it this way! */
 _stext:
 _stext:
-stext:
+ENTRY(stext)
 	.proc
 	.proc
 	.callinfo
 	.callinfo
 
 
@@ -343,6 +343,9 @@ smp_slave_stext:
 
 
 	.procend
 	.procend
 #endif /* CONFIG_SMP */
 #endif /* CONFIG_SMP */
+
+ENDPROC(stext)
+
 #ifndef CONFIG_64BIT
 #ifndef CONFIG_64BIT
 	.data
 	.data
 
 

+ 7 - 9
arch/parisc/kernel/hpmc.S

@@ -46,6 +46,8 @@
 #include <asm/assembly.h>
 #include <asm/assembly.h>
 #include <asm/pdc.h>
 #include <asm/pdc.h>
 
 
+#include <linux/linkage.h>
+
 	/*
 	/*
 	 * stack for os_hpmc, the HPMC handler.
 	 * stack for os_hpmc, the HPMC handler.
 	 * buffer for IODC procedures (for the HPMC handler).
 	 * buffer for IODC procedures (for the HPMC handler).
@@ -69,17 +71,15 @@ hpmc_raddr:
 
 
 #define HPMC_PIM_DATA_SIZE 896 /* Enough to hold all architected 2.0 state */
 #define HPMC_PIM_DATA_SIZE 896 /* Enough to hold all architected 2.0 state */
 
 
-	.export hpmc_pim_data, data
 	.align 8
 	.align 8
-hpmc_pim_data:
+ENTRY(hpmc_pim_data)
 	.block HPMC_PIM_DATA_SIZE
 	.block HPMC_PIM_DATA_SIZE
+END(hpmc_pim_data)
 
 
 	.text
 	.text
 
 
-	.export os_hpmc, code
 	.import intr_save, code
 	.import intr_save, code
-
-os_hpmc:
+ENTRY(os_hpmc)
 
 
 	/*
 	/*
 	 * registers modified:
 	 * registers modified:
@@ -294,11 +294,9 @@ os_hpmc_6:
 
 
 	b .
 	b .
 	nop
 	nop
+ENDPROC(os_hpmc)
 
 
 	/* this label used to compute os_hpmc checksum */
 	/* this label used to compute os_hpmc checksum */
-
-	.export os_hpmc_end, code
-
-os_hpmc_end:
+ENTRY(os_hpmc_end)
 
 
 	nop
 	nop

+ 34 - 46
arch/parisc/kernel/pacache.S

@@ -45,13 +45,12 @@
 #include <asm/assembly.h>
 #include <asm/assembly.h>
 #include <asm/pgtable.h>
 #include <asm/pgtable.h>
 #include <asm/cache.h>
 #include <asm/cache.h>
+#include <linux/linkage.h>
 
 
 	.text
 	.text
 	.align	128
 	.align	128
 
 
-	.export flush_tlb_all_local,code
-
-flush_tlb_all_local:
+ENTRY(flush_tlb_all_local)
 	.proc
 	.proc
 	.callinfo NO_CALLS
 	.callinfo NO_CALLS
 	.entry
 	.entry
@@ -200,11 +199,11 @@ fdtdone:
 
 
 	.exit
 	.exit
 	.procend
 	.procend
+ENDPROC(flush_tlb_all_local)
 
 
-	.export flush_instruction_cache_local,code
 	.import cache_info,data
 	.import cache_info,data
 
 
-flush_instruction_cache_local:
+ENTRY(flush_instruction_cache_local)
 	.proc
 	.proc
 	.callinfo NO_CALLS
 	.callinfo NO_CALLS
 	.entry
 	.entry
@@ -241,11 +240,11 @@ fisync:
 	.exit
 	.exit
 
 
 	.procend
 	.procend
+ENDPROC(flush_instruction_cache_local)
 
 
-	.export flush_data_cache_local, code
-	.import cache_info, data
 
 
-flush_data_cache_local:
+	.import cache_info, data
+ENTRY(flush_data_cache_local)
 	.proc
 	.proc
 	.callinfo NO_CALLS
 	.callinfo NO_CALLS
 	.entry
 	.entry
@@ -283,11 +282,11 @@ fdsync:
 	.exit
 	.exit
 
 
 	.procend
 	.procend
+ENDPROC(flush_data_cache_local)
 
 
-	.export copy_user_page_asm,code
 	.align	16
 	.align	16
 
 
-copy_user_page_asm:
+ENTRY(copy_user_page_asm)
 	.proc
 	.proc
 	.callinfo NO_CALLS
 	.callinfo NO_CALLS
 	.entry
 	.entry
@@ -409,6 +408,7 @@ copy_user_page_asm:
 	.exit
 	.exit
 
 
 	.procend
 	.procend
+ENDPROC(copy_user_page_asm)
 
 
 /*
 /*
  * NOTE: Code in clear_user_page has a hard coded dependency on the
  * NOTE: Code in clear_user_page has a hard coded dependency on the
@@ -446,9 +446,7 @@ copy_user_page_asm:
 	 * lobby for such a change.
 	 * lobby for such a change.
 	 */
 	 */
 
 
-	.export copy_user_page_asm,code
-
-copy_user_page_asm:
+ENTRY(copy_user_page_asm)
 	.proc
 	.proc
 	.callinfo NO_CALLS
 	.callinfo NO_CALLS
 	.entry
 	.entry
@@ -534,11 +532,10 @@ copy_user_page_asm:
 	.exit
 	.exit
 
 
 	.procend
 	.procend
+ENDPROC(copy_user_page_asm)
 #endif
 #endif
 
 
-	.export __clear_user_page_asm,code
-
-__clear_user_page_asm:
+ENTRY(__clear_user_page_asm)
 	.proc
 	.proc
 	.callinfo NO_CALLS
 	.callinfo NO_CALLS
 	.entry
 	.entry
@@ -618,10 +615,9 @@ __clear_user_page_asm:
 	.exit
 	.exit
 
 
 	.procend
 	.procend
+ENDPROC(__clear_user_page_asm)
 
 
-	.export flush_kernel_dcache_page_asm
-
-flush_kernel_dcache_page_asm:
+ENTRY(flush_kernel_dcache_page_asm)
 	.proc
 	.proc
 	.callinfo NO_CALLS
 	.callinfo NO_CALLS
 	.entry
 	.entry
@@ -662,10 +658,9 @@ flush_kernel_dcache_page_asm:
 	.exit
 	.exit
 
 
 	.procend
 	.procend
+ENDPROC(flush_kernel_dcache_page_asm)
 	
 	
-	.export flush_user_dcache_page
-
-flush_user_dcache_page:
+ENTRY(flush_user_dcache_page)
 	.proc
 	.proc
 	.callinfo NO_CALLS
 	.callinfo NO_CALLS
 	.entry
 	.entry
@@ -706,10 +701,9 @@ flush_user_dcache_page:
 	.exit
 	.exit
 
 
 	.procend
 	.procend
+ENDPROC(flush_user_dcache_page)
 
 
-	.export flush_user_icache_page
-
-flush_user_icache_page:
+ENTRY(flush_user_icache_page)
 	.proc
 	.proc
 	.callinfo NO_CALLS
 	.callinfo NO_CALLS
 	.entry
 	.entry
@@ -750,11 +744,10 @@ flush_user_icache_page:
 	.exit
 	.exit
 
 
 	.procend
 	.procend
+ENDPROC(flush_user_icache_page)
 
 
 
 
-	.export purge_kernel_dcache_page
-
-purge_kernel_dcache_page:
+ENTRY(purge_kernel_dcache_page)
 	.proc
 	.proc
 	.callinfo NO_CALLS
 	.callinfo NO_CALLS
 	.entry
 	.entry
@@ -794,15 +787,14 @@ purge_kernel_dcache_page:
 	.exit
 	.exit
 
 
 	.procend
 	.procend
+ENDPROC(purge_kernel_dcache_page)
 
 
 #if 0
 #if 0
 	/* Currently not used, but it still is a possible alternate
 	/* Currently not used, but it still is a possible alternate
 	 * solution.
 	 * solution.
 	 */
 	 */
 
 
-	.export flush_alias_page
-
-flush_alias_page:
+ENTRY(flush_alias_page)
 	.proc
 	.proc
 	.callinfo NO_CALLS
 	.callinfo NO_CALLS
 	.entry
 	.entry
@@ -882,10 +874,9 @@ flush_user_dcache_range_asm:
 	.exit
 	.exit
 
 
 	.procend
 	.procend
+ENDPROC(flush_alias_page)
 
 
-	.export flush_kernel_dcache_range_asm
-
-flush_kernel_dcache_range_asm:
+ENTRY(flush_kernel_dcache_range_asm)
 	.proc
 	.proc
 	.callinfo NO_CALLS
 	.callinfo NO_CALLS
 	.entry
 	.entry
@@ -905,10 +896,9 @@ flush_kernel_dcache_range_asm:
 	.exit
 	.exit
 
 
 	.procend
 	.procend
+ENDPROC(flush_kernel_dcache_range_asm)
 
 
-	.export flush_user_icache_range_asm
-
-flush_user_icache_range_asm:
+ENTRY(flush_user_icache_range_asm)
 	.proc
 	.proc
 	.callinfo NO_CALLS
 	.callinfo NO_CALLS
 	.entry
 	.entry
@@ -927,10 +917,9 @@ flush_user_icache_range_asm:
 	.exit
 	.exit
 
 
 	.procend
 	.procend
+ENDPROC(flush_user_icache_range_asm)
 
 
-	.export flush_kernel_icache_page
-
-flush_kernel_icache_page:
+ENTRY(flush_kernel_icache_page)
 	.proc
 	.proc
 	.callinfo NO_CALLS
 	.callinfo NO_CALLS
 	.entry
 	.entry
@@ -971,10 +960,9 @@ flush_kernel_icache_page:
 	.exit
 	.exit
 
 
 	.procend
 	.procend
+ENDPROC(flush_kernel_icache_page)
 
 
-	.export flush_kernel_icache_range_asm
-
-flush_kernel_icache_range_asm:
+ENTRY(flush_kernel_icache_range_asm)
 	.proc
 	.proc
 	.callinfo NO_CALLS
 	.callinfo NO_CALLS
 	.entry
 	.entry
@@ -992,14 +980,13 @@ flush_kernel_icache_range_asm:
 	nop
 	nop
 	.exit
 	.exit
 	.procend
 	.procend
+ENDPROC(flush_kernel_icache_range_asm)
 
 
 	/* align should cover use of rfi in disable_sr_hashing_asm and
 	/* align should cover use of rfi in disable_sr_hashing_asm and
 	 * srdis_done.
 	 * srdis_done.
 	 */
 	 */
 	.align	256
 	.align	256
-	.export disable_sr_hashing_asm,code
-
-disable_sr_hashing_asm:
+ENTRY(disable_sr_hashing_asm)
 	.proc
 	.proc
 	.callinfo NO_CALLS
 	.callinfo NO_CALLS
 	.entry
 	.entry
@@ -1088,5 +1075,6 @@ srdis_done:
 	.exit
 	.exit
 
 
 	.procend
 	.procend
+ENDPROC(disable_sr_hashing_asm)
 
 
 	.end
 	.end

+ 13 - 13
arch/parisc/kernel/perf_asm.S

@@ -20,6 +20,7 @@
  */
  */
 
 
 #include <asm/assembly.h>
 #include <asm/assembly.h>
+#include <linux/linkage.h>
 
 
 #ifdef CONFIG_64BIT
 #ifdef CONFIG_64BIT
 	.level		2.0w
 	.level		2.0w
@@ -41,10 +42,8 @@
 ; starting/stopping the coprocessor with the pmenb/pmdis.
 ; starting/stopping the coprocessor with the pmenb/pmdis.
 ;
 ;
 	.text
 	.text
-	.align 32
 
 
-	.export perf_intrigue_enable_perf_counters,code
-perf_intrigue_enable_perf_counters:
+ENTRY(perf_intrigue_enable_perf_counters)
 	.proc
 	.proc
 	.callinfo  frame=0,NO_CALLS
 	.callinfo  frame=0,NO_CALLS
 	.entry
 	.entry
@@ -69,9 +68,9 @@ perf_intrigue_enable_perf_counters:
 	nop
 	nop
 	.exit
 	.exit
 	.procend
 	.procend
+ENDPROC(perf_intrigue_enable_perf_counters)
 
 
-	.export perf_intrigue_disable_perf_counters,code
-perf_intrigue_disable_perf_counters:
+ENTRY(perf_intrigue_disable_perf_counters)
 	.proc
 	.proc
 	.callinfo  frame=0,NO_CALLS
 	.callinfo  frame=0,NO_CALLS
 	.entry
 	.entry
@@ -86,6 +85,7 @@ perf_intrigue_disable_perf_counters:
 	mtctl   %r26,ccr                 ; turn off performance coprocessor
 	mtctl   %r26,ccr                 ; turn off performance coprocessor
 	.exit
 	.exit
 	.procend
 	.procend
+ENDPROC(perf_intrigue_disable_perf_counters)
 
 
 ;***********************************************************************
 ;***********************************************************************
 ;*
 ;*
@@ -117,8 +117,7 @@ perf_intrigue_disable_perf_counters:
 ;*
 ;*
 ;***********************************************************************
 ;***********************************************************************
 
 
-	.export perf_rdr_shift_in_W,code
-perf_rdr_shift_in_W:
+ENTRY(perf_rdr_shift_in_W)
 	.proc
 	.proc
 	.callinfo frame=0,NO_CALLS
 	.callinfo frame=0,NO_CALLS
 	.entry
 	.entry
@@ -550,6 +549,7 @@ perf_rdr_shift_in_W_leave:
 	.exit
 	.exit
 	MTDIAG_2	(24)			; restore DR2
 	MTDIAG_2	(24)			; restore DR2
 	.procend
 	.procend
+ENDPROC(perf_rdr_shift_in_W)
 
 
 
 
 ;***********************************************************************
 ;***********************************************************************
@@ -575,8 +575,7 @@ perf_rdr_shift_in_W_leave:
 ;*
 ;*
 ;***********************************************************************
 ;***********************************************************************
 
 
-	.export perf_rdr_shift_out_W,code
-perf_rdr_shift_out_W:
+ENTRY(perf_rdr_shift_out_W)
 	.proc
 	.proc
 	.callinfo frame=0,NO_CALLS
 	.callinfo frame=0,NO_CALLS
 	.entry
 	.entry
@@ -983,6 +982,7 @@ perf_rdr_shift_out_W_leave:
 	.exit
 	.exit
 	MTDIAG_2	(23)			; restore DR2
 	MTDIAG_2	(23)			; restore DR2
 	.procend
 	.procend
+ENDPROC(perf_rdr_shift_out_W)
 
 
 
 
 ;***********************************************************************
 ;***********************************************************************
@@ -1012,8 +1012,7 @@ perf_rdr_shift_out_W_leave:
 ;*
 ;*
 ;***********************************************************************
 ;***********************************************************************
 
 
-	.export perf_rdr_shift_in_U,code
-perf_rdr_shift_in_U:
+ENTRY(perf_rdr_shift_in_U)
 	.proc
 	.proc
 	.callinfo frame=0,NO_CALLS
 	.callinfo frame=0,NO_CALLS
 	.entry
 	.entry
@@ -1343,6 +1342,7 @@ perf_rdr_shift_in_U_leave:
 	.exit
 	.exit
 	MTDIAG_2	(24)			; restore DR2
 	MTDIAG_2	(24)			; restore DR2
 	.procend
 	.procend
+ENDPROC(perf_rdr_shift_in_U)
 
 
 ;***********************************************************************
 ;***********************************************************************
 ;*
 ;*
@@ -1369,8 +1369,7 @@ perf_rdr_shift_in_U_leave:
 ;*
 ;*
 ;***********************************************************************
 ;***********************************************************************
 
 
-	.export perf_rdr_shift_out_U,code
-perf_rdr_shift_out_U:
+ENTRY(perf_rdr_shift_out_U)
 	.proc
 	.proc
 	.callinfo frame=0,NO_CALLS
 	.callinfo frame=0,NO_CALLS
 	.entry
 	.entry
@@ -1687,4 +1686,5 @@ perf_rdr_shift_out_U_leave:
 	.exit
 	.exit
 	MTDIAG_2	(23)			; restore DR2
 	MTDIAG_2	(23)			; restore DR2
 	.procend
 	.procend
+ENDPROC(perf_rdr_shift_out_U)
 
 

+ 9 - 7
arch/parisc/kernel/real2.S

@@ -11,6 +11,8 @@
 #include <asm/psw.h>
 #include <asm/psw.h>
 #include <asm/assembly.h>
 #include <asm/assembly.h>
 
 
+#include <linux/linkage.h>
+
 	.section	.bss
 	.section	.bss
 	.export real_stack
 	.export real_stack
 	.export real32_stack
 	.export real32_stack
@@ -39,8 +41,6 @@ save_cr_end:
 
 
 	.text
 	.text
 
 
-	.export real32_call_asm
-
 	/* unsigned long real32_call_asm(unsigned int *sp,
 	/* unsigned long real32_call_asm(unsigned int *sp,
 	 *		unsigned int *arg0p,
 	 *		unsigned int *arg0p,
 	 *		unsigned int iodc_fn)
 	 *		unsigned int iodc_fn)
@@ -49,7 +49,7 @@ save_cr_end:
 	 *	iodc_fn is the IODC function to call
 	 *	iodc_fn is the IODC function to call
 	 */
 	 */
 
 
-real32_call_asm:
+ENTRY(real32_call_asm)
 	STREG	%rp, -RP_OFFSET(%sp)	/* save RP */
 	STREG	%rp, -RP_OFFSET(%sp)	/* save RP */
 #ifdef CONFIG_64BIT
 #ifdef CONFIG_64BIT
 	callee_save
 	callee_save
@@ -107,6 +107,7 @@ ric_ret:
 	LDREG	-RP_OFFSET(%sp), %rp	/* restore RP */
 	LDREG	-RP_OFFSET(%sp), %rp	/* restore RP */
 	bv	0(%rp)
 	bv	0(%rp)
 	nop
 	nop
+ENDPROC(real32_call_asm)
 
 
 
 
 #  define PUSH_CR(r, where) mfctl r, %r1 ! STREG,ma %r1, REG_SZ(where)
 #  define PUSH_CR(r, where) mfctl r, %r1 ! STREG,ma %r1, REG_SZ(where)
@@ -218,7 +219,6 @@ rfi_r2v_1:
 /************************ 64-bit real-mode calls ***********************/
 /************************ 64-bit real-mode calls ***********************/
 /* This is only usable in wide kernels right now and will probably stay so */
 /* This is only usable in wide kernels right now and will probably stay so */
 	.text
 	.text
-	.export real64_call_asm
 	/* unsigned long real64_call_asm(unsigned long *sp,
 	/* unsigned long real64_call_asm(unsigned long *sp,
 	 *		unsigned long *arg0p,
 	 *		unsigned long *arg0p,
 	 *		unsigned long fn)
 	 *		unsigned long fn)
@@ -226,7 +226,7 @@ rfi_r2v_1:
 	 *	arg0p points to where saved arg values may be found
 	 *	arg0p points to where saved arg values may be found
 	 *	iodc_fn is the IODC function to call
 	 *	iodc_fn is the IODC function to call
 	 */
 	 */
-real64_call_asm:
+ENTRY(real64_call_asm)
 	std	%rp, -0x10(%sp)		/* save RP */
 	std	%rp, -0x10(%sp)		/* save RP */
 	std	%sp, -8(%arg0)		/* save SP on real-mode stack */
 	std	%sp, -8(%arg0)		/* save SP on real-mode stack */
 	copy	%arg0, %sp		/* adopt the real-mode SP */
 	copy	%arg0, %sp		/* adopt the real-mode SP */
@@ -272,19 +272,21 @@ r64_ret:
 	ldd	-0x10(%sp), %rp		/* restore RP */
 	ldd	-0x10(%sp), %rp		/* restore RP */
 	bv	0(%rp)
 	bv	0(%rp)
 	nop
 	nop
+ENDPROC(real64_call_asm)
 
 
 #endif
 #endif
 
 
-	.export __canonicalize_funcptr_for_compare
 	.text
 	.text
 	/* http://lists.parisc-linux.org/hypermail/parisc-linux/10916.html
 	/* http://lists.parisc-linux.org/hypermail/parisc-linux/10916.html
 	**	GCC 3.3 and later has a new function in libgcc.a for
 	**	GCC 3.3 and later has a new function in libgcc.a for
 	**	comparing function pointers.
 	**	comparing function pointers.
 	*/
 	*/
-__canonicalize_funcptr_for_compare:
+ENTRY(__canonicalize_funcptr_for_compare)
 #ifdef CONFIG_64BIT
 #ifdef CONFIG_64BIT
 	bve (%r2)
 	bve (%r2)
 #else
 #else
 	bv %r0(%r2)
 	bv %r0(%r2)
 #endif
 #endif
 	copy %r26,%r28
 	copy %r26,%r28
+ENDPROC(__canonicalize_funcptr_for_compare)
+

+ 27 - 44
arch/parisc/kernel/syscall.S

@@ -12,10 +12,11 @@
 #include <asm/errno.h>
 #include <asm/errno.h>
 #include <asm/psw.h>
 #include <asm/psw.h>
 #include <asm/thread_info.h>
 #include <asm/thread_info.h>
-
 #include <asm/assembly.h>
 #include <asm/assembly.h>
 #include <asm/processor.h>
 #include <asm/processor.h>
 
 
+#include <linux/linkage.h>
+
 	/* We fill the empty parts of the gateway page with
 	/* We fill the empty parts of the gateway page with
  	 * something that will kill the kernel or a
  	 * something that will kill the kernel or a
  	 * userspace application.
  	 * userspace application.
@@ -28,11 +29,18 @@
 	.level		1.1
 	.level		1.1
 #endif
 #endif
 
 
+/* on 64bit pad to 64bit values */
+#ifdef CONFIG_64BIT
+#define ULONG_WORD(x)	.word 0, x
+#else
+#define ULONG_WORD(x)	.word x
+#endif
+
+
 	.text
 	.text
 
 
 	.import syscall_exit,code
 	.import syscall_exit,code
 	.import syscall_exit_rfi,code
 	.import syscall_exit_rfi,code
-	.export linux_gateway_page
 
 
 	/* Linux gateway page is aliased to virtual page 0 in the kernel
 	/* Linux gateway page is aliased to virtual page 0 in the kernel
 	 * address space. Since it is a gateway page it cannot be
 	 * address space. Since it is a gateway page it cannot be
@@ -43,7 +51,7 @@
 	 */
 	 */
 
 
 	.align ASM_PAGE_SIZE
 	.align ASM_PAGE_SIZE
-linux_gateway_page:
+ENTRY(linux_gateway_page)
 
 
         /* ADDRESS 0x00 to 0xb0 = 176 bytes / 4 bytes per insn = 44 insns */
         /* ADDRESS 0x00 to 0xb0 = 176 bytes / 4 bytes per insn = 44 insns */
 	.rept 44
 	.rept 44
@@ -595,73 +603,49 @@ cas_action:
 	   the other for the store. Either return -EFAULT.
 	   the other for the store. Either return -EFAULT.
 	   Each of the entries must be relocated. */
 	   Each of the entries must be relocated. */
 	.section __ex_table,"aw"
 	.section __ex_table,"aw"
-#ifdef CONFIG_64BIT
-	/* Pad the address calculation */
-	.word	0,(2b - linux_gateway_page)
-	.word	0,(3b - linux_gateway_page)
-#else
-	.word	(2b - linux_gateway_page)
-	.word	(3b - linux_gateway_page)
-#endif
+	ULONG_WORD(2b - linux_gateway_page)
+	ULONG_WORD(3b - linux_gateway_page)
 	.previous
 	.previous
 
 
 	.section __ex_table,"aw"
 	.section __ex_table,"aw"
-#ifdef CONFIG_64BIT
-	/* Pad the address calculation */
-	.word	0,(1b - linux_gateway_page)
-	.word	0,(3b - linux_gateway_page)
-#else
-	.word	(1b - linux_gateway_page)
-	.word	(3b - linux_gateway_page)
-#endif
+	ULONG_WORD(1b - linux_gateway_page)
+	ULONG_WORD(3b - linux_gateway_page)
 	.previous
 	.previous
 
 
 end_compare_and_swap:
 end_compare_and_swap:
 
 
 	/* Make sure nothing else is placed on this page */
 	/* Make sure nothing else is placed on this page */
 	.align ASM_PAGE_SIZE
 	.align ASM_PAGE_SIZE
-	.export end_linux_gateway_page
-end_linux_gateway_page:
+END(linux_gateway_page)
+ENTRY(end_linux_gateway_page)
 
 
 	/* Relocate symbols assuming linux_gateway_page is mapped
 	/* Relocate symbols assuming linux_gateway_page is mapped
 	   to virtual address 0x0 */
 	   to virtual address 0x0 */
-#ifdef CONFIG_64BIT
-	/* FIXME: The code will always be on the gateay page
-		  and thus it will be on the first 4k, the
-		  assembler seems to think that the final
-		  subtraction result is only a word in
-		  length, so we pad the value.
-	*/
-#define LWS_ENTRY(_name_) .word 0,(lws_##_name_ - linux_gateway_page)
-#else
-#define LWS_ENTRY(_name_) .word  (lws_##_name_ - linux_gateway_page)
-#endif
+
+#define LWS_ENTRY(_name_) ULONG_WORD(lws_##_name_ - linux_gateway_page)
 
 
 	.section .rodata,"a"
 	.section .rodata,"a"
 
 
 	.align ASM_PAGE_SIZE
 	.align ASM_PAGE_SIZE
 	/* Light-weight-syscall table */
 	/* Light-weight-syscall table */
 	/* Start of lws table. */
 	/* Start of lws table. */
-	.export lws_table
-.Llws_table:
-lws_table:
+ENTRY(lws_table)
 	LWS_ENTRY(compare_and_swap32)	/* 0 - ELF32 Atomic compare and swap */
 	LWS_ENTRY(compare_and_swap32)	/* 0 - ELF32 Atomic compare and swap */
 	LWS_ENTRY(compare_and_swap64)	/* 1 - ELF64 Atomic compare and swap */
 	LWS_ENTRY(compare_and_swap64)	/* 1 - ELF64 Atomic compare and swap */
+END(lws_table)
 	/* End of lws table */
 	/* End of lws table */
 
 
 	.align ASM_PAGE_SIZE
 	.align ASM_PAGE_SIZE
-	.export sys_call_table
-.Lsys_call_table:
-sys_call_table:
+ENTRY(sys_call_table)
 #include "syscall_table.S"
 #include "syscall_table.S"
+END(sys_call_table)
 
 
 #ifdef CONFIG_64BIT
 #ifdef CONFIG_64BIT
 	.align ASM_PAGE_SIZE
 	.align ASM_PAGE_SIZE
-	.export sys_call_table64
-.Lsys_call_table64:
-sys_call_table64:
+ENTRY(sys_call_table64)
 #define SYSCALL_TABLE_64BIT
 #define SYSCALL_TABLE_64BIT
 #include "syscall_table.S"
 #include "syscall_table.S"
+END(sys_call_table64)
 #endif
 #endif
 
 
 #ifdef CONFIG_SMP
 #ifdef CONFIG_SMP
@@ -671,9 +655,7 @@ sys_call_table64:
 	*/
 	*/
 	.section .data
 	.section .data
 	.align 4096
 	.align 4096
-	.export lws_lock_start
-.Llws_lock_start:
-lws_lock_start:
+ENTRY(lws_lock_start)
 	/* lws locks */
 	/* lws locks */
 	.align 16
 	.align 16
 	.rept 16
 	.rept 16
@@ -683,6 +665,7 @@ lws_lock_start:
 	.word 0
 	.word 0
 	.word 0
 	.word 0
 	.endr
 	.endr
+END(lws_lock_start)
 	.previous
 	.previous
 #endif
 #endif
 /* CONFIG_SMP for lws_lock_start */
 /* CONFIG_SMP for lws_lock_start */