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
80a624d1
Commit
80a624d1
authored
Sep 25, 2019
by
Paul Beesley
Committed by
TrustedFirmware Code Review
Sep 25, 2019
Browse files
Merge "FVP: Fix plat_set_nv_ctr() function" into integration
parents
dfbf05e0
bd363d35
Changes
1
Hide whitespace changes
Inline
Side-by-side
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
;
}
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