Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Arm Trusted Firmware
Commits
8d0a3bb3
Commit
8d0a3bb3
authored
4 years ago
by
Mark Dykes
Committed by
TrustedFirmware Code Review
4 years ago
Browse files
Options
Download
Plain Diff
Merge "Revert "libc/memset: Implement function in assembler"" into integration
parents
a6ab1ae3
f5402ef7
master
v2.5
v2.5-rc1
v2.5-rc0
v2.4
v2.4-rc2
v2.4-rc1
v2.4-rc0
arm_cca_v0.2
arm_cca_v0.1
No related merge requests found
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
lib/libc/aarch32/memset.S
+0
-74
lib/libc/aarch32/memset.S
lib/libc/aarch64/memset.S
+0
-79
lib/libc/aarch64/memset.S
lib/libc/libc.mk
+2
-7
lib/libc/libc.mk
lib/libc/memset.c
+18
-0
lib/libc/memset.c
plat/nvidia/tegra/platform.mk
+2
-2
plat/nvidia/tegra/platform.mk
with
22 additions
and
162 deletions
+22
-162
lib/libc/aarch32/memset.S
deleted
100644 → 0
View file @
a6ab1ae3
/*
*
Copyright
(
c
)
2020
,
Arm
Limited
.
All
rights
reserved
.
*
*
SPDX
-
License
-
Identifier
:
BSD
-
3
-
Clause
*/
#include <asm_macros.S>
.
syntax
unified
.
global
memset
/*
-----------------------------------------------------------------------
*
void
memset
(
void
*
dst
,
int
val
,
size_t
count
)
*
*
Copy
the
value
of
'val'
(
converted
to
an
unsigned
char
)
into
*
each
of
the
first
'count'
characters
of
the
object
pointed
to
by
'dst'
.
*
*
Returns
the
value
of
'dst'
.
*
-----------------------------------------------------------------------
*/
func
memset
cmp
r2
,
#
0
bxeq
lr
/*
return
if
'count'
=
0
*/
mov
r12
,
r0
/*
keep
r0
*/
tst
r0
,
#
3
beq
aligned
/*
4
-
bytes
aligned
*/
/
*
Unaligned
'dst'
*/
unaligned
:
strb
r1
,
[
r12
],
#
1
subs
r2
,
r2
,
#
1
bxeq
lr
/*
return
if
0
*/
tst
r12
,
#
3
bne
unaligned
/*
continue
while
unaligned
*/
/
*
4
-
bytes
aligned
*/
aligned
:
bfi
r1
,
r1
,
#
8
,
#
8
/*
propagate
'val'
*/
bfi
r1
,
r1
,
#
16
,
#
16
mov
r3
,
r1
cmp
r2
,
#
16
blo
less_16
push
{
r4
,
lr
}
mov
r4
,
r1
mov
lr
,
r1
cmp
r2
,
#
32
blo
less_32
write_32
:
stmia
r12
!,
{
r1
,
r3
,
r4
,
lr
}
/*
write
32
bytes
in
a
loop
*/
stmia
r12
!,
{
r1
,
r3
,
r4
,
lr
}
subs
r2
,
r2
,
#
32
popeq
{
r4
,
pc
}
/*
return
if
0
*/
cmp
r2
,
#
32
bhs
write_32
less_32
:
cmp
r2
,
#
16
stmiahs
r12
!,
{
r1
,
r3
,
r4
,
lr
}
/*
write
16
bytes
*/
popeq
{
r4
,
pc
}
/*
return
if
16
*/
pop
{
r4
,
lr
}
less_16
:
lsls
r2
,
r2
,
#
29
/*
C
=
r2
[
3
]
; N = r2[2]; Z = r2[2:0] */
stmiacs
r12
!,
{
r1
,
r3
}
/*
write
8
bytes
*/
bxeq
lr
/*
return
if
8
*/
strmi
r1
,
[
r12
],
#
4
/*
write
4
bytes
*/
lsls
r2
,
r2
,
#
1
/*
N
=
r2
[
1
]
; Z = r2[0] */
strhmi
r1
,
[
r12
],
#
2
/*
write
2
bytes
*/
strbne
r1
,
[
r12
]
/*
write
1
byte
*/
bx
lr
endfunc
memset
This diff is collapsed.
Click to expand it.
lib/libc/aarch64/memset.S
deleted
100644 → 0
View file @
a6ab1ae3
/*
*
Copyright
(
c
)
2020
,
Arm
Limited
.
All
rights
reserved
.
*
*
SPDX
-
License
-
Identifier
:
BSD
-
3
-
Clause
*/
#include <asm_macros.S>
.
global
memset
/*
-----------------------------------------------------------------------
*
void
memset
(
void
*
dst
,
int
val
,
size_t
count
)
*
*
Copy
the
value
of
'val'
(
converted
to
an
unsigned
char
)
into
*
each
of
the
first
'count'
characters
of
the
object
pointed
to
by
'dst'
.
*
*
Returns
the
value
of
'dst'
.
*
-----------------------------------------------------------------------
*/
func
memset
cbz
w2
,
exit
/*
exit
if
'count'
=
0
*/
mov
x3
,
x0
/*
keep
x0
*/
tst
x0
,
#
7
b.eq
aligned
/*
8
-
bytes
aligned
*/
/
*
Unaligned
'dst'
*/
unaligned
:
strb
w1
,
[
x3
],
#
1
subs
w2
,
w2
,
#
1
b.eq
exit
/*
exit
if
0
*/
tst
x3
,
#
7
b.ne
unaligned
/*
continue
while
unaligned
*/
/
*
8
-
bytes
aligned
*/
aligned
:
cbz
x1
,
x1_zero
bfi
w1
,
w1
,
#
8
,
#
8
/*
propagate
'val'
*/
bfi
w1
,
w1
,
#
16
,
#
16
bfi
x1
,
x1
,
#
32
,
#
32
x1_zero
:
ands
w4
,
w2
,
#
~
0x3f
b.eq
less_64
write_64
:
.
rept
4
stp
x1
,
x1
,
[
x3
],
#
16
/*
write
64
bytes
in
a
loop
*/
.
endr
subs
w4
,
w4
,
#
64
b.ne
write_64
ands
w2
,
w2
,
#
0x3f
b.eq
exit
/*
exit
if
0
*/
less_64
:
tbz
w2
,
#
5
,
less_32
/*
<
32
bytes
*/
stp
x1
,
x1
,
[
x3
],
#
16
/*
write
32
bytes
*/
stp
x1
,
x1
,
[
x3
],
#
16
ands
w2
,
w2
,
#
0x1f
b.eq
exit
less_32
:
tbz
w2
,
#
4
,
less_16
/*
<
16
bytes
*/
stp
x1
,
x1
,
[
x3
],
#
16
/*
write
16
bytes
*/
ands
w2
,
w2
,
#
0xf
b.eq
exit
less_16
:
tbz
w2
,
#
3
,
less_8
/*
<
8
bytes
*/
str
x1
,
[
x3
],
#
8
/*
write
8
bytes
*/
ands
w2
,
w2
,
#
7
b.eq
exit
less_8
:
tbz
w2
,
#
2
,
less_4
/*
<
4
bytes
*/
str
w1
,
[
x3
],
#
4
/*
write
4
bytes
*/
ands
w2
,
w2
,
#
3
b.eq
exit
less_4
:
tbz
w2
,
#
1
,
less_2
/*
<
2
bytes
*/
strh
w1
,
[
x3
],
#
2
/*
write
2
bytes
*/
tbz
w2
,
#
0
,
exit
less_2
:
strb
w1
,
[
x3
]
/*
write
1
byte
*/
exit
:
ret
endfunc
memset
This diff is collapsed.
Click to expand it.
lib/libc/libc.mk
View file @
8d0a3bb3
#
# Copyright (c) 2016-20
20
, ARM Limited and Contributors. All rights reserved.
# Copyright (c) 2016-20
19
, ARM Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
...
...
@@ -13,6 +13,7 @@ LIBC_SRCS := $(addprefix lib/libc/, \
memcpy.c
\
memmove.c
\
memrchr.c
\
memset.c
\
printf.c
\
putchar.c
\
puts.c
\
...
...
@@ -27,14 +28,8 @@ LIBC_SRCS := $(addprefix lib/libc/, \
ifeq
(${ARCH},aarch64)
LIBC_SRCS
+=
$(
addprefix
lib/libc/aarch64/,
\
memset.S
\
setjmp.S
)
endif
ifeq
(${ARCH},aarch32)
LIBC_SRCS
+=
$(
addprefix
lib/libc/aarch32/,
\
memset.S
)
endif
INCLUDES
+=
-Iinclude
/lib/libc
\
-Iinclude
/lib/libc/
$(ARCH)
\
This diff is collapsed.
Click to expand it.
lib/libc/memset.c
0 → 100644
View file @
8d0a3bb3
/*
* Copyright (c) 2013-2019, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <stddef.h>
#include <string.h>
void
*
memset
(
void
*
dst
,
int
val
,
size_t
count
)
{
char
*
ptr
=
dst
;
while
(
count
--
)
*
ptr
++
=
val
;
return
dst
;
}
This diff is collapsed.
Click to expand it.
plat/nvidia/tegra/platform.mk
View file @
8d0a3bb3
#
# Copyright (c) 2015-20
20
, ARM Limited and Contributors. All rights reserved.
# Copyright (c) 2015-20
19
, ARM Limited and Contributors. All rights reserved.
# Copyright (c) 2020, NVIDIA Corporation. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
...
...
@@ -69,11 +69,11 @@ TF_CFLAGS += -Wsign-compare -nostdlib
# override with necessary libc files for the Tegra platform
override LIBC_SRCS
:
= $(addprefix lib/libc/
,
\
aarch64/memset.S
\
aarch64/setjmp.S
\
assert.c
\
memcpy.c
\
memmove.c
\
memset.c
\
printf.c
\
putchar.c
\
strlen.c
\
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment
Menu
Projects
Groups
Snippets
Help