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
80a624d1
Commit
80a624d1
authored
5 years ago
by
Paul Beesley
Committed by
TrustedFirmware Code Review
5 years ago
Browse files
Options
Download
Plain Diff
Merge "FVP: Fix plat_set_nv_ctr() function" into integration
parents
dfbf05e0
bd363d35
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
plat/arm/board/fvp/fvp_trusted_boot.c
+16
-14
plat/arm/board/fvp/fvp_trusted_boot.c
with
16 additions
and
14 deletions
+16
-14
plat/arm/board/fvp/fvp_trusted_boot.c
View file @
80a624d1
/*
* Copyright (c) 2016-201
8
, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2016-201
9
, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
...
...
@@ -8,39 +8,41 @@
#include <stdint.h>
#include <string.h>
#include <lib/mmio.h>
#include <plat/common/platform.h>
#include <platform_def.h>
#include <tools_share/tbbr_oid.h>
/*
* Store a new non-volatile counter value.
On some FVP versions, the
*
non-volatile counters are RO. On these versions we expect the values in the
*
certificates to always match the RO values so that this function is never
*
called
.
* Store a new non-volatile counter value.
*
*
On some FVP versions, the non-volatile counters are read-only so this
*
function will always fail
.
*
* Return: 0 = success, Otherwise = error
*/
int
plat_set_nv_ctr
(
void
*
cookie
,
unsigned
int
nv_ctr
)
{
const
char
*
oid
;
uint
32
_t
*
nv_ctr_addr
;
uint
ptr
_t
nv_ctr_addr
;
assert
(
cookie
!=
NULL
);
oid
=
(
const
char
*
)
cookie
;
if
(
strcmp
(
oid
,
TRUSTED_FW_NVCOUNTER_OID
)
==
0
)
{
nv_ctr_addr
=
(
uint32_t
*
)
TFW_NVCTR_BASE
;
nv_ctr_addr
=
TFW_NVCTR_BASE
;
}
else
if
(
strcmp
(
oid
,
NON_TRUSTED_FW_NVCOUNTER_OID
)
==
0
)
{
nv_ctr_addr
=
(
uint32_t
*
)
NTFW_CTR_BASE
;
nv_ctr_addr
=
NTFW_CTR_BASE
;
}
else
{
return
1
;
}
*
(
unsigned
int
*
)
nv_ctr_addr
=
nv_ctr
;
/* Verify that the current value is the one we just wrote. */
if
(
nv_ctr
!=
(
unsigned
int
)(
*
nv_ctr_addr
))
return
1
;
mmio_write_32
(
nv_ctr_addr
,
nv_ctr
);
return
0
;
/*
* If the FVP models a locked counter then its value cannot be updated
* and the above write operation has been silently ignored.
*/
return
(
mmio_read_32
(
nv_ctr_addr
)
==
nv_ctr
)
?
0
:
1
;
}
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