ARC: switch to generic ENTRY/END assembler annotations
With commit 9df62f0544 "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: Vineet Gupta <vgupta@synopsys.com>
	
	
This commit is contained in:
		
					parent
					
						
							
								d6579e99bc
							
						
					
				
			
			
				commit
				
					
						ec7ac6afd0
					
				
			
		
					 11 changed files with 54 additions and 70 deletions
				
			
		|  | @ -13,20 +13,6 @@ | |||
| 
 | ||||
| #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 */ | ||||
| .macro ARCFP_DATA nm | ||||
| #ifdef CONFIG_ARC_HAS_DCCM | ||||
|  |  | |||
|  | @ -62,4 +62,4 @@ __switch_to: | |||
| 	ld.ab   blink, [sp, 4] | ||||
| 	j       [blink] | ||||
| 
 | ||||
| ARC_EXIT __switch_to | ||||
| END(__switch_to) | ||||
|  |  | |||
|  | @ -141,7 +141,7 @@ VECTOR   EV_Extension            ; 0x130, Extn Intruction Excp  (0x26) | |||
| VECTOR   reserved                ; Reserved Exceptions
 | ||||
| .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/errno.h> | ||||
| #include <asm/arcregs.h> | ||||
|  | @ -184,7 +184,7 @@ reserved:		; processor restart | |||
| ; ---------------------------------------------
 | ||||
| ;  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
 | ||||
| 	; free up r9 as scratchpad
 | ||||
|  | @ -225,14 +225,14 @@ ARC_ENTRY handle_interrupt_level2 | |||
| 
 | ||||
| 	b   ret_from_exception | ||||
| 
 | ||||
| ARC_EXIT handle_interrupt_level2 | ||||
| END(handle_interrupt_level2) | ||||
| 
 | ||||
| #endif | ||||
| 
 | ||||
| ; ---------------------------------------------
 | ||||
| ;  Level 1 ISR
 | ||||
| ; ---------------------------------------------
 | ||||
| ARC_ENTRY handle_interrupt_level1 | ||||
| ENTRY(handle_interrupt_level1) | ||||
| 
 | ||||
| 	/* free up r9 as scratchpad */ | ||||
| #ifdef CONFIG_SMP | ||||
|  | @ -265,7 +265,7 @@ ARC_ENTRY handle_interrupt_level1 | |||
| 	sr r8, [AUX_IRQ_LV12]       ; clear bit in Sticky Status Reg
 | ||||
| 
 | ||||
| 	b   ret_from_exception | ||||
| ARC_EXIT handle_interrupt_level1 | ||||
| END(handle_interrupt_level1) | ||||
| 
 | ||||
| ;################### Non TLB Exception Handling #############################
 | ||||
| 
 | ||||
|  | @ -273,7 +273,7 @@ ARC_EXIT handle_interrupt_level1 | |||
| ; Instruction Error Exception Handler
 | ||||
| ; ---------------------------------------------
 | ||||
| 
 | ||||
| ARC_ENTRY instr_service | ||||
| ENTRY(instr_service) | ||||
| 
 | ||||
| 	EXCEPTION_PROLOGUE | ||||
| 
 | ||||
|  | @ -284,13 +284,13 @@ ARC_ENTRY instr_service | |||
| 
 | ||||
| 	bl  do_insterror_or_kprobe | ||||
| 	b   ret_from_exception | ||||
| ARC_EXIT instr_service | ||||
| END(instr_service) | ||||
| 
 | ||||
| ; ---------------------------------------------
 | ||||
| ; Memory Error Exception Handler
 | ||||
| ; ---------------------------------------------
 | ||||
| 
 | ||||
| ARC_ENTRY mem_service | ||||
| ENTRY(mem_service) | ||||
| 
 | ||||
| 	EXCEPTION_PROLOGUE | ||||
| 
 | ||||
|  | @ -301,13 +301,13 @@ ARC_ENTRY mem_service | |||
| 
 | ||||
| 	bl  do_memory_error | ||||
| 	b   ret_from_exception | ||||
| ARC_EXIT mem_service | ||||
| END(mem_service) | ||||
| 
 | ||||
| ; ---------------------------------------------
 | ||||
| ; Machine Check Exception Handler
 | ||||
| ; ---------------------------------------------
 | ||||
| 
 | ||||
| ARC_ENTRY EV_MachineCheck | ||||
| ENTRY(EV_MachineCheck) | ||||
| 
 | ||||
