Secure Monitor: Difference between revisions
Line 159: | Line 159: | ||
| 0xC3000006 || [[#Panic]] || W1=panic_color, X2,X3,X4,X5,X6,X7=0 || X0=result | | 0xC3000006 || [[#Panic]] || W1=panic_color, X2,X3,X4,X5,X6,X7=0 || X0=result | ||
|- | |- | ||
| 0xC3000007 || [2.0.0+] ProtectKernelRegion || X1= | | 0xC3000007 || [2.0.0+] [[#ProtectKernelRegion]] || X1=carveout_index, X2=region_phys_addr, X3=region_size, X4,X5,X6,X7=0 || X0=result | ||
|- | |- | ||
| 0xC3000008 || [2.0.0+] ReadWriteRegister || X1=reg_addr, W2=rw_mask, W3=in_val, X4,X5,X6,X7=0 || X0=result, W1=out_val | | 0xC3000008 || [2.0.0+] [[#ReadWriteRegister]] || X1=reg_addr, W2=rw_mask, W3=in_val, X4,X5,X6,X7=0 || X0=result, W1=out_val | ||
|} | |} | ||
Line 187: | Line 187: | ||
The kernel always calls this with '''panic_color''' set to 0xF00. | The kernel always calls this with '''panic_color''' set to 0xF00. | ||
=== ProtectKernelRegion === | |||
Configures memory controller carveout regions. | |||
If '''carveout_index''' is 0, '''region_phys_addr''' and '''region_size''' are used to configure '''MC_SECURITY_CARVEOUT4'''. | |||
If '''carveout_index''' is 1, '''region_phys_addr''' and '''region_size''' are used to configure '''MC_SECURITY_CARVEOUT5'''. | |||
Any other '''carveout_index''' values are invalid. | |||
The kernel calls this with '''carveout_index''' set to 0, '''region_phys_addr''' set to 0x80060000 and '''region_size''' set to a dynamically calculated size which covers all the kernel and built-in sysmodules' DRAM regions. | |||
=== ReadWriteRegister === | |||
Relays [[SVC#svcReadWriteRegister|svcReadWriteRegister]] to the Secure Monitor. | |||
= Errors = | = Errors = |