[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 06/11] tests/qtest/boot-serial-test: Initialize PL011 Control regi
From: |
Peter Maydell |
Subject: |
[PULL 06/11] tests/qtest/boot-serial-test: Initialize PL011 Control register |
Date: |
Mon, 13 Jan 2025 13:54:03 +0000 |
From: Philippe Mathieu-Daudé <philmd@linaro.org>
The tests using the PL011 UART of the virt and raspi machines
weren't properly enabling the UART and its transmitter previous
to sending characters. Follow the PL011 manual initialization
recommendation by setting the proper bits of the control register.
Update the ASM code prefixing:
*UART_CTRL = UART_ENABLE | TX_ENABLE;
to:
while (true) {
*UART_DATA = 'T';
}
Note, since commit 51b61dd4d56 ("hw/char/pl011: Warn when using
disabled transmitter") incomplete PL011 initialization can be
logged using the '-d guest_errors' command line option.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
tests/qtest/boot-serial-test.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/tests/qtest/boot-serial-test.c b/tests/qtest/boot-serial-test.c
index bcfa504826c..ffa9e780ad6 100644
--- a/tests/qtest/boot-serial-test.c
+++ b/tests/qtest/boot-serial-test.c
@@ -70,15 +70,20 @@ static const uint8_t kernel_plml605[] = {
};
static const uint8_t bios_raspi2[] = {
- 0x08, 0x30, 0x9f, 0xe5, /* ldr r3, [pc, #8]
Get &UART0 */
+ 0x10, 0x30, 0x9f, 0xe5, /* ldr r3, [pc, #16]
Get &UART0 */
+ 0x10, 0x20, 0x9f, 0xe5, /* ldr r2, [pc, #16]
Get &CR */
+ 0xb0, 0x23, 0xc3, 0xe1, /* strh r2, [r3, #48]
Set CR */
0x54, 0x20, 0xa0, 0xe3, /* mov r2, #'T' */
0x00, 0x20, 0xc3, 0xe5, /* loop: strb r2, [r3]
*TXDAT = 'T' */
0xff, 0xff, 0xff, 0xea, /* b -4
(loop) */
0x00, 0x10, 0x20, 0x3f, /* UART0: 0x3f201000 */
+ 0x01, 0x01, 0x00, 0x00, /* CR: 0x101 = UARTEN|TXE */
};
static const uint8_t kernel_aarch64[] = {
0x02, 0x20, 0xa1, 0xd2, /* mov x2, #0x9000000
Load UART0 */
+ 0x21, 0x20, 0x80, 0x52, /* mov w1, 0x101
CR = UARTEN|TXE */
+ 0x41, 0x60, 0x00, 0x79, /* strh w1, [x2, #48]
Set CR */
0x81, 0x0a, 0x80, 0x52, /* mov w1, #'T' */
0x41, 0x00, 0x00, 0x39, /* loop: strb w1, [x2]
*TXDAT = 'T' */
0xff, 0xff, 0xff, 0x17, /* b -4
(loop) */
--
2.34.1
- [PULL 00/11] target-arm queue, Peter Maydell, 2025/01/13
- [PULL 04/11] tests/qtest/boot-serial-test: Reduce for() loop in PL011 tests, Peter Maydell, 2025/01/13
- [PULL 01/11] hw/arm_sysctl: fix extracting 31th bit of val, Peter Maydell, 2025/01/13
- [PULL 08/11] target/arm: add new property to select pauth-qarma5, Peter Maydell, 2025/01/13
- [PULL 05/11] tests/qtest/boot-serial-test: Reorder pair of instructions in PL011 test, Peter Maydell, 2025/01/13
- [PULL 02/11] hw/misc: cast rpm to uint64_t, Peter Maydell, 2025/01/13
- [PULL 06/11] tests/qtest/boot-serial-test: Initialize PL011 Control register,
Peter Maydell <=
- [PULL 10/11] target/arm: change default pauth algorithm to impdef, Peter Maydell, 2025/01/13
- [PULL 03/11] tests/qtest/boot-serial-test: Improve ASM comments of PL011 tests, Peter Maydell, 2025/01/13
- [PULL 11/11] docs/system/arm/virt: mention specific migration information, Peter Maydell, 2025/01/13
- [PULL 09/11] tests/tcg/aarch64: force qarma5 for pauth-3 test, Peter Maydell, 2025/01/13
- [PULL 07/11] target/arm: Move minor arithmetic helpers out of helper.c, Peter Maydell, 2025/01/13
- Re: [PULL 00/11] target-arm queue, Stefan Hajnoczi, 2025/01/13