| 	EXCEPTION_PROLOGUE | ||||
| 
 | ||||
|  | @ -331,13 +331,13 @@ ARC_ENTRY EV_MachineCheck | |||
| 
 | ||||
| 	j  do_machine_check_fault | ||||
| 
 | ||||
| ARC_EXIT EV_MachineCheck | ||||
| END(EV_MachineCheck) | ||||
| 
 | ||||
| ; ---------------------------------------------
 | ||||
| ; Protection Violation Exception Handler
 | ||||
| ; ---------------------------------------------
 | ||||
| 
 | ||||
| ARC_ENTRY EV_TLBProtV | ||||
| ENTRY(EV_TLBProtV) | ||||
| 
 | ||||
| 	EXCEPTION_PROLOGUE | ||||
| 
 | ||||
|  | @ -385,12 +385,12 @@ ARC_ENTRY EV_TLBProtV | |||
| 
 | ||||
| 	b   ret_from_exception | ||||
| 
 | ||||
| ARC_EXIT EV_TLBProtV | ||||
| END(EV_TLBProtV) | ||||
| 
 | ||||
| ; ---------------------------------------------
 | ||||
| ; Privilege Violation Exception Handler
 | ||||
| ; ---------------------------------------------
 | ||||
| ARC_ENTRY EV_PrivilegeV | ||||
| ENTRY(EV_PrivilegeV) | ||||
| 
 | ||||
| 	EXCEPTION_PROLOGUE | ||||
| 
 | ||||
|  | @ -401,12 +401,12 @@ ARC_ENTRY EV_PrivilegeV | |||
| 
 | ||||
| 	bl  do_privilege_fault | ||||
| 	b   ret_from_exception | ||||
| ARC_EXIT EV_PrivilegeV | ||||
| END(EV_PrivilegeV) | ||||
| 
 | ||||
| ; ---------------------------------------------
 | ||||
| ; Extension Instruction Exception Handler
 | ||||
| ; ---------------------------------------------
 | ||||
| ARC_ENTRY EV_Extension | ||||
| ENTRY(EV_Extension) | ||||
| 
 | ||||
| 	EXCEPTION_PROLOGUE | ||||
| 
 | ||||
|  | @ -417,7 +417,7 @@ ARC_ENTRY EV_Extension | |||
| 
 | ||||
| 	bl  do_extension_fault | ||||
| 	b   ret_from_exception | ||||
| ARC_EXIT EV_Extension | ||||
| END(EV_Extension) | ||||
| 
 | ||||
| ;######################### System Call Tracing #########################
 | ||||
| 
 | ||||
|  | @ -504,7 +504,7 @@ trap_with_param: | |||
| ;   (2) Break Points
 | ||||
| ;------------------------------------------------------------------
 | ||||
| 
 | ||||
| ARC_ENTRY EV_Trap | ||||
| ENTRY(EV_Trap) | ||||
| 
 | ||||
| 	EXCEPTION_PROLOGUE | ||||
| 
 | ||||
|  | @ -534,9 +534,9 @@ ARC_ENTRY EV_Trap | |||
| 	jl      [r9]        ; Entry into Sys Call Handler
 | ||||
| 
 | ||||
| 	; 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
 | ||||
| 
 | ||||
|  | @ -546,7 +546,7 @@ ARC_ENTRY ret_from_system_call | |||
| ;
 | ||||
| ; 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
 | ||||
| 	ld  r8, [sp, PT_status32]   ; returning to User/Kernel Mode
 | ||||
|  | @ -726,9 +726,9 @@ not_level1_interrupt: | |||
| debug_marker_syscall: | ||||
| 	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
 | ||||
| 	; r0 has the last task pointer.
 | ||||
| 	; put last task in scheduler queue
 | ||||
|  | @ -745,11 +745,11 @@ ARC_ENTRY ret_from_fork | |||
| 	; special case of kernel_thread entry point returning back due to
 | ||||
| 	; kernel_execve() - pretend return from syscall to ret to userland
 | ||||
| 	b    ret_from_exception | ||||
| ARC_EXIT ret_from_fork | ||||
| END(ret_from_fork) | ||||
| 
 | ||||
| ;################### Special Sys Call Wrappers ##########################
 | ||||
| 
 | ||||
| ARC_ENTRY sys_clone_wrapper | ||||
| ENTRY(sys_clone_wrapper) | ||||
| 	SAVE_CALLEE_SAVED_USER | ||||
| 	bl  @sys_clone
 | ||||
