blob: 94da0496b58402be06a1e7330d86fc8140d992ef [file] [log] [blame]
********************************** Variables **********************************
${URI} @https://dl.antmicro.com/projects/renode
${MEM_PROTECT_BINARY} ${URI}/zephyr_tests_kernel_mem_protect_mem_protect_fvp_baser_aemv8r_aarch32.elf-s_1588116-5e9567fdd71944d758098fb6078c399703fb8135
${PROTECTION_BINARY} ${URI}/zephyr_tests_kernel_mem_protect_protection_fvp_baser_aemv8r_aarch32.elf-s_523044-d3f20216e74913fa258d21404c83282f27d7749b
${STACKPROT_BINARY} ${URI}/zephyr_tests_kernel_mem_protect_stackprot_fvp_baser_aemv8r_aarch32.elf-s_1305768-fc659d9da17b27a39236a6fbb914fdad83103409
${USERSPACE_BINARY} ${URI}/zephyr_tests_kernel_mem_protect_userspace_fvp_baser_aemv8r_aarch32.elf-s_1418592-34442d722b26aa21e9c62b9dc31db2fba9871837
${UART} sysbus.uart0
${NON_DEFAULT_REGION_COUNT} 24
*********************************** Keywords **********************************
Initialize Emulation
[Arguments] ${binary} ${region_count}=None
Execute Command mach create
IF ${region_count} != None
${mpu_regions_string}= Catenate SEPARATOR=\n
... """
... using "platforms/cpus/cortex-r52.repl"
...
... cpu:
... ${SPACE*4}mpuRegionsCount: ${region_count}
... """
Execute Command machine LoadPlatformDescriptionFromString ${mpu_regions_string}
ELSE
Execute Command machine LoadPlatformDescription @platforms/cpus/cortex-r52.repl
END
Execute Command sysbus LoadELF ${binary}
Set Default Uart Timeout 1
Create Terminal Tester ${UART}
Run Test
[Arguments] ${bin} ${region_count}=None
Initialize Emulation ${bin} ${region_count}
Wait For Line On Uart TESTSUITE [a-z_]+ succeeded treatAsRegex=true
Expect Mpu Regions Count
[Arguments] ${expected_count}
${reg_value}= Execute Command sysbus.cpu GetSystemRegisterValue "MPUIR"
${regions_count}= Evaluate int(${reg_value}) >> 8
Should Be Equal As Integers ${regions_count} ${expected_count}
********************************** Test Cases *********************************
Should have correct default configuration
Initialize Emulation ${PROTECTION_BINARY}
Expect Mpu Regions Count 16
Should pass the protection test
Run Test ${PROTECTION_BINARY}
Should pass the mem_protect test
Run Test ${MEM_PROTECT_BINARY}
Should pass the userspace test
Run Test ${USERSPACE_BINARY}
Should pass the stackprotect test
Run Test ${STACKPROT_BINARY}
# For Cortex-R Zephyr retrieves count of MPU regions in runtime.
# The same binary can be used for various regions counts.
Should respect the configured number of regions with more regions
Initialize Emulation ${PROTECTION_BINARY} ${NON_DEFAULT_REGION_COUNT}
Expect Mpu Regions Count ${NON_DEFAULT_REGION_COUNT}
Should pass the protection test with more regions
Run Test ${PROTECTION_BINARY} ${NON_DEFAULT_REGION_COUNT}
Should pass the mem_protect test with more regions
Run Test ${MEM_PROTECT_BINARY} ${NON_DEFAULT_REGION_COUNT}
Should pass the userspace test with more regions
Run Test ${USERSPACE_BINARY} ${NON_DEFAULT_REGION_COUNT}
Should pass the stackprotect test with more regions
Run Test ${STACKPROT_BINARY} ${NON_DEFAULT_REGION_COUNT}