1*** Keywords *** 2Prepare Machine 3 Execute Command using sysbus 4 Execute Command mach create "ARM" 5 6 Execute Command machine LoadPlatformDescriptionFromString "rom: Memory.MappedMemory @ sysbus 0x0 { size: 0x1000 }" 7 Execute Command machine LoadPlatformDescriptionFromString "cpu: CPU.ARMv7A @ sysbus { cpuType: \\"cortex-a9\\" }" 8 9 Execute Command cpu PC 0x0 10 11Thumb State Should Be Equal 12 [Arguments] ${state} 13 ${cpsr}= Execute Command cpu GetRegister 25 14 ${t}= Evaluate bool(${cpsr.strip()} & (1<<5)) 15 Should Be Equal As Strings ${t} ${state} 16 17Load Program 18 # nop (ARM) 19 Execute Command sysbus WriteDoubleWord 0x00000000 0xe1a00000 20 # blx 0xc 21 Execute Command sysbus WriteDoubleWord 0x00000004 0xfa000000 22 # nop (ARM) 23 Execute Command sysbus WriteDoubleWord 0x00000008 0xe1a00000 24 # 2x nop (Thumb) 25 Execute Command sysbus WriteDoubleWord 0x0000000c 0x46c046c0 26 # nop; bx lr (Thumb) 27 Execute Command sysbus WriteDoubleWord 0x00000010 0x477046c0 28 29*** Test Cases *** 30Should Expose Thumb State In CPSR 31 Prepare Machine 32 Load Program 33 34 PC Should Be Equal 0x00000000 35 Thumb State Should Be Equal False 36 37 Execute Command cpu Step 1 38 PC Should Be Equal 0x00000004 39 Thumb State Should Be Equal False 40 41 Execute Command cpu Step 1 42 PC Should Be Equal 0x0000000c 43 Thumb State Should Be Equal True 44 45 Execute Command cpu Step 1 46 PC Should Be Equal 0x0000000e 47 Thumb State Should Be Equal True 48 49 Execute Command cpu Step 1 50 PC Should Be Equal 0x00000010 51 Thumb State Should Be Equal True 52 53 Execute Command cpu Step 1 54 PC Should Be Equal 0x000000012 55 Thumb State Should Be Equal True 56 57 Execute Command cpu Step 1 58 PC Should Be Equal 0x00000008 59 Thumb State Should Be Equal False 60