| 	DISCARD_CALLEE_SAVED_USER | ||||
|  | @ -759,7 +759,7 @@ ARC_ENTRY sys_clone_wrapper | |||
| 	bnz  tracesys_exit | ||||
| 
 | ||||
| 	b ret_from_system_call | ||||
| ARC_EXIT sys_clone_wrapper | ||||
| END(sys_clone_wrapper) | ||||
| 
 | ||||
| #ifdef CONFIG_ARC_DW2_UNWIND | ||||
| ; Workaround for bug 94179 (STAR ):
 | ||||
|  |  | |||
|  | @ -6,7 +6,7 @@ | |||
|  * published by the Free Software Foundation. | ||||
|  */ | ||||
| 
 | ||||
| #include <asm/linkage.h> | ||||
| #include <linux/linkage.h> | ||||
| 
 | ||||
| #ifdef __LITTLE_ENDIAN__ | ||||
| #define WORD2 r2 | ||||
|  | @ -16,7 +16,7 @@ | |||
| #define SHIFT r2 | ||||
| #endif | ||||
| 
 | ||||
| ARC_ENTRY memcmp | ||||
| ENTRY(memcmp) | ||||
| 	or	r12,r0,r1 | ||||
| 	asl_s	r12,r12,30 | ||||
| 	sub	r3,r2,1 | ||||
|  | @ -121,4 +121,4 @@ ARC_ENTRY memcmp | |||
| .Lnil: | ||||
| 	j_s.d	[blink] | ||||
| 	mov	r0,0 | ||||
| ARC_EXIT memcmp | ||||
| END(memcmp) | ||||
|  |  | |||
|  | @ -6,9 +6,9 @@ | |||
|  * published by the Free Software Foundation. | ||||
|  */ | ||||
| 
 | ||||
| #include <asm/linkage.h> | ||||
| #include <linux/linkage.h> | ||||
| 
 | ||||
| ARC_ENTRY memcpy | ||||
| ENTRY(memcpy) | ||||
| 	or	r3,r0,r1 | ||||
| 	asl_s	r3,r3,30 | ||||
| 	mov_s	r5,r0 | ||||
|  | @ -63,4 +63,4 @@ ARC_ENTRY memcpy | |||
| .Lendbloop: | ||||
| 	j_s.d	[blink] | ||||
| 	stb	r12,[r5,0] | ||||
| ARC_EXIT memcpy | ||||
| END(memcpy) | ||||
|  |  | |||
|  | @ -6,11 +6,11 @@ | |||
|  * 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.  */ | ||||
| 
 | ||||
| ARC_ENTRY memset | ||||
| ENTRY(memset) | ||||
| 	mov_s	r4,r0 | ||||
| 	or	r12,r0,r2 | ||||
| 	bmsk.f	r12,r12,1 | ||||
|  | @ -46,14 +46,14 @@ ARC_ENTRY memset | |||
| 	stb.ab	r1,[r4,1] | ||||
| .Ltiny_end: | ||||
| 	j_s	[blink] | ||||
| ARC_EXIT memset | ||||
| END(memset) | ||||
| 
 | ||||
| ; memzero: @r0 = mem, @r1 = size_t
 | ||||
| ; memset:  @r0 = mem, @r1 = char, @r2 = size_t
 | ||||
| 
 | ||||
| ARC_ENTRY memzero | ||||
| ENTRY(memzero) | ||||
|     ; adjust bzero args to memset args
 | ||||
|     mov r2, r1 | ||||
|     mov r1, 0 | ||||
|     b  memset    ;tail call so need to tinker with blink
 | ||||
| ARC_EXIT memzero | ||||
| END(memzero) | ||||
|  |  | |||
|  | @ -11,9 +11,9 @@ | |||
|    presence of the norm instruction makes it easier to operate on whole | ||||
|    words branch-free.  */ | ||||
| 
 | ||||
| #include <asm/linkage.h> | ||||
| #include <linux/linkage.h> | ||||
| 
 | ||||
| ARC_ENTRY strchr | ||||
| ENTRY(strchr) | ||||
| 	extb_s	r1,r1 | ||||
| 	asl	r5,r1,8 | ||||
| 	bmsk	r2,r0,1 | ||||
|  | @ -130,4 +130,4 @@ ARC_ENTRY strchr | |||
| 	j_s.d	[blink] | ||||
| 	mov.mi	r0,0 | ||||
| #endif /* ENDIAN */ | ||||
| ARC_EXIT strchr | ||||
| END(strchr) | ||||
|  |  | |||
|  | @ -13,9 +13,9 @@ | |||
|    source 1; however, that would increase the overhead for loop setup / finish,
 | ||||
