Commit ec7ac6af authored by Vineet Gupta's avatar Vineet Gupta

ARC: switch to generic ENTRY/END assembler annotations

With commit 9df62f05 "arch: use ASM_NL instead of ';'" the generic
macros can handle the arch specific newline quirk. Hence we can get rid
of ARC asm macros and use the "C" style macros.
Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
parent d6579e99
...@@ -13,20 +13,6 @@ ...@@ -13,20 +13,6 @@
#define ASM_NL ` /* use '`' to mark new line in macro */ #define ASM_NL ` /* use '`' to mark new line in macro */
/* Can't use the ENTRY macro in linux/linkage.h
* gas considers ';' as comment vs. newline
*/
.macro ARC_ENTRY name
.global \name
.align 4
\name:
.endm
.macro ARC_EXIT name
#define ASM_PREV_SYM_ADDR(name) .-##name
.size \ name, ASM_PREV_SYM_ADDR(\name)
.endm
/* annotation for data we want in DCCM - if enabled in .config */ /* annotation for data we want in DCCM - if enabled in .config */
.macro ARCFP_DATA nm .macro ARCFP_DATA nm
#ifdef CONFIG_ARC_HAS_DCCM #ifdef CONFIG_ARC_HAS_DCCM
......
...@@ -62,4 +62,4 @@ __switch_to: ...@@ -62,4 +62,4 @@ __switch_to:
ld.ab blink, [sp, 4] ld.ab blink, [sp, 4]
j [blink] j [blink]
ARC_EXIT __switch_to END(__switch_to)
...@@ -141,7 +141,7 @@ VECTOR EV_Extension ; 0x130, Extn Intruction Excp (0x26) ...@@ -141,7 +141,7 @@ VECTOR EV_Extension ; 0x130, Extn Intruction Excp (0x26)
VECTOR reserved ; Reserved Exceptions VECTOR reserved ; Reserved Exceptions
.endr .endr
#include <linux/linkage.h> /* ARC_{EXTRY,EXIT} */ #include <linux/linkage.h> /* {EXTRY,EXIT} */
#include <asm/entry.h> /* SAVE_ALL_{INT1,INT2,SYS...} */ #include <asm/entry.h> /* SAVE_ALL_{INT1,INT2,SYS...} */
#include <asm/errno.h> #include <asm/errno.h>
#include <asm/arcregs.h> #include <asm/arcregs.h>
...@@ -184,7 +184,7 @@ reserved: ; processor restart ...@@ -184,7 +184,7 @@ reserved: ; processor restart
; --------------------------------------------- ; ---------------------------------------------
; Level 2 ISR: Can interrupt a Level 1 ISR ; Level 2 ISR: Can interrupt a Level 1 ISR
; --------------------------------------------- ; ---------------------------------------------
ARC_ENTRY handle_interrupt_level2 ENTRY(handle_interrupt_level2)
; TODO-vineetg for SMP this wont work ; TODO-vineetg for SMP this wont work
; free up r9 as scratchpad ; free up r9 as scratchpad
...@@ -225,14 +225,14 @@ ARC_ENTRY handle_interrupt_level2 ...@@ -225,14 +225,14 @@ ARC_ENTRY handle_interrupt_level2
b ret_from_exception b ret_from_exception
ARC_EXIT handle_interrupt_level2 END(handle_interrupt_level2)
#endif #endif
; --------------------------------------------- ; ---------------------------------------------
; Level 1 ISR ; Level 1 ISR
; --------------------------------------------- ; ---------------------------------------------
ARC_ENTRY handle_interrupt_level1 ENTRY(handle_interrupt_level1)
/* free up r9 as scratchpad */ /* free up r9 as scratchpad */
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
...@@ -265,7 +265,7 @@ ARC_ENTRY handle_interrupt_level1 ...@@ -265,7 +265,7 @@ ARC_ENTRY handle_interrupt_level1
sr r8, [AUX_IRQ_LV12] ; clear bit in Sticky Status Reg sr r8, [AUX_IRQ_LV12] ; clear bit in Sticky Status Reg
b ret_from_exception b ret_from_exception
ARC_EXIT handle_interrupt_level1 END(handle_interrupt_level1)
;################### Non TLB Exception Handling ############################# ;################### Non TLB Exception Handling #############################
...@@ -273,7 +273,7 @@ ARC_EXIT handle_interrupt_level1 ...@@ -273,7 +273,7 @@ ARC_EXIT handle_interrupt_level1
; Instruction Error Exception Handler ; Instruction Error Exception Handler
; --------------------------------------------- ; ---------------------------------------------
ARC_ENTRY instr_service ENTRY(instr_service)
EXCEPTION_PROLOGUE EXCEPTION_PROLOGUE
...@@ -284,13 +284,13 @@ ARC_ENTRY instr_service ...@@ -284,13 +284,13 @@ ARC_ENTRY instr_service
bl do_insterror_or_kprobe bl do_insterror_or_kprobe
b ret_from_exception b ret_from_exception
ARC_EXIT instr_service END(instr_service)
; --------------------------------------------- ; ---------------------------------------------
; Memory Error Exception Handler ; Memory Error Exception Handler
; --------------------------------------------- ; ---------------------------------------------
ARC_ENTRY mem_service ENTRY(mem_service)
EXCEPTION_PROLOGUE EXCEPTION_PROLOGUE
...@@ -301,13 +301,13 @@ ARC_ENTRY mem_service ...@@ -301,13 +301,13 @@ ARC_ENTRY mem_service
bl do_memory_error bl do_memory_error
b ret_from_exception b ret_from_exception
ARC_EXIT mem_service END(mem_service)
; --------------------------------------------- ; ---------------------------------------------
; Machine Check Exception Handler ; Machine Check Exception Handler
; --------------------------------------------- ; ---------------------------------------------
ARC_ENTRY EV_MachineCheck ENTRY(EV_MachineCheck)
EXCEPTION_PROLOGUE EXCEPTION_PROLOGUE
...@@ -331,13 +331,13 @@ ARC_ENTRY EV_MachineCheck ...@@ -331,13 +331,13 @@ ARC_ENTRY EV_MachineCheck
j do_machine_check_fault j do_machine_check_fault
ARC_EXIT EV_MachineCheck END(EV_MachineCheck)
; --------------------------------------------- ; ---------------------------------------------
; Protection Violation Exception Handler ; Protection Violation Exception Handler
; --------------------------------------------- ; ---------------------------------------------
ARC_ENTRY EV_TLBProtV ENTRY(EV_TLBProtV)
EXCEPTION_PROLOGUE EXCEPTION_PROLOGUE
...@@ -385,12 +385,12 @@ ARC_ENTRY EV_TLBProtV ...@@ -385,12 +385,12 @@ ARC_ENTRY EV_TLBProtV
b ret_from_exception b ret_from_exception
ARC_EXIT EV_TLBProtV END(EV_TLBProtV)
; --------------------------------------------- ; ---------------------------------------------
; Privilege Violation Exception Handler ; Privilege Violation Exception Handler
; --------------------------------------------- ; ---------------------------------------------
ARC_ENTRY EV_PrivilegeV ENTRY(EV_PrivilegeV)
EXCEPTION_PROLOGUE EXCEPTION_PROLOGUE
...@@ -401,12 +401,12 @@ ARC_ENTRY EV_PrivilegeV ...@@ -401,12 +401,12 @@ ARC_ENTRY EV_PrivilegeV
bl do_privilege_fault bl do_privilege_fault
b ret_from_exception b ret_from_exception
ARC_EXIT EV_PrivilegeV END(EV_PrivilegeV)
; --------------------------------------------- ; ---------------------------------------------
; Extension Instruction Exception Handler ; Extension Instruction Exception Handler
; --------------------------------------------- ; ---------------------------------------------
ARC_ENTRY EV_Extension ENTRY(EV_Extension)
EXCEPTION_PROLOGUE EXCEPTION_PROLOGUE
...@@ -417,7 +417,7 @@ ARC_ENTRY EV_Extension ...@@ -417,7 +417,7 @@ ARC_ENTRY EV_Extension
bl do_extension_fault bl do_extension_fault
b ret_from_exception b ret_from_exception
ARC_EXIT EV_Extension END(EV_Extension)
;######################### System Call Tracing ######################### ;######################### System Call Tracing #########################
...@@ -504,7 +504,7 @@ trap_with_param: ...@@ -504,7 +504,7 @@ trap_with_param:
; (2) Break Points ; (2) Break Points
;------------------------------------------------------------------ ;------------------------------------------------------------------
ARC_ENTRY EV_Trap ENTRY(EV_Trap)
EXCEPTION_PROLOGUE EXCEPTION_PROLOGUE
...@@ -534,9 +534,9 @@ ARC_ENTRY EV_Trap ...@@ -534,9 +534,9 @@ ARC_ENTRY EV_Trap
jl [r9] ; Entry into Sys Call Handler jl [r9] ; Entry into Sys Call Handler
; fall through to ret_from_system_call ; fall through to ret_from_system_call
ARC_EXIT EV_Trap END(EV_Trap)
ARC_ENTRY ret_from_system_call ENTRY(ret_from_system_call)
st r0, [sp, PT_r0] ; sys call return value in pt_regs st r0, [sp, PT_r0] ; sys call return value in pt_regs
...@@ -546,7 +546,7 @@ ARC_ENTRY ret_from_system_call ...@@ -546,7 +546,7 @@ ARC_ENTRY ret_from_system_call
; ;
; If ret to user mode do we need to handle signals, schedule() et al. ; If ret to user mode do we need to handle signals, schedule() et al.
ARC_ENTRY ret_from_exception ENTRY(ret_from_exception)
; Pre-{IRQ,Trap,Exception} K/U mode from pt_regs->status32 ; Pre-{IRQ,Trap,Exception} K/U mode from pt_regs->status32
ld r8, [sp, PT_status32] ; returning to User/Kernel Mode ld r8, [sp, PT_status32] ; returning to User/Kernel Mode
...@@ -726,9 +726,9 @@ not_level1_interrupt: ...@@ -726,9 +726,9 @@ not_level1_interrupt:
debug_marker_syscall: debug_marker_syscall:
rtie rtie
ARC_EXIT ret_from_exception END(ret_from_exception)
ARC_ENTRY ret_from_fork ENTRY(ret_from_fork)
; when the forked child comes here from the __switch_to function ; when the forked child comes here from the __switch_to function
; r0 has the last task pointer. ; r0 has the last task pointer.
; put last task in scheduler queue ; put last task in scheduler queue
...@@ -745,11 +745,11 @@ ARC_ENTRY ret_from_fork ...@@ -745,11 +745,11 @@ ARC_ENTRY ret_from_fork
; special case of kernel_thread entry point returning back due to ; special case of kernel_thread entry point returning back due to
; kernel_execve() - pretend return from syscall to ret to userland ; kernel_execve() - pretend return from syscall to ret to userland
b ret_from_exception b ret_from_exception
ARC_EXIT ret_from_fork END(ret_from_fork)
;################### Special Sys Call Wrappers ########################## ;################### Special Sys Call Wrappers ##########################
ARC_ENTRY sys_clone_wrapper ENTRY(sys_clone_wrapper)
SAVE_CALLEE_SAVED_USER SAVE_CALLEE_SAVED_USER
bl @sys_clone bl @sys_clone
DISCARD_CALLEE_SAVED_USER DISCARD_CALLEE_SAVED_USER
...@@ -759,7 +759,7 @@ ARC_ENTRY sys_clone_wrapper ...@@ -759,7 +759,7 @@ ARC_ENTRY sys_clone_wrapper
bnz tracesys_exit bnz tracesys_exit
b ret_from_system_call b ret_from_system_call
ARC_EXIT sys_clone_wrapper END(sys_clone_wrapper)
#ifdef CONFIG_ARC_DW2_UNWIND #ifdef CONFIG_ARC_DW2_UNWIND
; Workaround for bug 94179 (STAR ): ; Workaround for bug 94179 (STAR ):
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
* published by the Free Software Foundation. * published by the Free Software Foundation.
*/ */
#include <asm/linkage.h> #include <linux/linkage.h>
#ifdef __LITTLE_ENDIAN__ #ifdef __LITTLE_ENDIAN__
#define WORD2 r2 #define WORD2 r2
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
#define SHIFT r2 #define SHIFT r2
#endif #endif
ARC_ENTRY memcmp ENTRY(memcmp)
or r12,r0,r1 or r12,r0,r1
asl_s r12,r12,30 asl_s r12,r12,30
sub r3,r2,1 sub r3,r2,1
...@@ -121,4 +121,4 @@ ARC_ENTRY memcmp ...@@ -121,4 +121,4 @@ ARC_ENTRY memcmp
.Lnil: .Lnil:
j_s.d [blink] j_s.d [blink]
mov r0,0 mov r0,0
ARC_EXIT memcmp END(memcmp)
...@@ -6,9 +6,9 @@ ...@@ -6,9 +6,9 @@
* published by the Free Software Foundation. * published by the Free Software Foundation.
*/ */
#include <asm/linkage.h> #include <linux/linkage.h>
ARC_ENTRY memcpy ENTRY(memcpy)
or r3,r0,r1 or r3,r0,r1
asl_s r3,r3,30 asl_s r3,r3,30
mov_s r5,r0 mov_s r5,r0
...@@ -63,4 +63,4 @@ ARC_ENTRY memcpy ...@@ -63,4 +63,4 @@ ARC_ENTRY memcpy
.Lendbloop: .Lendbloop:
j_s.d [blink] j_s.d [blink]
stb r12,[r5,0] stb r12,[r5,0]
ARC_EXIT memcpy END(memcpy)
...@@ -6,11 +6,11 @@ ...@@ -6,11 +6,11 @@
* published by the Free Software Foundation. * published by the Free Software Foundation.
*/ */
#include <asm/linkage.h> #include <linux/linkage.h>
#define SMALL 7 /* Must be at least 6 to deal with alignment/loop issues. */ #define SMALL 7 /* Must be at least 6 to deal with alignment/loop issues. */
ARC_ENTRY memset ENTRY(memset)
mov_s r4,r0 mov_s r4,r0
or r12,r0,r2 or r12,r0,r2
bmsk.f r12,r12,1 bmsk.f r12,r12,1
...@@ -46,14 +46,14 @@ ARC_ENTRY memset ...@@ -46,14 +46,14 @@ ARC_ENTRY memset
stb.ab r1,[r4,1] stb.ab r1,[r4,1]
.Ltiny_end: .Ltiny_end:
j_s [blink] j_s [blink]
ARC_EXIT memset END(memset)
; memzero: @r0 = mem, @r1 = size_t ; memzero: @r0 = mem, @r1 = size_t
; memset: @r0 = mem, @r1 = char, @r2 = size_t ; memset: @r0 = mem, @r1 = char, @r2 = size_t
ARC_ENTRY memzero ENTRY(memzero)
; adjust bzero args to memset args ; adjust bzero args to memset args
mov r2, r1 mov r2, r1
mov r1, 0 mov r1, 0
b memset ;tail call so need to tinker with blink b memset ;tail call so need to tinker with blink
ARC_EXIT memzero END(memzero)
...@@ -11,9 +11,9 @@ ...@@ -11,9 +11,9 @@
presence of the norm instruction makes it easier to operate on whole presence of the norm instruction makes it easier to operate on whole
words branch-free. */ words branch-free. */
#include <asm/linkage.h> #include <linux/linkage.h>
ARC_ENTRY strchr ENTRY(strchr)
extb_s r1,r1 extb_s r1,r1
asl r5,r1,8 asl r5,r1,8
bmsk r2,r0,1 bmsk r2,r0,1
...@@ -130,4 +130,4 @@ ARC_ENTRY strchr ...@@ -130,4 +130,4 @@ ARC_ENTRY strchr
j_s.d [blink] j_s.d [blink]
mov.mi r0,0 mov.mi r0,0
#endif /* ENDIAN */ #endif /* ENDIAN */
ARC_EXIT strchr END(strchr)
...@@ -13,9 +13,9 @@ ...@@ -13,9 +13,9 @@
source 1; however, that would increase the overhead for loop setup / finish, source 1; however, that would increase the overhead for loop setup / finish,
and strcmp might often terminate early. */ and strcmp might often terminate early. */
#include <asm/linkage.h> #include <linux/linkage.h>
ARC_ENTRY strcmp ENTRY(strcmp)
or r2,r0,r1 or r2,r0,r1
bmsk_s r2,r2,1 bmsk_s r2,r2,1
brne r2,0,.Lcharloop brne r2,0,.Lcharloop
...@@ -93,4 +93,4 @@ ARC_ENTRY strcmp ...@@ -93,4 +93,4 @@ ARC_ENTRY strcmp
.Lcmpend: .Lcmpend:
j_s.d [blink] j_s.d [blink]
sub r0,r2,r3 sub r0,r2,r3
ARC_EXIT strcmp END(strcmp)
...@@ -16,9 +16,9 @@ ...@@ -16,9 +16,9 @@
there, but the it is not likely to be taken often, and it there, but the it is not likely to be taken often, and it
would also be likey to cost an unaligned mispredict at the next call. */ would also be likey to cost an unaligned mispredict at the next call. */
#include <asm/linkage.h> #include <linux/linkage.h>
ARC_ENTRY strcpy ENTRY(strcpy)
or r2,r0,r1 or r2,r0,r1
bmsk_s r2,r2,1 bmsk_s r2,r2,1
brne.d r2,0,charloop brne.d r2,0,charloop
...@@ -67,4 +67,4 @@ charloop: ...@@ -67,4 +67,4 @@ charloop:
brne.d r3,0,charloop brne.d r3,0,charloop
stb.ab r3,[r10,1] stb.ab r3,[r10,1]
j [blink] j [blink]
ARC_EXIT strcpy END(strcpy)
...@@ -6,9 +6,9 @@ ...@@ -6,9 +6,9 @@
* published by the Free Software Foundation. * published by the Free Software Foundation.
*/ */
#include <asm/linkage.h> #include <linux/linkage.h>
ARC_ENTRY strlen ENTRY(strlen)
or r3,r0,7 or r3,r0,7
ld r2,[r3,-7] ld r2,[r3,-7]
ld.a r6,[r3,-3] ld.a r6,[r3,-3]
...@@ -80,4 +80,4 @@ ARC_ENTRY strlen ...@@ -80,4 +80,4 @@ ARC_ENTRY strlen
.Learly_end: .Learly_end:
b.d .Lend b.d .Lend
sub_s.ne r1,r1,r1 sub_s.ne r1,r1,r1
ARC_EXIT strlen END(strlen)
...@@ -260,7 +260,7 @@ ARCFP_CODE ;Fast Path Code, candidate for ICCM ...@@ -260,7 +260,7 @@ ARCFP_CODE ;Fast Path Code, candidate for ICCM
; I-TLB Miss Exception Handler ; I-TLB Miss Exception Handler
;----------------------------------------------------------------------------- ;-----------------------------------------------------------------------------
ARC_ENTRY EV_TLBMissI ENTRY(EV_TLBMissI)
TLBMISS_FREEUP_REGS TLBMISS_FREEUP_REGS
...@@ -293,13 +293,13 @@ ARC_ENTRY EV_TLBMissI ...@@ -293,13 +293,13 @@ ARC_ENTRY EV_TLBMissI
TLBMISS_RESTORE_REGS TLBMISS_RESTORE_REGS
rtie rtie
ARC_EXIT EV_TLBMissI END(EV_TLBMissI)
;----------------------------------------------------------------------------- ;-----------------------------------------------------------------------------
; D-TLB Miss Exception Handler ; D-TLB Miss Exception Handler
;----------------------------------------------------------------------------- ;-----------------------------------------------------------------------------
ARC_ENTRY EV_TLBMissD ENTRY(EV_TLBMissD)
TLBMISS_FREEUP_REGS TLBMISS_FREEUP_REGS
...@@ -381,6 +381,4 @@ do_slow_path_pf: ...@@ -381,6 +381,4 @@ do_slow_path_pf:
bl do_page_fault bl do_page_fault
b ret_from_exception b ret_from_exception
ARC_EXIT EV_TLBMissD END(EV_TLBMissD)
ARC_ENTRY EV_TLBMissB ; Bogus entry to measure sz of DTLBMiss hdlr
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