1*** Settings *** 2Test Setup Create Machine 3*** Variables *** 4${PLAT} SEPARATOR=\n """ 5... cpu: CPU.ARMv8R @ sysbus 6... ${SPACE*4}cpuType: "cortex-r52" 7... ${SPACE*4}genericInterruptController: gic 8... ${SPACE*4}init: 9... ${SPACE*4}${SPACE*4}RegisterTCMRegion sysbus.atcm0 0 10... ${SPACE*4}${SPACE*4}RegisterTCMRegion sysbus.btcm0 1 11... ${SPACE*4}${SPACE*4}RegisterTCMRegion sysbus.ctcm0 2 12... 13... timer: Timers.ARM_GenericTimer @ cpu 14... ${SPACE*4}frequency: 1000000000 15... ${SPACE*4}EL1PhysicalTimerIRQ -> gic#0@30 16... ${SPACE*4}EL1VirtualTimerIRQ -> gic#0@27 17... ${SPACE*4}NonSecureEL2PhysicalTimerIRQ -> gic#0@26 18... 19... gic: IRQControllers.ARM_GenericInterruptController @ { 20... ${SPACE*4}${SPACE*4}sysbus new Bus.BusMultiRegistration { address: 0x6E00000; size: 0x10000; region: \"distributor\" }; 21... ${SPACE*4}${SPACE*4}sysbus new IRQControllers.ArmGicRedistributorRegistration { attachedCPU: cpu; address: 0x6E10000 } 22... ${SPACE*4}} 23... ${SPACE*4}\[0-1] -> cpu@[0-1] 24... ${SPACE*4}supportsTwoSecurityStates: false 25... 26... atcm0: Memory.MappedMemory @ {sysbus new Bus.BusPointRegistration { address: 0x0; cpu: cpu }} 27... ${SPACE*4}size: 0x10000 28... 29... btcm0: Memory.MappedMemory @ {sysbus new Bus.BusPointRegistration { address: 0x20000; cpu: cpu }} 30... ${SPACE*4}size: 0x20000 31... 32... ctcm0: Memory.MappedMemory @ {sysbus new Bus.BusPointRegistration { address: 0x40000; cpu: cpu }} 33... ${SPACE*4}size: 0x40000 34... """ 35 36*** Keywords *** 37Get System Register As Int 38 [Arguments] ${reg_name} 39 ${as_str}= Execute Command cpu GetSystemRegisterValue ${reg_name} 40 ${as_int}= Convert To Integer ${as_str} 41 RETURN ${as_int} 42 43Get Register Field 44 [Arguments] ${int_value} ${start_offset} ${mask} 45 ${field_val}= Evaluate ((${int_value} >> ${start_offset}) & ${mask}) 46 RETURN ${field_val} 47 48Field Should Have Correct Value 49 [Arguments] ${register_name} ${field_offset} ${field_mask} ${expected_value} ${error_message} 50 ${reg_value}= Get System Register As Int ${register_name} 51 ${field_value}= Get Register Field ${reg_value} ${field_offset} ${field_mask} 52 Should Be Equal As Integers ${field_value} ${expected_value} ${error_message} 53 54Create Machine 55 Execute Command mach create 56 Execute Command machine LoadPlatformDescriptionFromString ${PLAT} 57 Execute Command using sysbus 58 59*** Test Cases *** 60# TCM tests 61ID_MMFR0 Register Should Have Correct Value 62 [Template] Field Should Have Correct Value 63 "ID_MMFR0" 16 0b1111 0b0001 ID_MMFR0 TCM bit should be enabled 64 65TCMType Register Should Have Correct Value 66 [Template] Field Should Have Correct Value 67 "TCMTR" 0 0b111 0b111 ABC enabled region bits incorrect 68 "TCMTR" 29 0b1111 0b100 TCM bits incorrect 69 70IMP_.TCMREGIONR Should Have Correct Value 71 [Template] Field Should Have Correct Value 72 "IMP_ATCMREGIONR" 2 0b11111 0b00111 TCM A region size mismatch 73 "IMP_ATCMREGIONR" 0 0xFFFFF000 0x0 TCM A region base address mismatch 74 "IMP_BTCMREGIONR" 2 0b11111 0b01000 TCM B region size mismatch 75 "IMP_BTCMREGIONR" 0 0xFFFFF000 0x20000 TCM B region base address mismatch 76 "IMP_CTCMREGIONR" 2 0b11111 0b01001 TCM C region size mismatch 77 "IMP_CTCMREGIONR" 0 0xFFFFF000 0x40000 TCM C region base address mismatch 78