| *** 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 |