|    and strcmp might often terminate early.  */ | ||||
| 
 | ||||
| #include <asm/linkage.h> | ||||
| #include <linux/linkage.h> | ||||
| 
 | ||||
| ARC_ENTRY strcmp | ||||
| ENTRY(strcmp) | ||||
| 	or	r2,r0,r1 | ||||
| 	bmsk_s	r2,r2,1 | ||||
| 	brne	r2,0,.Lcharloop | ||||
|  | @ -93,4 +93,4 @@ ARC_ENTRY strcmp | |||
| .Lcmpend: | ||||
| 	j_s.d	[blink] | ||||
| 	sub	r0,r2,r3 | ||||
| ARC_EXIT strcmp | ||||
| END(strcmp) | ||||
|  |  | |||
|  | @ -16,9 +16,9 @@ | |||
|    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.  */ | ||||
| 
 | ||||
| #include <asm/linkage.h> | ||||
| #include <linux/linkage.h> | ||||
| 
 | ||||
| ARC_ENTRY strcpy | ||||
| ENTRY(strcpy) | ||||
| 	or	r2,r0,r1 | ||||
| 	bmsk_s	r2,r2,1 | ||||
| 	brne.d	r2,0,charloop | ||||
|  | @ -67,4 +67,4 @@ charloop: | |||
| 	brne.d	r3,0,charloop | ||||
| 	stb.ab	r3,[r10,1] | ||||
| 	j	[blink] | ||||
| ARC_EXIT strcpy | ||||
| END(strcpy) | ||||
|  |  | |||
|  | @ -6,9 +6,9 @@ | |||
|  * published by the Free Software Foundation. | ||||
|  */ | ||||
| 
 | ||||
| #include <asm/linkage.h> | ||||
| #include <linux/linkage.h> | ||||
| 
 | ||||
| ARC_ENTRY strlen | ||||
| ENTRY(strlen) | ||||
| 	or	r3,r0,7 | ||||
| 	ld	r2,[r3,-7] | ||||
| 	ld.a	r6,[r3,-3] | ||||
|  | @ -80,4 +80,4 @@ ARC_ENTRY strlen | |||
| .Learly_end: | ||||
| 	b.d	.Lend | ||||
| 	sub_s.ne r1,r1,r1 | ||||
| ARC_EXIT strlen | ||||
| END(strlen) | ||||
|  |  | |||
|  | @ -260,7 +260,7 @@ ARCFP_CODE	;Fast Path Code, candidate for ICCM | |||
| ; I-TLB Miss Exception Handler
 | ||||
| ;-----------------------------------------------------------------------------
 | ||||
| 
 | ||||
| ARC_ENTRY EV_TLBMissI | ||||
| ENTRY(EV_TLBMissI) | ||||
| 
 | ||||
| 	TLBMISS_FREEUP_REGS | ||||
| 
 | ||||
|  | @ -293,13 +293,13 @@ ARC_ENTRY EV_TLBMissI | |||
| 	TLBMISS_RESTORE_REGS | ||||
| 	rtie | ||||
| 
 | ||||
| ARC_EXIT EV_TLBMissI | ||||
| END(EV_TLBMissI) | ||||
| 
 | ||||
| ;-----------------------------------------------------------------------------
 | ||||
| ; D-TLB Miss Exception Handler
 | ||||
| ;-----------------------------------------------------------------------------
 | ||||
| 
 | ||||
| ARC_ENTRY EV_TLBMissD | ||||
| ENTRY(EV_TLBMissD) | ||||
| 
 | ||||
| 	TLBMISS_FREEUP_REGS | ||||
| 
 | ||||
|  | @ -381,6 +381,4 @@ do_slow_path_pf: | |||
| 	bl  do_page_fault | ||||
| 	b   ret_from_exception | ||||
| 
 | ||||
| ARC_EXIT EV_TLBMissD | ||||
| 
 | ||||
| ARC_ENTRY EV_TLBMissB   ; Bogus entry to measure sz of DTLBMiss hdlr
 | ||||
| END(EV_TLBMissD) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Vineet Gupta
				Vineet Gupta