mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-23 19:43:33 +00:00
227 lines
5.4 KiB
ArmAsm
227 lines
5.4 KiB
ArmAsm
|
/*
|
||
|
* Copyright (C) 1995, 1997, 2007-2013 Free Software Foundation, Inc.
|
||
|
*
|
||
|
* SPDX-License-Identifier: GPL-2.0+
|
||
|
*/
|
||
|
|
||
|
/* ANSI concatenation macros. */
|
||
|
|
||
|
#define CONCAT1(a, b) CONCAT2(a, b)
|
||
|
#define CONCAT2(a, b) a ## b
|
||
|
|
||
|
/* Use the right prefix for global labels. */
|
||
|
|
||
|
#define SYM(x) CONCAT1 (__USER_LABEL_PREFIX__, x)
|
||
|
|
||
|
#ifndef WORKING_ASSEMBLER
|
||
|
#define abs_l abs
|
||
|
#define asl_l asl
|
||
|
#define mov_l mov
|
||
|
#endif
|
||
|
|
||
|
#define FUNC(X) .type SYM(X),@function
|
||
|
#define HIDDEN_FUNC(X) FUNC(X)` .hidden X
|
||
|
#define ENDFUNC0(X) .Lfe_##X: .size X,.Lfe_##X-X
|
||
|
#define ENDFUNC(X) ENDFUNC0(X)
|
||
|
|
||
|
.section .text
|
||
|
.align 4
|
||
|
.global SYM(__st_r13_to_r15)
|
||
|
.global SYM(__st_r13_to_r16)
|
||
|
.global SYM(__st_r13_to_r17)
|
||
|
.global SYM(__st_r13_to_r18)
|
||
|
.global SYM(__st_r13_to_r19)
|
||
|
.global SYM(__st_r13_to_r20)
|
||
|
.global SYM(__st_r13_to_r21)
|
||
|
.global SYM(__st_r13_to_r22)
|
||
|
.global SYM(__st_r13_to_r23)
|
||
|
.global SYM(__st_r13_to_r24)
|
||
|
.global SYM(__st_r13_to_r25)
|
||
|
HIDDEN_FUNC(__st_r13_to_r15)
|
||
|
HIDDEN_FUNC(__st_r13_to_r16)
|
||
|
HIDDEN_FUNC(__st_r13_to_r17)
|
||
|
HIDDEN_FUNC(__st_r13_to_r18)
|
||
|
HIDDEN_FUNC(__st_r13_to_r19)
|
||
|
HIDDEN_FUNC(__st_r13_to_r20)
|
||
|
HIDDEN_FUNC(__st_r13_to_r21)
|
||
|
HIDDEN_FUNC(__st_r13_to_r22)
|
||
|
HIDDEN_FUNC(__st_r13_to_r23)
|
||
|
HIDDEN_FUNC(__st_r13_to_r24)
|
||
|
HIDDEN_FUNC(__st_r13_to_r25)
|
||
|
.align 4
|
||
|
SYM(__st_r13_to_r25):
|
||
|
st r25, [sp,48]
|
||
|
SYM(__st_r13_to_r24):
|
||
|
st r24, [sp,44]
|
||
|
SYM(__st_r13_to_r23):
|
||
|
st r23, [sp,40]
|
||
|
SYM(__st_r13_to_r22):
|
||
|
st r22, [sp,36]
|
||
|
SYM(__st_r13_to_r21):
|
||
|
st r21, [sp,32]
|
||
|
SYM(__st_r13_to_r20):
|
||
|
st r20, [sp,28]
|
||
|
SYM(__st_r13_to_r19):
|
||
|
st r19, [sp,24]
|
||
|
SYM(__st_r13_to_r18):
|
||
|
st r18, [sp,20]
|
||
|
SYM(__st_r13_to_r17):
|
||
|
st r17, [sp,16]
|
||
|
SYM(__st_r13_to_r16):
|
||
|
st r16, [sp,12]
|
||
|
SYM(__st_r13_to_r15):
|
||
|
#ifdef __ARC700__
|
||
|
st r15, [sp,8] ; minimum function size to avoid stall: 6 bytes.
|
||
|
#else
|
||
|
st_s r15, [sp,8]
|
||
|
#endif
|
||
|
st_s r14, [sp,4]
|
||
|
j_s.d [%blink]
|
||
|
st_s r13, [sp,0]
|
||
|
ENDFUNC(__st_r13_to_r15)
|
||
|
ENDFUNC(__st_r13_to_r16)
|
||
|
ENDFUNC(__st_r13_to_r17)
|
||
|
ENDFUNC(__st_r13_to_r18)
|
||
|
ENDFUNC(__st_r13_to_r19)
|
||
|
ENDFUNC(__st_r13_to_r20)
|
||
|
ENDFUNC(__st_r13_to_r21)
|
||
|
ENDFUNC(__st_r13_to_r22)
|
||
|
ENDFUNC(__st_r13_to_r23)
|
||
|
ENDFUNC(__st_r13_to_r24)
|
||
|
ENDFUNC(__st_r13_to_r25)
|
||
|
|
||
|
.section .text
|
||
|
.align 4
|
||
|
; ==================================
|
||
|
; the loads
|
||
|
|
||
|
.global SYM(__ld_r13_to_r15)
|
||
|
.global SYM(__ld_r13_to_r16)
|
||
|
.global SYM(__ld_r13_to_r17)
|
||
|
.global SYM(__ld_r13_to_r18)
|
||
|
.global SYM(__ld_r13_to_r19)
|
||
|
.global SYM(__ld_r13_to_r20)
|
||
|
.global SYM(__ld_r13_to_r21)
|
||
|
.global SYM(__ld_r13_to_r22)
|
||
|
.global SYM(__ld_r13_to_r23)
|
||
|
.global SYM(__ld_r13_to_r24)
|
||
|
.global SYM(__ld_r13_to_r25)
|
||
|
HIDDEN_FUNC(__ld_r13_to_r15)
|
||
|
HIDDEN_FUNC(__ld_r13_to_r16)
|
||
|
HIDDEN_FUNC(__ld_r13_to_r17)
|
||
|
HIDDEN_FUNC(__ld_r13_to_r18)
|
||
|
HIDDEN_FUNC(__ld_r13_to_r19)
|
||
|
HIDDEN_FUNC(__ld_r13_to_r20)
|
||
|
HIDDEN_FUNC(__ld_r13_to_r21)
|
||
|
HIDDEN_FUNC(__ld_r13_to_r22)
|
||
|
HIDDEN_FUNC(__ld_r13_to_r23)
|
||
|
HIDDEN_FUNC(__ld_r13_to_r24)
|
||
|
HIDDEN_FUNC(__ld_r13_to_r25)
|
||
|
SYM(__ld_r13_to_r25):
|
||
|
ld r25, [sp,48]
|
||
|
SYM(__ld_r13_to_r24):
|
||
|
ld r24, [sp,44]
|
||
|
SYM(__ld_r13_to_r23):
|
||
|
ld r23, [sp,40]
|
||
|
SYM(__ld_r13_to_r22):
|
||
|
ld r22, [sp,36]
|
||
|
SYM(__ld_r13_to_r21):
|
||
|
ld r21, [sp,32]
|
||
|
SYM(__ld_r13_to_r20):
|
||
|
ld r20, [sp,28]
|
||
|
SYM(__ld_r13_to_r19):
|
||
|
ld r19, [sp,24]
|
||
|
SYM(__ld_r13_to_r18):
|
||
|
ld r18, [sp,20]
|
||
|
SYM(__ld_r13_to_r17):
|
||
|
ld r17, [sp,16]
|
||
|
SYM(__ld_r13_to_r16):
|
||
|
ld r16, [sp,12]
|
||
|
SYM(__ld_r13_to_r15):
|
||
|
#ifdef __ARC700__
|
||
|
ld r15, [sp,8] ; minimum function size to avoid stall: 6 bytes.
|
||
|
#else
|
||
|
ld_s r15, [sp,8]
|
||
|
#endif
|
||
|
ld_s r14, [sp,4]
|
||
|
j_s.d [%blink]
|
||
|
ld_s r13, [sp,0]
|
||
|
ENDFUNC(__ld_r13_to_r15)
|
||
|
ENDFUNC(__ld_r13_to_r16)
|
||
|
ENDFUNC(__ld_r13_to_r17)
|
||
|
ENDFUNC(__ld_r13_to_r18)
|
||
|
ENDFUNC(__ld_r13_to_r19)
|
||
|
ENDFUNC(__ld_r13_to_r20)
|
||
|
ENDFUNC(__ld_r13_to_r21)
|
||
|
ENDFUNC(__ld_r13_to_r22)
|
||
|
ENDFUNC(__ld_r13_to_r23)
|
||
|
ENDFUNC(__ld_r13_to_r24)
|
||
|
ENDFUNC(__ld_r13_to_r25)
|
||
|
|
||
|
.global SYM(__ld_r13_to_r14_ret)
|
||
|
.global SYM(__ld_r13_to_r15_ret)
|
||
|
.global SYM(__ld_r13_to_r16_ret)
|
||
|
.global SYM(__ld_r13_to_r17_ret)
|
||
|
.global SYM(__ld_r13_to_r18_ret)
|
||
|
.global SYM(__ld_r13_to_r19_ret)
|
||
|
.global SYM(__ld_r13_to_r20_ret)
|
||
|
.global SYM(__ld_r13_to_r21_ret)
|
||
|
.global SYM(__ld_r13_to_r22_ret)
|
||
|
.global SYM(__ld_r13_to_r23_ret)
|
||
|
.global SYM(__ld_r13_to_r24_ret)
|
||
|
.global SYM(__ld_r13_to_r25_ret)
|
||
|
HIDDEN_FUNC(__ld_r13_to_r14_ret)
|
||
|
HIDDEN_FUNC(__ld_r13_to_r15_ret)
|
||
|
HIDDEN_FUNC(__ld_r13_to_r16_ret)
|
||
|
HIDDEN_FUNC(__ld_r13_to_r17_ret)
|
||
|
HIDDEN_FUNC(__ld_r13_to_r18_ret)
|
||
|
HIDDEN_FUNC(__ld_r13_to_r19_ret)
|
||
|
HIDDEN_FUNC(__ld_r13_to_r20_ret)
|
||
|
HIDDEN_FUNC(__ld_r13_to_r21_ret)
|
||
|
HIDDEN_FUNC(__ld_r13_to_r22_ret)
|
||
|
HIDDEN_FUNC(__ld_r13_to_r23_ret)
|
||
|
HIDDEN_FUNC(__ld_r13_to_r24_ret)
|
||
|
HIDDEN_FUNC(__ld_r13_to_r25_ret)
|
||
|
.section .text
|
||
|
.align 4
|
||
|
SYM(__ld_r13_to_r25_ret):
|
||
|
ld r25, [sp,48]
|
||
|
SYM(__ld_r13_to_r24_ret):
|
||
|
ld r24, [sp,44]
|
||
|
SYM(__ld_r13_to_r23_ret):
|
||
|
ld r23, [sp,40]
|
||
|
SYM(__ld_r13_to_r22_ret):
|
||
|
ld r22, [sp,36]
|
||
|
SYM(__ld_r13_to_r21_ret):
|
||
|
ld r21, [sp,32]
|
||
|
SYM(__ld_r13_to_r20_ret):
|
||
|
ld r20, [sp,28]
|
||
|
SYM(__ld_r13_to_r19_ret):
|
||
|
ld r19, [sp,24]
|
||
|
SYM(__ld_r13_to_r18_ret):
|
||
|
ld r18, [sp,20]
|
||
|
SYM(__ld_r13_to_r17_ret):
|
||
|
ld r17, [sp,16]
|
||
|
SYM(__ld_r13_to_r16_ret):
|
||
|
ld r16, [sp,12]
|
||
|
SYM(__ld_r13_to_r15_ret):
|
||
|
ld r15, [sp,8]
|
||
|
SYM(__ld_r13_to_r14_ret):
|
||
|
ld blink,[sp,r12]
|
||
|
ld_s r14, [sp,4]
|
||
|
ld.ab r13, [sp,r12]
|
||
|
j_s.d [%blink]
|
||
|
add_s sp,sp,4
|
||
|
ENDFUNC(__ld_r13_to_r14_ret)
|
||
|
ENDFUNC(__ld_r13_to_r15_ret)
|
||
|
ENDFUNC(__ld_r13_to_r16_ret)
|
||
|
ENDFUNC(__ld_r13_to_r17_ret)
|
||
|
ENDFUNC(__ld_r13_to_r18_ret)
|
||
|
ENDFUNC(__ld_r13_to_r19_ret)
|
||
|
ENDFUNC(__ld_r13_to_r20_ret)
|
||
|
ENDFUNC(__ld_r13_to_r21_ret)
|
||
|
ENDFUNC(__ld_r13_to_r22_ret)
|
||
|
ENDFUNC(__ld_r13_to_r23_ret)
|
||
|
ENDFUNC(__ld_r13_to_r24_ret)
|
||
|
ENDFUNC(__ld_r13_to_r25_ret)
|