mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 19:56:18 +00:00
Blackfin arch: add proper ENDPROC()
add proper ENDPROC() to close out assembly functions so size/type is set properly in the final ELF image Signed-off-by: Mike Frysinger <michael.frysinger@analog.com> Signed-off-by: Bryan Wu <bryan.wu@analog.com>
This commit is contained in:
parent
52a078120c
commit
51be24c351
21 changed files with 72 additions and 8 deletions
|
@ -58,10 +58,12 @@ ENTRY(_ret_from_fork)
|
|||
RESTORE_ALL_SYS
|
||||
p0 = reti;
|
||||
jump (p0);
|
||||
ENDPROC(_ret_from_fork)
|
||||
|
||||
ENTRY(_sys_fork)
|
||||
r0 = -EINVAL;
|
||||
rts;
|
||||
ENDPROC(_sys_fork)
|
||||
|
||||
ENTRY(_sys_vfork)
|
||||
r0 = sp;
|
||||
|
@ -72,6 +74,7 @@ ENTRY(_sys_vfork)
|
|||
SP += 12;
|
||||
rets = [sp++];
|
||||
rts;
|
||||
ENDPROC(_sys_vfork)
|
||||
|
||||
ENTRY(_sys_clone)
|
||||
r0 = sp;
|
||||
|
@ -82,6 +85,7 @@ ENTRY(_sys_clone)
|
|||
SP += 12;
|
||||
rets = [sp++];
|
||||
rts;
|
||||
ENDPROC(_sys_clone)
|
||||
|
||||
ENTRY(_sys_rt_sigreturn)
|
||||
r0 = sp;
|
||||
|
@ -92,3 +96,4 @@ ENTRY(_sys_rt_sigreturn)
|
|||
SP += 12;
|
||||
rets = [sp++];
|
||||
rts;
|
||||
ENDPROC(_sys_rt_sigreturn)
|
||||
|
|
|
@ -44,6 +44,7 @@
|
|||
*/
|
||||
|
||||
.global ___divsi3;
|
||||
.type ___divsi3, STT_FUNC;
|
||||
|
||||
#ifdef CONFIG_ARITHMETIC_OPS_L1
|
||||
.section .l1.text
|
||||
|
@ -214,3 +215,5 @@ ___divsi3 :
|
|||
.Lret_zero:
|
||||
R0 = 0;
|
||||
RTS;
|
||||
|
||||
.size ___divsi3, .-___divsi3
|
||||
|
|
|
@ -46,7 +46,7 @@ ENTRY(_insl)
|
|||
.Llong_loop_e: NOP;
|
||||
sti R3;
|
||||
RTS;
|
||||
|
||||
ENDPROC(_insl)
|
||||
|
||||
ENTRY(_insw)
|
||||
P0 = R0; /* P0 = port */
|
||||
|
@ -61,6 +61,7 @@ ENTRY(_insw)
|
|||
.Lword_loop_e: NOP;
|
||||
sti R3;
|
||||
RTS;
|
||||
ENDPROC(_insw)
|
||||
|
||||
ENTRY(_insb)
|
||||
P0 = R0; /* P0 = port */
|
||||
|
@ -75,3 +76,4 @@ ENTRY(_insb)
|
|||
.Lbyte_loop_e: NOP;
|
||||
sti R3;
|
||||
RTS;
|
||||
ENDPROC(_insb)
|
||||
|
|
|
@ -67,4 +67,4 @@ ENTRY(_memchr)
|
|||
R0 += -1;
|
||||
RTS;
|
||||
|
||||
.size _memchr,.-_memchr
|
||||
ENDPROC(_memchr)
|
||||
|
|
|
@ -107,4 +107,4 @@ ENTRY(_memcmp)
|
|||
P3 = I1;
|
||||
RTS;
|
||||
|
||||
.size _memcmp,.-_memcmp
|
||||
ENDPROC(_memcmp)
|
||||
|
|
|
@ -140,3 +140,5 @@ ENTRY(_memcpy)
|
|||
B[P0--] = R1;
|
||||
|
||||
RTS;
|
||||
|
||||
ENDPROC(_memcpy)
|
||||
|
|
|
@ -100,4 +100,4 @@ ENTRY(_memmove)
|
|||
P3 = I1;
|
||||
RTS;
|
||||
|
||||
.size _memmove,.-_memmove
|
||||
ENDPROC(_memmove)
|
||||
|
|
|
@ -106,4 +106,4 @@ ENTRY(_memset)
|
|||
B[P0++] = R1;
|
||||
JUMP .Laligned;
|
||||
|
||||
.size _memset,.-_memset
|
||||
ENDPROC(_memset)
|
||||
|
|
|
@ -77,3 +77,5 @@ ___modsi3:
|
|||
R0 = 0;
|
||||
.LRETURN_R0:
|
||||
RTS;
|
||||
|
||||
.size ___modsi3, .-___modsi3
|
||||
|
|
|
@ -40,6 +40,7 @@ ENTRY(_outsl)
|
|||
.Llong_loop_s: R0 = [P1++];
|
||||
.Llong_loop_e: [P0] = R0;
|
||||
RTS;
|
||||
ENDPROC(_outsl)
|
||||
|
||||
ENTRY(_outsw)
|
||||
P0 = R0; /* P0 = port */
|
||||
|
@ -50,6 +51,7 @@ ENTRY(_outsw)
|
|||
.Lword_loop_s: R0 = W[P1++];
|
||||
.Lword_loop_e: W[P0] = R0;
|
||||
RTS;
|
||||
ENDPROC(_outsw)
|
||||
|
||||
ENTRY(_outsb)
|
||||
P0 = R0; /* P0 = port */
|
||||
|
@ -60,3 +62,4 @@ ENTRY(_outsb)
|
|||
.Lbyte_loop_s: R0 = B[P1++];
|
||||
.Lbyte_loop_e: B[P0] = R0;
|
||||
RTS;
|
||||
ENDPROC(_outsb)
|
||||
|
|
|
@ -28,3 +28,5 @@ ___smulsi3_highpart:
|
|||
|
||||
R0 = R0 + R1;
|
||||
RTS;
|
||||
|
||||
.size ___smulsi3_highpart, .-___smulsi3_highpart
|
||||
|
|
|
@ -296,3 +296,5 @@ ENTRY(___udivsi3)
|
|||
R1 = R0 - R3;
|
||||
IF CC R0 = R1;
|
||||
RTS;
|
||||
|
||||
ENDPROC(___udivsi3)
|
||||
|
|
|
@ -34,7 +34,9 @@
|
|||
#endif
|
||||
|
||||
.extern ___udivsi3;
|
||||
.type ___udivsi3, STT_FUNC;
|
||||
.globl ___umodsi3
|
||||
.type ___umodsi3, STT_FUNC;
|
||||
___umodsi3:
|
||||
|
||||
CC=R0==0;
|
||||
|
@ -64,3 +66,5 @@ ___umodsi3:
|
|||
R0 = 0;
|
||||
.LRETURN_R0:
|
||||
RTS;
|
||||
|
||||
.size ___umodsi3, .-___umodsi3
|
||||
|
|
|
@ -21,3 +21,5 @@ ___umulsi3_highpart:
|
|||
R1 = PACK(R1.l,R0.h);
|
||||
R0 = R1 + R2;
|
||||
RTS;
|
||||
|
||||
.size ___umulsi3_highpart, .-___umulsi3_highpart
|
||||
|
|
|
@ -70,6 +70,7 @@ ENTRY(_cache_invalidate)
|
|||
.Lno_dcache_b:
|
||||
R7 = [SP++];
|
||||
RTS;
|
||||
ENDPROC(_cache_invalidate)
|
||||
|
||||
/* Invalidate the Entire Instruction cache by
|
||||
* disabling IMC bit
|
||||
|
@ -106,6 +107,8 @@ ENTRY(_invalidate_entire_icache)
|
|||
|
||||
( R7:5) = [SP++];
|
||||
RTS;
|
||||
ENDPROC(_invalidate_entire_icache)
|
||||
ENDPROC(_icache_invalidate)
|
||||
|
||||
/*
|
||||
* blackfin_cache_flush_range(start, end)
|
||||
|
@ -129,6 +132,7 @@ ENTRY(_blackfin_icache_flush_range)
|
|||
IFLUSH [P0];
|
||||
SSYNC;
|
||||
RTS;
|
||||
ENDPROC(_blackfin_icache_flush_range)
|
||||
|
||||
/*
|
||||
* blackfin_icache_dcache_flush_range(start, end)
|
||||
|
@ -155,6 +159,7 @@ ENTRY(_blackfin_icache_dcache_flush_range)
|
|||
FLUSH [P0];
|
||||
SSYNC;
|
||||
RTS;
|
||||
ENDPROC(_blackfin_icache_dcache_flush_range)
|
||||
|
||||
/* Throw away all D-cached data in specified region without any obligation to
|
||||
* write them back. However, we must clean the D-cached entries around the
|
||||
|
@ -183,6 +188,7 @@ ENTRY(_blackfin_dcache_invalidate_range)
|
|||
FLUSHINV[P0];
|
||||
SSYNC;
|
||||
RTS;
|
||||
ENDPROC(_blackfin_dcache_invalidate_range)
|
||||
|
||||
/* Invalidate the Entire Data cache by
|
||||
* clearing DMC[1:0] bits
|
||||
|
@ -221,6 +227,8 @@ ENTRY(_dcache_invalidate)
|
|||
|
||||
( R7:6) = [SP++];
|
||||
RTS;
|
||||
ENDPROC(_dcache_invalidate)
|
||||
ENDPROC(_invalidate_entire_dcache)
|
||||
|
||||
ENTRY(_blackfin_dcache_flush_range)
|
||||
R2 = -L1_CACHE_BYTES;
|
||||
|
@ -241,6 +249,7 @@ ENTRY(_blackfin_dcache_flush_range)
|
|||
FLUSH[P0];
|
||||
SSYNC;
|
||||
RTS;
|
||||
ENDPROC(_blackfin_dcache_flush_range)
|
||||
|
||||
ENTRY(_blackfin_dflush_page)
|
||||
P1 = 1 << (PAGE_SHIFT - L1_CACHE_SHIFT);
|
||||
|
@ -251,3 +260,4 @@ ENTRY(_blackfin_dflush_page)
|
|||
.Lfl1: FLUSH [P0++];
|
||||
SSYNC;
|
||||
RTS;
|
||||
ENDPROC(_blackfin_dflush_page)
|
||||
|
|
|
@ -86,6 +86,8 @@ ENTRY(_bfin_icache_init)
|
|||
SSYNC;
|
||||
STI R2;
|
||||
RTS;
|
||||
|
||||
ENDPROC(_bfin_icache_init)
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_BLKFIN_DCACHE)
|
||||
|
@ -134,4 +136,6 @@ ENTRY(_bfin_dcache_init)
|
|||
SSYNC;
|
||||
STI R2;
|
||||
RTS;
|
||||
|
||||
ENDPROC(_bfin_dcache_init)
|
||||
#endif
|
||||
|
|
|
@ -42,8 +42,6 @@
|
|||
|
||||
.align 2
|
||||
|
||||
.global __cplb_hdr;
|
||||
.type __cplb_hdr, STT_FUNC;
|
||||
ENTRY(__cplb_hdr)
|
||||
R2 = SEQSTAT;
|
||||
|
||||
|
@ -128,3 +126,5 @@ ENTRY(__cplb_hdr)
|
|||
call _panic_cplb_error;
|
||||
SP += 12;
|
||||
JUMP _handle_bad_cplb;
|
||||
|
||||
ENDPROC(__cplb_hdr)
|
||||
|
|
|
@ -592,6 +592,7 @@ ENTRY(_cplb_mgr)
|
|||
( R7:4,P5:3 ) = [SP++];
|
||||
R0 = CPLB_RELOADED;
|
||||
RTS;
|
||||
ENDPROC(_cplb_mgr)
|
||||
|
||||
.data
|
||||
.align 4;
|
||||
|
|
|
@ -103,6 +103,7 @@ ENTRY(_ex_dcplb)
|
|||
if !cc jump _return_from_exception;
|
||||
/* fall through */
|
||||
#endif
|
||||
ENDPROC(_ex_dcplb)
|
||||
|
||||
ENTRY(_ex_icplb)
|
||||
(R7:6,P5:4) = [sp++];
|
||||
|
@ -113,6 +114,7 @@ ENTRY(_ex_icplb)
|
|||
RESTORE_ALL_SYS
|
||||
SP = RETN;
|
||||
rtx;
|
||||
ENDPROC(_ex_icplb)
|
||||
|
||||
ENTRY(_ex_spinlock)
|
||||
/* Transform this into a syscall - twiddle the syscall vector. */
|
||||
|
@ -123,6 +125,7 @@ ENTRY(_ex_spinlock)
|
|||
[p5] = r7;
|
||||
csync;
|
||||
/* Fall through. */
|
||||
ENDPROC(_ex_spinlock)
|
||||
|
||||
ENTRY(_ex_syscall)
|
||||
DEBUG_START_HWTRACE
|
||||
|
@ -131,6 +134,7 @@ ENTRY(_ex_syscall)
|
|||
raise 15; /* invoked by TRAP #0, for sys call */
|
||||
sp = retn;
|
||||
rtx
|
||||
ENDPROC(_ex_syscall)
|
||||
|
||||
ENTRY(_spinlock_bh)
|
||||
SAVE_ALL_SYS
|
||||
|
@ -150,12 +154,14 @@ ENTRY(_spinlock_bh)
|
|||
[SP + PT_R0] = R0;
|
||||
RESTORE_ALL_SYS
|
||||
rti;
|
||||
ENDPROC(_spinlock_bh)
|
||||
|
||||
ENTRY(_ex_soft_bp)
|
||||
r7 = retx;
|
||||
r7 += -2;
|
||||
retx = r7;
|
||||
jump.s _ex_trap_c;
|
||||
ENDPROC(_ex_soft_bp)
|
||||
|
||||
ENTRY(_ex_single_step)
|
||||
r7 = retx;
|
||||
|
@ -191,6 +197,7 @@ _return_from_exception:
|
|||
ASTAT = [sp++];
|
||||
sp = retn;
|
||||
rtx;
|
||||
ENDPROC(_ex_soft_bp)
|
||||
|
||||
ENTRY(_handle_bad_cplb)
|
||||
/* To get here, we just tried and failed to change a CPLB
|
||||
|
@ -250,6 +257,7 @@ ENTRY(_ex_trap_c)
|
|||
SP = RETN;
|
||||
raise 5;
|
||||
rtx;
|
||||
ENDPROC(_ex_trap_c)
|
||||
|
||||
ENTRY(_exception_to_level5)
|
||||
SAVE_ALL_SYS
|
||||
|
@ -314,6 +322,7 @@ ENTRY(_exception_to_level5)
|
|||
call _ret_from_exception;
|
||||
RESTORE_ALL_SYS
|
||||
rti;
|
||||
ENDPROC(_exception_to_level5)
|
||||
|
||||
ENTRY(_trap) /* Exception: 4th entry into system event table(supervisor mode)*/
|
||||
/* Since the kernel stack can be anywhere, it's not guaranteed to be
|
||||
|
@ -342,6 +351,7 @@ ENTRY(_trap) /* Exception: 4th entry into system event table(supervisor mode)*/
|
|||
r7 = -ENOSYS; /* signextending enough */
|
||||
[sp + PT_R0] = r7; /* return value from system call */
|
||||
jump .Lsyscall_really_exit;
|
||||
ENDPROC(_trap)
|
||||
|
||||
ENTRY(_kernel_execve)
|
||||
link SIZEOF_PTREGS;
|
||||
|
@ -396,6 +406,7 @@ ENTRY(_kernel_execve)
|
|||
1:
|
||||
unlink;
|
||||
rts;
|
||||
ENDPROC(_kernel_execve)
|
||||
|
||||
ENTRY(_system_call)
|
||||
/* Store IPEND */
|
||||
|
@ -503,6 +514,7 @@ ENTRY(_system_call)
|
|||
r5 = [sp + PT_RESERVED];
|
||||
rets = r5;
|
||||
rts;
|
||||
ENDPROC(_system_call)
|
||||
|
||||
_sys_trace:
|
||||
call _syscall_trace;
|
||||
|
@ -531,6 +543,7 @@ _sys_trace:
|
|||
|
||||
call _syscall_trace;
|
||||
jump .Lresume_userspace;
|
||||
ENDPROC(_sys_trace)
|
||||
|
||||
ENTRY(_resume)
|
||||
/*
|
||||
|
@ -580,6 +593,7 @@ _new_old_task:
|
|||
* in "new" task.
|
||||
*/
|
||||
rts;
|
||||
ENDPROC(_resume)
|
||||
|
||||
ENTRY(_ret_from_exception)
|
||||
p2.l = lo(IPEND);
|
||||
|
@ -638,6 +652,7 @@ ENTRY(_ret_from_exception)
|
|||
syscfg = r0;
|
||||
5:
|
||||
rts;
|
||||
ENDPROC(_ret_from_exception)
|
||||
|
||||
ENTRY(_return_from_int)
|
||||
/* If someone else already raised IRQ 15, do nothing. */
|
||||
|
@ -680,6 +695,7 @@ ENTRY(_return_from_int)
|
|||
rti;
|
||||
2:
|
||||
rts;
|
||||
ENDPROC(_return_from_int)
|
||||
|
||||
ENTRY(_lower_to_irq14)
|
||||
#if defined(ANOMALY_05000281)
|
||||
|
@ -745,6 +761,7 @@ _schedule_and_signal:
|
|||
1:
|
||||
RESTORE_CONTEXT
|
||||
rti;
|
||||
ENDPROC(_lower_to_irq14)
|
||||
|
||||
/* Make sure when we start, that the circular buffer is initialized properly
|
||||
* R0 and P0 are call clobbered, so we can use them here.
|
||||
|
@ -758,6 +775,7 @@ ENTRY(_init_exception_buff)
|
|||
p0.l = _out_ptr_excause;
|
||||
[p0] = r0;
|
||||
rts;
|
||||
ENDPROC(_init_exception_buff)
|
||||
|
||||
/*
|
||||
* Put these in the kernel data section - that should always be covered by
|
||||
|
|
|
@ -66,6 +66,7 @@ ENTRY(_evt_emulation)
|
|||
SP += 12;
|
||||
/* - GDB stub fills this in by itself (if defined) */
|
||||
rte;
|
||||
ENDPROC(_evt_emulation)
|
||||
#endif
|
||||
|
||||
/* Common interrupt entry code. First we do CLI, then push
|
||||
|
@ -251,3 +252,4 @@ ENTRY(_evt_system_call)
|
|||
#endif
|
||||
call _system_call;
|
||||
jump .Lcommon_restore_context;
|
||||
ENDPROC(_evt_system_call)
|
||||
|
|
|
@ -155,6 +155,7 @@ ENTRY(_cache_grab_lock)
|
|||
( R7:0,P5:0 ) = [SP++];
|
||||
|
||||
RTS;
|
||||
ENDPROC(_cache_grab_lock)
|
||||
|
||||
/* After the execution of critical code, the code is now locked into
|
||||
* the cache way. Now we need to set ILOC.
|
||||
|
@ -186,6 +187,7 @@ ENTRY(_cache_lock)
|
|||
|
||||
( R7:0,P5:0 ) = [SP++];
|
||||
RTS;
|
||||
ENDPROC(_cache_lock)
|
||||
|
||||
#endif /* BLKFIN_CACHE_LOCK */
|
||||
|
||||
|
@ -193,7 +195,6 @@ ENTRY(_cache_lock)
|
|||
*/
|
||||
|
||||
ENTRY(_read_iloc)
|
||||
|
||||
P1.H = (IMEM_CONTROL >> 16);
|
||||
P1.L = (IMEM_CONTROL & 0xFFFF);
|
||||
R1 = 0xF;
|
||||
|
@ -202,3 +203,4 @@ ENTRY(_read_iloc)
|
|||
R0 = R0 & R1;
|
||||
|
||||
RTS;
|
||||
ENDPROC(_read_iloc)
|
||||
|
|
Loading…
Reference in a new issue