blob: 28377d7cb232e56491485b929f23b2e44471da1c [file] [log] [blame]
*** Variables ***
${UART} sysbus.cpu.uartSemihosting
*** Keywords ***
Create Machine
Execute Command using sysbus
Execute Command mach create
Execute Command machine LoadPlatformDescription @platforms/cpus/xtensa-sample-controller.repl
Load Opcodes To Memory
# MOVI at0, 0x400
Execute Command sysbus WriteDoubleWord 0x00 0x0000A402
# L32I at1, at0, 0x0
Execute Command sysbus WriteDoubleWord 0x03 0x00002012
# L32I at2, at0, 0x1 (load from at0 + 4)
Execute Command sysbus WriteDoubleWord 0x06 0x00012022
# BEQZ at2, 0x12
Execute Command sysbus WriteDoubleWord 0x09 0x00005216
# QUOU at3, at1, at2 (integer division)
Execute Command sysbus WriteDoubleWord 0x0c 0x00C23120
# J 0x15
Execute Command sysbus WriteDoubleWord 0x0f 0x00000086
# MOVI at3, 0x0
Execute Command sysbus WriteDoubleWord 0x12 0x0000A032
# J 0x15
Execute Command sysbus WriteDoubleWord 0x15 0xFFFFFF06
*** Test Cases ***
Test Division
${NUMERATOR}= Set Variable 0x10
${DENOMINATOR}= Set Variable 0x02
${EXPECTED_RES}= Evaluate str(0 if ${DENOMINATOR} == 0 else ${NUMERATOR} // ${DENOMINATOR})
Create Machine
Execute Command machine LoadPlatformDescriptionFromString 'opmem: Memory.MappedMemory @ sysbus 0x0 { size: 0x30000 }'
Execute Command cpu PC 0x0
Load Opcodes To Memory
# Load operands of the operation
# in this example it will calculate:
# 0x10 / 0x02
Execute Command sysbus WriteDoubleWord 0x400 ${NUMERATOR}
Execute Command sysbus WriteDoubleWord 0x404 ${DENOMINATOR}
Execute Command cpu Step
PC Should Be Equal 0x3
Register Should Be Equal 1 0x400
Execute Command cpu Step
PC Should Be Equal 0x6
Register Should Be Equal 2 ${NUMERATOR}
Execute Command cpu Step
PC Should Be Equal 0x9
Register Should Be Equal 3 ${DENOMINATOR}
Execute Command cpu Step 3
PC Should Be Equal 0x15
Register Should Be Equal 4 ${EXPECTED_RES}
Test Zephyr hello_world sample
Create Machine
Execute Command sysbus LoadELF @https://dl.antmicro.com/projects/renode/xtensa-sample-controller-zephyr-hello-world.elf-s_293544-4be60f8a3891e70c30e1e8a471df4ad12ab08144
Execute Command cpu PC 0x50000000
Create Terminal Tester ${UART}
Start Emulation
Wait For Line On Uart Booting Zephyr OS
Wait For Line On Uart Hello World! qemu_xtensa