1*** Variables ***
2${UART}                       sysbus.uart
3${URI}                        @https://dl.antmicro.com/projects/renode
4
5*** Keywords ***
6Create Machine
7    [Arguments]  ${elf}
8
9    Execute Command          mach create
10    Execute Command          machine LoadPlatformDescription @platforms/cpus/sifive-fe310.repl
11    Execute Command          sysbus LoadELF ${URI}/${elf}
12
13Pause At
14    [Arguments]  ${address}  ${continues}=0
15
16    Execute Command           cpu AddHook ${address} "cpu.Pause()"
17    Start Emulation
18
19    FOR  ${i}  IN RANGE  0  ${continues}
20        Wait For Pause        5
21        Execute Command       cpu Step 1
22        Execute Command       cpu ExecutionMode Continuous
23    END
24
25    Wait For Pause            5
26
27*** Test Cases ***
28Translate Address Should Fail
29          # Address values are binary dependant
30          Create Machine            hifive1_revb--zephyr-shared_mem.elf-s_873884-6c6aac93b93d8faf8d747eeaaa6fa1744a1dc1bb
31
32          Execute Command           using sysbus
33
34          # This pauses at calling entry in z_thread_entry @ lib/os/thread_entry.c for enc thread
35          Pause At                  0x20011be4  continues=2
36
37  ${pa}=  Execute Command           cpu TranslateAddress 0x80000364 InstructionFetch    # would cause page fault
38          Should Contain            ${pa}       0xFFFFFFFFFFFFFFFF
39
40          Provides                  unmapped_address
41
42Translate Address Should Be Able To Map Address
43          Requires                  unmapped_address
44
45  ${pa}=  Execute Command           cpu TranslateAddress 0x800100000 InstructionFetch   # would not cause page fault
46          Should Contain            ${pa}       0x0000000000100000
47
48