mirror of
https://sourceware.org/git/glibc.git
synced 2025-08-05 19:35:52 +03:00
AArch64: Remove PTR_ARG/SIZE_ARG defines
This series removes various ILP32 defines that are now no longer needed. Remove PTR_ARG/SIZE_ARG. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
This commit is contained in:
@@ -47,8 +47,6 @@ ENTRY (__longjmp)
|
|||||||
cfi_offset(d14, JB_D14<<3)
|
cfi_offset(d14, JB_D14<<3)
|
||||||
cfi_offset(d15, JB_D15<<3)
|
cfi_offset(d15, JB_D15<<3)
|
||||||
|
|
||||||
PTR_ARG (0)
|
|
||||||
|
|
||||||
#if IS_IN(libc)
|
#if IS_IN(libc)
|
||||||
/* Disable ZA state of SME in libc.a and libc.so, but not in ld.so. */
|
/* Disable ZA state of SME in libc.a and libc.so, but not in ld.so. */
|
||||||
# if HAVE_AARCH64_PAC_RET
|
# if HAVE_AARCH64_PAC_RET
|
||||||
|
@@ -40,9 +40,6 @@
|
|||||||
#define zva_val x4
|
#define zva_val x4
|
||||||
|
|
||||||
ENTRY (__libc_mtag_tag_region)
|
ENTRY (__libc_mtag_tag_region)
|
||||||
PTR_ARG (0)
|
|
||||||
SIZE_ARG (1)
|
|
||||||
|
|
||||||
add dstend, dstin, count
|
add dstend, dstin, count
|
||||||
|
|
||||||
cmp count, 96
|
cmp count, 96
|
||||||
|
@@ -40,9 +40,6 @@
|
|||||||
#define zva_val x4
|
#define zva_val x4
|
||||||
|
|
||||||
ENTRY (__libc_mtag_tag_zero_region)
|
ENTRY (__libc_mtag_tag_zero_region)
|
||||||
PTR_ARG (0)
|
|
||||||
SIZE_ARG (1)
|
|
||||||
|
|
||||||
add dstend, dstin, count
|
add dstend, dstin, count
|
||||||
|
|
||||||
cmp count, 96
|
cmp count, 96
|
||||||
|
@@ -28,7 +28,6 @@ ENTRY (_start)
|
|||||||
|
|
||||||
/* Load and relocate all library dependencies. */
|
/* Load and relocate all library dependencies. */
|
||||||
mov x0, sp
|
mov x0, sp
|
||||||
PTR_ARG (0)
|
|
||||||
bl _dl_start
|
bl _dl_start
|
||||||
/* Returns user entry point in x0. */
|
/* Returns user entry point in x0. */
|
||||||
mov PTR_REG (21), PTR_REG (0)
|
mov PTR_REG (21), PTR_REG (0)
|
||||||
|
@@ -75,7 +75,6 @@
|
|||||||
.align 2
|
.align 2
|
||||||
_dl_tlsdesc_return:
|
_dl_tlsdesc_return:
|
||||||
BTI_C
|
BTI_C
|
||||||
PTR_ARG (0)
|
|
||||||
ldr PTR_REG (0), [x0, #PTR_SIZE]
|
ldr PTR_REG (0), [x0, #PTR_SIZE]
|
||||||
RET
|
RET
|
||||||
cfi_endproc
|
cfi_endproc
|
||||||
@@ -99,7 +98,6 @@ _dl_tlsdesc_undefweak:
|
|||||||
BTI_C
|
BTI_C
|
||||||
str x1, [sp, #-16]!
|
str x1, [sp, #-16]!
|
||||||
cfi_adjust_cfa_offset (16)
|
cfi_adjust_cfa_offset (16)
|
||||||
PTR_ARG (0)
|
|
||||||
ldr PTR_REG (0), [x0, #PTR_SIZE]
|
ldr PTR_REG (0), [x0, #PTR_SIZE]
|
||||||
mrs x1, tpidr_el0
|
mrs x1, tpidr_el0
|
||||||
sub PTR_REG (0), PTR_REG (0), PTR_REG (1)
|
sub PTR_REG (0), PTR_REG (0), PTR_REG (1)
|
||||||
@@ -145,7 +143,6 @@ _dl_tlsdesc_undefweak:
|
|||||||
.align 2
|
.align 2
|
||||||
_dl_tlsdesc_dynamic:
|
_dl_tlsdesc_dynamic:
|
||||||
BTI_C
|
BTI_C
|
||||||
PTR_ARG (0)
|
|
||||||
|
|
||||||
/* Save just enough registers to support fast path, if we fall
|
/* Save just enough registers to support fast path, if we fall
|
||||||
into slow path we will save additional registers. */
|
into slow path we will save additional registers. */
|
||||||
|
@@ -57,8 +57,6 @@
|
|||||||
exactly which byte matched. */
|
exactly which byte matched. */
|
||||||
|
|
||||||
ENTRY (MEMCHR)
|
ENTRY (MEMCHR)
|
||||||
PTR_ARG (0)
|
|
||||||
SIZE_ARG (2)
|
|
||||||
bic src, srcin, 15
|
bic src, srcin, 15
|
||||||
cbz cntin, L(nomatch)
|
cbz cntin, L(nomatch)
|
||||||
ld1 {vdata.16b}, [src]
|
ld1 {vdata.16b}, [src]
|
||||||
|
@@ -44,10 +44,6 @@
|
|||||||
|
|
||||||
|
|
||||||
ENTRY (memcmp)
|
ENTRY (memcmp)
|
||||||
PTR_ARG (0)
|
|
||||||
PTR_ARG (1)
|
|
||||||
SIZE_ARG (2)
|
|
||||||
|
|
||||||
cmp limit, 16
|
cmp limit, 16
|
||||||
b.lo L(less16)
|
b.lo L(less16)
|
||||||
ldp data1, data3, [src1]
|
ldp data1, data3, [src1]
|
||||||
|
@@ -70,10 +70,6 @@
|
|||||||
from the end. */
|
from the end. */
|
||||||
|
|
||||||
ENTRY (MEMCPY)
|
ENTRY (MEMCPY)
|
||||||
PTR_ARG (0)
|
|
||||||
PTR_ARG (1)
|
|
||||||
SIZE_ARG (2)
|
|
||||||
|
|
||||||
add srcend, src, count
|
add srcend, src, count
|
||||||
add dstend, dstin, count
|
add dstend, dstin, count
|
||||||
cmp count, 128
|
cmp count, 128
|
||||||
@@ -187,10 +183,6 @@ libc_hidden_builtin_def (MEMCPY)
|
|||||||
|
|
||||||
|
|
||||||
ENTRY (MEMMOVE)
|
ENTRY (MEMMOVE)
|
||||||
PTR_ARG (0)
|
|
||||||
PTR_ARG (1)
|
|
||||||
SIZE_ARG (2)
|
|
||||||
|
|
||||||
add srcend, src, count
|
add srcend, src, count
|
||||||
add dstend, dstin, count
|
add dstend, dstin, count
|
||||||
cmp count, 128
|
cmp count, 128
|
||||||
|
@@ -55,8 +55,6 @@
|
|||||||
exactly which byte matched. */
|
exactly which byte matched. */
|
||||||
|
|
||||||
ENTRY (__memrchr)
|
ENTRY (__memrchr)
|
||||||
PTR_ARG (0)
|
|
||||||
SIZE_ARG (2)
|
|
||||||
add end, srcin, cntin
|
add end, srcin, cntin
|
||||||
sub endm1, end, 1
|
sub endm1, end, 1
|
||||||
bic src, endm1, 15
|
bic src, endm1, 15
|
||||||
|
@@ -39,9 +39,6 @@
|
|||||||
#define dstend2 x5
|
#define dstend2 x5
|
||||||
|
|
||||||
ENTRY (MEMSET)
|
ENTRY (MEMSET)
|
||||||
PTR_ARG (0)
|
|
||||||
SIZE_ARG (2)
|
|
||||||
|
|
||||||
dup v0.16B, valw
|
dup v0.16B, valw
|
||||||
cmp count, 16
|
cmp count, 16
|
||||||
b.lo L(set_small)
|
b.lo L(set_small)
|
||||||
|
@@ -60,9 +60,6 @@
|
|||||||
|
|
||||||
ENTRY (__memchr_nosimd)
|
ENTRY (__memchr_nosimd)
|
||||||
|
|
||||||
PTR_ARG (0)
|
|
||||||
SIZE_ARG (2)
|
|
||||||
|
|
||||||
/* Do not dereference srcin if no bytes to compare. */
|
/* Do not dereference srcin if no bytes to compare. */
|
||||||
cbz cntin, L(none_chr)
|
cbz cntin, L(none_chr)
|
||||||
|
|
||||||
|
@@ -96,10 +96,6 @@
|
|||||||
|
|
||||||
ENTRY (__memcpy_a64fx)
|
ENTRY (__memcpy_a64fx)
|
||||||
|
|
||||||
PTR_ARG (0)
|
|
||||||
PTR_ARG (1)
|
|
||||||
SIZE_ARG (2)
|
|
||||||
|
|
||||||
cntb vlen
|
cntb vlen
|
||||||
cmp n, vlen, lsl 1
|
cmp n, vlen, lsl 1
|
||||||
b.hi L(copy_small)
|
b.hi L(copy_small)
|
||||||
@@ -236,10 +232,6 @@ END (__memcpy_a64fx)
|
|||||||
|
|
||||||
ENTRY_ALIGN (__memmove_a64fx, 4)
|
ENTRY_ALIGN (__memmove_a64fx, 4)
|
||||||
|
|
||||||
PTR_ARG (0)
|
|
||||||
PTR_ARG (1)
|
|
||||||
SIZE_ARG (2)
|
|
||||||
|
|
||||||
/* Fast case for up to 2 vectors. */
|
/* Fast case for up to 2 vectors. */
|
||||||
cntb vlen
|
cntb vlen
|
||||||
cmp n, vlen, lsl 1
|
cmp n, vlen, lsl 1
|
||||||
|
@@ -26,10 +26,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
ENTRY (__memcpy_mops)
|
ENTRY (__memcpy_mops)
|
||||||
PTR_ARG (0)
|
|
||||||
PTR_ARG (1)
|
|
||||||
SIZE_ARG (2)
|
|
||||||
|
|
||||||
mov x3, x0
|
mov x3, x0
|
||||||
.inst 0x19010443 /* cpyfp [x3]!, [x1]!, x2! */
|
.inst 0x19010443 /* cpyfp [x3]!, [x1]!, x2! */
|
||||||
.inst 0x19410443 /* cpyfm [x3]!, [x1]!, x2! */
|
.inst 0x19410443 /* cpyfm [x3]!, [x1]!, x2! */
|
||||||
|
@@ -63,10 +63,6 @@
|
|||||||
|
|
||||||
ENTRY (__memmove_oryon1)
|
ENTRY (__memmove_oryon1)
|
||||||
|
|
||||||
PTR_ARG (0)
|
|
||||||
PTR_ARG (1)
|
|
||||||
SIZE_ARG (2)
|
|
||||||
|
|
||||||
sub tmp1, dstin, src
|
sub tmp1, dstin, src
|
||||||
cmp count, 96
|
cmp count, 96
|
||||||
ccmp tmp1, count, 2, hi
|
ccmp tmp1, count, 2, hi
|
||||||
@@ -77,10 +73,6 @@ END (__memmove_oryon1)
|
|||||||
|
|
||||||
ENTRY (__memcpy_oryon1)
|
ENTRY (__memcpy_oryon1)
|
||||||
|
|
||||||
PTR_ARG (0)
|
|
||||||
PTR_ARG (1)
|
|
||||||
SIZE_ARG (2)
|
|
||||||
|
|
||||||
add srcend, src, count
|
add srcend, src, count
|
||||||
add dstend, dstin, count
|
add dstend, dstin, count
|
||||||
cmp count, 16
|
cmp count, 16
|
||||||
|
@@ -61,10 +61,6 @@
|
|||||||
.arch armv8.2-a+sve
|
.arch armv8.2-a+sve
|
||||||
|
|
||||||
ENTRY (__memcpy_sve)
|
ENTRY (__memcpy_sve)
|
||||||
PTR_ARG (0)
|
|
||||||
PTR_ARG (1)
|
|
||||||
SIZE_ARG (2)
|
|
||||||
|
|
||||||
cmp count, 128
|
cmp count, 128
|
||||||
b.hi L(copy_long)
|
b.hi L(copy_long)
|
||||||
cntb vlen
|
cntb vlen
|
||||||
@@ -144,10 +140,6 @@ END (__memcpy_sve)
|
|||||||
|
|
||||||
|
|
||||||
ENTRY (__memmove_sve)
|
ENTRY (__memmove_sve)
|
||||||
PTR_ARG (0)
|
|
||||||
PTR_ARG (1)
|
|
||||||
SIZE_ARG (2)
|
|
||||||
|
|
||||||
cmp count, 128
|
cmp count, 128
|
||||||
b.hi L(move_long)
|
b.hi L(move_long)
|
||||||
cntb vlen
|
cntb vlen
|
||||||
|
@@ -26,10 +26,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
ENTRY (__memmove_mops)
|
ENTRY (__memmove_mops)
|
||||||
PTR_ARG (0)
|
|
||||||
PTR_ARG (1)
|
|
||||||
SIZE_ARG (2)
|
|
||||||
|
|
||||||
mov x3, x0
|
mov x3, x0
|
||||||
.inst 0x1d010443 /* cpyp [x3]!, [x1]!, x2! */
|
.inst 0x1d010443 /* cpyp [x3]!, [x1]!, x2! */
|
||||||
.inst 0x1d410443 /* cpym [x3]!, [x1]!, x2! */
|
.inst 0x1d410443 /* cpym [x3]!, [x1]!, x2! */
|
||||||
|
@@ -55,8 +55,6 @@
|
|||||||
#define BTI_C
|
#define BTI_C
|
||||||
|
|
||||||
ENTRY (__memset_a64fx)
|
ENTRY (__memset_a64fx)
|
||||||
PTR_ARG (0)
|
|
||||||
SIZE_ARG (2)
|
|
||||||
|
|
||||||
cntb vector_length
|
cntb vector_length
|
||||||
dup z0.b, valw
|
dup z0.b, valw
|
||||||
|
@@ -34,9 +34,6 @@
|
|||||||
|
|
||||||
ENTRY (__memset_emag)
|
ENTRY (__memset_emag)
|
||||||
|
|
||||||
PTR_ARG (0)
|
|
||||||
SIZE_ARG (2)
|
|
||||||
|
|
||||||
bfi valw, valw, 8, 8
|
bfi valw, valw, 8, 8
|
||||||
bfi valw, valw, 16, 16
|
bfi valw, valw, 16, 16
|
||||||
bfi val, val, 32, 32
|
bfi val, val, 32, 32
|
||||||
|
@@ -33,9 +33,6 @@
|
|||||||
|
|
||||||
ENTRY (__memset_kunpeng)
|
ENTRY (__memset_kunpeng)
|
||||||
|
|
||||||
PTR_ARG (0)
|
|
||||||
SIZE_ARG (2)
|
|
||||||
|
|
||||||
dup v0.16B, valw
|
dup v0.16B, valw
|
||||||
add dstend, dstin, count
|
add dstend, dstin, count
|
||||||
|
|
||||||
|
@@ -26,9 +26,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
ENTRY (__memset_mops)
|
ENTRY (__memset_mops)
|
||||||
PTR_ARG (0)
|
|
||||||
SIZE_ARG (2)
|
|
||||||
|
|
||||||
mov x3, x0
|
mov x3, x0
|
||||||
.inst 0x19c10443 /* setp [x3]!, x2!, x1 */
|
.inst 0x19c10443 /* setp [x3]!, x2!, x1 */
|
||||||
.inst 0x19c14443 /* setm [x3]!, x2!, x1 */
|
.inst 0x19c14443 /* setm [x3]!, x2!, x1 */
|
||||||
|
@@ -33,9 +33,6 @@
|
|||||||
|
|
||||||
ENTRY (__memset_oryon1)
|
ENTRY (__memset_oryon1)
|
||||||
|
|
||||||
PTR_ARG (0)
|
|
||||||
SIZE_ARG (2)
|
|
||||||
|
|
||||||
bfi valw, valw, 8, 8
|
bfi valw, valw, 8, 8
|
||||||
bfi valw, valw, 16, 16
|
bfi valw, valw, 16, 16
|
||||||
bfi val, val, 32, 32
|
bfi val, val, 32, 32
|
||||||
|
@@ -87,7 +87,6 @@
|
|||||||
character, return the length, if not, continue in the main loop. */
|
character, return the length, if not, continue in the main loop. */
|
||||||
|
|
||||||
ENTRY (__strlen_asimd)
|
ENTRY (__strlen_asimd)
|
||||||
PTR_ARG (0)
|
|
||||||
and tmp1, srcin, MIN_PAGE_SIZE - 1
|
and tmp1, srcin, MIN_PAGE_SIZE - 1
|
||||||
cmp tmp1, MIN_PAGE_SIZE - 32
|
cmp tmp1, MIN_PAGE_SIZE - 32
|
||||||
b.hi L(page_cross)
|
b.hi L(page_cross)
|
||||||
|
@@ -34,8 +34,6 @@ END (_setjmp)
|
|||||||
libc_hidden_def (_setjmp)
|
libc_hidden_def (_setjmp)
|
||||||
|
|
||||||
ENTRY (__sigsetjmp)
|
ENTRY (__sigsetjmp)
|
||||||
PTR_ARG (0)
|
|
||||||
|
|
||||||
1:
|
1:
|
||||||
stp x19, x20, [x0, #JB_X19<<3]
|
stp x19, x20, [x0, #JB_X19<<3]
|
||||||
stp x21, x22, [x0, #JB_X21<<3]
|
stp x21, x22, [x0, #JB_X21<<3]
|
||||||
|
@@ -52,7 +52,6 @@
|
|||||||
If it is not a multiple of 4, there was no match. */
|
If it is not a multiple of 4, there was no match. */
|
||||||
|
|
||||||
ENTRY (strchr)
|
ENTRY (strchr)
|
||||||
PTR_ARG (0)
|
|
||||||
bic src, srcin, 15
|
bic src, srcin, 15
|
||||||
dup vrepchr.16b, chrin
|
dup vrepchr.16b, chrin
|
||||||
ld1 {vdata.16b}, [src]
|
ld1 {vdata.16b}, [src]
|
||||||
|
@@ -51,7 +51,6 @@
|
|||||||
exactly which byte matched. */
|
exactly which byte matched. */
|
||||||
|
|
||||||
ENTRY (__strchrnul)
|
ENTRY (__strchrnul)
|
||||||
PTR_ARG (0)
|
|
||||||
bic src, srcin, 15
|
bic src, srcin, 15
|
||||||
dup vrepchr.16b, chrin
|
dup vrepchr.16b, chrin
|
||||||
ld1 {vdata.16b}, [src]
|
ld1 {vdata.16b}, [src]
|
||||||
|
@@ -62,8 +62,6 @@
|
|||||||
NUL too in big-endian, byte-reverse the data before the NUL check. */
|
NUL too in big-endian, byte-reverse the data before the NUL check. */
|
||||||
|
|
||||||
ENTRY(strcmp)
|
ENTRY(strcmp)
|
||||||
PTR_ARG (0)
|
|
||||||
PTR_ARG (1)
|
|
||||||
sub off2, src2, src1
|
sub off2, src2, src1
|
||||||
mov zeroones, REP8_01
|
mov zeroones, REP8_01
|
||||||
and tmp, src1, 7
|
and tmp, src1, 7
|
||||||
|
@@ -69,8 +69,6 @@
|
|||||||
exactly which byte matched. */
|
exactly which byte matched. */
|
||||||
|
|
||||||
ENTRY (STRCPY)
|
ENTRY (STRCPY)
|
||||||
PTR_ARG (0)
|
|
||||||
PTR_ARG (1)
|
|
||||||
bic src, srcin, 15
|
bic src, srcin, 15
|
||||||
ld1 {vdata.16b}, [src]
|
ld1 {vdata.16b}, [src]
|
||||||
cmeq vhas_nul.16b, vdata.16b, 0
|
cmeq vhas_nul.16b, vdata.16b, 0
|
||||||
|
@@ -49,7 +49,6 @@
|
|||||||
identifies the first zero byte. */
|
identifies the first zero byte. */
|
||||||
|
|
||||||
ENTRY (STRLEN)
|
ENTRY (STRLEN)
|
||||||
PTR_ARG (0)
|
|
||||||
bic src, srcin, 15
|
bic src, srcin, 15
|
||||||
ld1 {vdata.16b}, [src]
|
ld1 {vdata.16b}, [src]
|
||||||
cmeq vhas_nul.16b, vdata.16b, 0
|
cmeq vhas_nul.16b, vdata.16b, 0
|
||||||
|
@@ -49,8 +49,6 @@
|
|||||||
identifies the first zero byte. */
|
identifies the first zero byte. */
|
||||||
|
|
||||||
ENTRY (__strnlen)
|
ENTRY (__strnlen)
|
||||||
PTR_ARG (0)
|
|
||||||
SIZE_ARG (1)
|
|
||||||
bic src, srcin, 15
|
bic src, srcin, 15
|
||||||
cbz cntin, L(nomatch)
|
cbz cntin, L(nomatch)
|
||||||
ld1 {vdata.16b}, [src]
|
ld1 {vdata.16b}, [src]
|
||||||
|
@@ -55,7 +55,6 @@
|
|||||||
if the relevant byte matched the NUL end of string. */
|
if the relevant byte matched the NUL end of string. */
|
||||||
|
|
||||||
ENTRY (strrchr)
|
ENTRY (strrchr)
|
||||||
PTR_ARG (0)
|
|
||||||
bic src, srcin, 15
|
bic src, srcin, 15
|
||||||
dup vrepchr.16b, chrin
|
dup vrepchr.16b, chrin
|
||||||
movi vrepmask.16b, 0x33
|
movi vrepmask.16b, 0x33
|
||||||
|
@@ -33,12 +33,6 @@
|
|||||||
*/
|
*/
|
||||||
.text
|
.text
|
||||||
ENTRY(__clone)
|
ENTRY(__clone)
|
||||||
PTR_ARG (0)
|
|
||||||
PTR_ARG (1)
|
|
||||||
PTR_ARG (3)
|
|
||||||
PTR_ARG (4)
|
|
||||||
PTR_ARG (5)
|
|
||||||
PTR_ARG (6)
|
|
||||||
/* Save args for the child. */
|
/* Save args for the child. */
|
||||||
mov x10, x0
|
mov x10, x0
|
||||||
mov x11, x2
|
mov x11, x2
|
||||||
|
@@ -36,10 +36,6 @@
|
|||||||
|
|
||||||
.text
|
.text
|
||||||
ENTRY(__clone3)
|
ENTRY(__clone3)
|
||||||
PTR_ARG (0)
|
|
||||||
PTR_ARG (1)
|
|
||||||
PTR_ARG (3)
|
|
||||||
PTR_ARG (4)
|
|
||||||
/* Save args for the child. */
|
/* Save args for the child. */
|
||||||
mov x10, x0 /* cl_args */
|
mov x10, x0 /* cl_args */
|
||||||
mov x11, x2 /* func */
|
mov x11, x2 /* func */
|
||||||
|
@@ -30,7 +30,6 @@
|
|||||||
.text
|
.text
|
||||||
|
|
||||||
ENTRY(__getcontext)
|
ENTRY(__getcontext)
|
||||||
PTR_ARG (0)
|
|
||||||
/* The saved context will return to the getcontext() call point
|
/* The saved context will return to the getcontext() call point
|
||||||
with a return value of 0 */
|
with a return value of 0 */
|
||||||
str xzr, [x0, oX0 + 0 * SZREG]
|
str xzr, [x0, oX0 + 0 * SZREG]
|
||||||
|
@@ -34,7 +34,6 @@
|
|||||||
.text
|
.text
|
||||||
|
|
||||||
ENTRY (__setcontext)
|
ENTRY (__setcontext)
|
||||||
PTR_ARG (0)
|
|
||||||
/* Save a copy of UCP. */
|
/* Save a copy of UCP. */
|
||||||
mov x9, x0
|
mov x9, x0
|
||||||
|
|
||||||
|
@@ -27,7 +27,6 @@
|
|||||||
|
|
||||||
.text
|
.text
|
||||||
ENTRY(__swapcontext)
|
ENTRY(__swapcontext)
|
||||||
PTR_ARG (0)
|
|
||||||
/* Set the value returned when swapcontext() returns in this context.
|
/* Set the value returned when swapcontext() returns in this context.
|
||||||
And set up x1 to become the return address of the caller, so we
|
And set up x1 to become the return address of the caller, so we
|
||||||
can return there with a normal RET instead of an indirect jump. */
|
can return there with a normal RET instead of an indirect jump. */
|
||||||
|
Reference in New Issue
Block a user