Skip to content

Commit

Permalink
hw/misc/iotkit-sysctl: Implement SSE-200 and SSE-300 PID register values
Browse files Browse the repository at this point in the history
The SSE-200 and SSE-300 have different PID register values from the
IoTKit for the sysctl register block.  We incorrectly implemented the
SSE-200 with the same PID values as IoTKit.  Fix the SSE-200 bug and
report these register values for SSE-300.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20210219144617.4782-19-peter.maydell@linaro.org
  • Loading branch information
pm215 committed Mar 8, 2021
1 parent c5ffe6c commit 6069bbc
Showing 1 changed file with 19 additions and 2 deletions.
21 changes: 19 additions & 2 deletions hw/misc/iotkit-sysctl.c
Expand Up @@ -75,12 +75,19 @@ REG32(CID2, 0xff8)
REG32(CID3, 0xffc)

/* PID/CID values */
static const int sysctl_id[] = {
static const int iotkit_sysctl_id[] = {
0x04, 0x00, 0x00, 0x00, /* PID4..PID7 */
0x54, 0xb8, 0x0b, 0x00, /* PID0..PID3 */
0x0d, 0xf0, 0x05, 0xb1, /* CID0..CID3 */
};

/* Also used by the SSE300 */
static const int sse200_sysctl_id[] = {
0x04, 0x00, 0x00, 0x00, /* PID4..PID7 */
0x54, 0xb8, 0x1b, 0x00, /* PID0..PID3 */
0x0d, 0xf0, 0x05, 0xb1, /* CID0..CID3 */
};

/*
* Set the initial secure vector table offset address for the core.
* This will take effect when the CPU next resets.
Expand Down Expand Up @@ -328,7 +335,17 @@ static uint64_t iotkit_sysctl_read(void *opaque, hwaddr offset,
}
break;
case A_PID4 ... A_CID3:
r = sysctl_id[(offset - A_PID4) / 4];
switch (s->sse_version) {
case ARMSSE_IOTKIT:
r = iotkit_sysctl_id[(offset - A_PID4) / 4];
break;
case ARMSSE_SSE200:
case ARMSSE_SSE300:
r = sse200_sysctl_id[(offset - A_PID4) / 4];
break;
default:
g_assert_not_reached();
}
break;
case A_SECDBGSET:
case A_SECDBGCLR:
Expand Down

0 comments on commit 6069bbc

Please sign in to comment.