Skip to content
GitLab
Menu
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
Aug 21, 2020
by
Mark Dykes
Committed by
TrustedFirmware Code Review
Aug 21, 2020
Browse files
Merge "Revert "libc/memset: Implement function in assembler"" into integration
parents
a6ab1ae3
f5402ef7
Changes
5
Hide whitespace changes
Inline
Side-by-side
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
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
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)
\
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
;
}
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
\
...
...
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