blob: e65f7e28c17c07d8b309be607bdf053aaac32565 [file] [log] [blame]
*** Variables ***
${SCRIPT} ${CURDIR}/../../scripts/single-node/leon3_zephyr.resc
${UART} sysbus.uart
${PROMPT} uart:~$
*** Keywords ***
Prepare Machine
Execute Script ${SCRIPT}
Create Terminal Tester ${UART}
ASR18 Should Be Equal
[Arguments] ${expected}
Register Should Be Equal 39 ${expected}
*** Test Cases ***
Should Boot Zephyr
[Documentation] Boots Zephyr on the Leon3 platform.
[Tags] zephyr uart
Prepare Machine
Start Emulation
Wait For Prompt On Uart ${PROMPT}
Provides booted-zephyr
Should Print Version
[Documentation] Tests shell responsiveness in Zephyr on the Leon3 platform.
[Tags] zephyr uart
Requires booted-zephyr
Write Line To Uart version
Wait For Line On Uart Zephyr version 2.6.99
Should Handle WRASR
Prepare Machine
# Note that these writes to memory are in the emulation target's endianness (which is big-endian here), NOT the host's.
# For example, after `sysbus WriteDoubleWord 0x00000000 0x03100000`, the memory content as a byte array is `[0x03, 0x10, 0x00, 0x00]`.
# sethi %hi(0xa5a5a400), %g1
Execute Command sysbus WriteDoubleWord 0x40000000 0x03296969
# or %g1, 0x1a5, %g1
Execute Command sysbus WriteDoubleWord 0x40000004 0x821061a5
# orn %g0, %g0, %g2
Execute Command sysbus WriteDoubleWord 0x40000008 0x84300000
# wr 0x1555, %asr18
Execute Command sysbus WriteDoubleWord 0x4000000c 0xa5803555
# wr %g1, %asr18
Execute Command sysbus WriteDoubleWord 0x40000010 0xa5800001
# wr %g2, 0x1555, %asr18
Execute Command sysbus WriteDoubleWord 0x40000014 0xa580b555
# wr %g1, %g2, %asr18
Execute Command sysbus WriteDoubleWord 0x40000018 0xa5804002
# wr %g2, %asr15
Execute Command sysbus WriteDoubleWord 0x4000001c 0x9f800002
# nop
Execute Command sysbus WriteDoubleWord 0x40000020 0x01000000
# ba .
Execute Command sysbus WriteDoubleWord 0x40000024 0x10800000
# nop
Execute Command sysbus WriteDoubleWord 0x40000028 0x01000000
PC Should Be Equal 0x40000000
Execute Command cpu Step 3
PC Should Be Equal 0x4000000c
ASR18 Should Be Equal 0x0
Execute Command cpu Step
PC Should Be Equal 0x40000010
ASR18 Should Be Equal 0xfffff555
Execute Command cpu Step
PC Should Be Equal 0x40000014
ASR18 Should Be Equal 0xa5a5a5a5
Execute Command cpu Step
PC Should Be Equal 0x40000018
ASR18 Should Be Equal 0xaaa
Execute Command cpu Step
PC Should Be Equal 0x4000001c
ASR18 Should Be Equal 0x5a5a5a5a
Execute Command cpu Step
# If we get here, we didn't crash on the write to ASR15.
PC Should Be Equal 0x40000020
ASR18 Should Be Equal 0x5a5a5a5a