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
ccf39111
Commit
ccf39111
authored
Jun 26, 2017
by
davidcunado-arm
Committed by
GitHub
Jun 26, 2017
Browse files
Merge pull request #994 from soby-mathew/sm/fwu_fix
Fix FWU and cache helper optimization
parents
73e11b43
3ec5204c
Changes
3
Hide whitespace changes
Inline
Side-by-side
bl1/bl1_fwu.c
View file @
ccf39111
...
...
@@ -176,18 +176,19 @@ static int bl1_fwu_image_check_overlaps(int image_id)
checked_image_base
=
checked_info
->
image_base
;
checked_image_end
=
checked_image_base
+
checked_info
->
image_size
-
1
;
/* No need to check for over
lap
s, it's done in bl1_fwu_image_copy(). */
/* No need to check for over
flow
s, it's done in bl1_fwu_image_copy(). */
for
(
int
i
=
0
;
i
<
FWU_MAX_SIMULTANEOUS_IMAGES
;
i
++
)
{
/* Don't check image against itself. */
if
(
bl1_fwu_loaded_ids
[
i
]
==
image_id
)
/* Skip INVALID_IMAGE_IDs and don't check image against itself */
if
((
bl1_fwu_loaded_ids
[
i
]
==
INVALID_IMAGE_ID
)
||
(
bl1_fwu_loaded_ids
[
i
]
==
image_id
))
continue
;
image_desc
=
bl1_plat_get_image_desc
(
bl1_fwu_loaded_ids
[
i
]);
/* Only check images that are loaded or being loaded. */
assert
(
image_desc
->
state
!=
IMAGE_STATE_RESET
);
assert
(
image_desc
&&
image_desc
->
state
!=
IMAGE_STATE_RESET
);
info
=
&
image_desc
->
image_info
;
...
...
@@ -704,11 +705,15 @@ static int bl1_fwu_image_reset(unsigned int image_id, unsigned int flags)
return
-
EPERM
;
}
/* Clear the memory.*/
zero_normalmem
((
void
*
)
image_desc
->
image_info
.
image_base
,
image_desc
->
copied_size
);
flush_dcache_range
(
image_desc
->
image_info
.
image_base
,
image_desc
->
copied_size
);
if
(
image_desc
->
copied_size
)
{
/* Clear the memory if the image is copied */
assert
(
GET_SECURITY_STATE
(
image_desc
->
ep_info
.
h
.
attr
)
==
SECURE
);
zero_normalmem
((
void
*
)
image_desc
->
image_info
.
image_base
,
image_desc
->
copied_size
);
flush_dcache_range
(
image_desc
->
image_info
.
image_base
,
image_desc
->
copied_size
);
}
/* Reset status variables */
image_desc
->
copied_size
=
0
;
...
...
lib/aarch32/cache_helpers.S
View file @
ccf39111
...
...
@@ -20,6 +20,9 @@
*
This
macro
can
be
used
for
implementing
various
data
cache
operations
`
op
`
*/
.
macro
do_dcache_maintenance_by_mva
op
,
coproc
,
opc1
,
CRn
,
CRm
,
opc2
/
*
Exit
early
if
size
is
zero
*/
cmp
r1
,
#
0
beq
exit_loop_
\
op
dcache_line_size
r2
,
r3
add
r1
,
r0
,
r1
sub
r3
,
r2
,
#
1
...
...
@@ -30,6 +33,7 @@ loop_\op:
cmp
r0
,
r1
blo
loop_
\
op
dsb
sy
exit_loop_
\
op
:
bx
lr
.
endm
...
...
lib/aarch64/cache_helpers.S
View file @
ccf39111
...
...
@@ -20,6 +20,8 @@
*
This
macro
can
be
used
for
implementing
various
data
cache
operations
`
op
`
*/
.
macro
do_dcache_maintenance_by_mva
op
/
*
Exit
early
if
size
is
zero
*/
cbz
x1
,
exit_loop_
\
op
dcache_line_size
x2
,
x3
add
x1
,
x0
,
x1
sub
x3
,
x2
,
#
1
...
...
@@ -30,6 +32,7 @@ loop_\op:
cmp
x0
,
x1
b.lo
loop_
\
op
dsb
sy
exit_loop_
\
op
:
ret
.
endm
/
*
------------------------------------------
...
...
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