IN UINTN LowAddress,\r
IN UINTN HighAddress,\r
IN UINTN Size,\r
- IN UINTN Security\r
+ IN UINTN Security,\r
+ IN UINTN SubregionDisableMask\r
)\r
{\r
UINT32* Region;\r
+ UINT32 RegionAttributes;\r
\r
if (RegionId > TZASCGetNumRegions(TzascBase)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
+ RegionAttributes = TZASC_REGION_ATTR_SECURITY(Security) |\r
+ TZASC_REGION_ATTR_SUBREG_DISABLE(SubregionDisableMask) |\r
+ TZASC_REGION_ATTR_SIZE(Size) |\r
+ TZASC_REGION_ATTR_ENABLE(Enabled);\r
+\r
Region = (UINT32*)((UINTN)TzascBase + TZASC_REGIONS_REG + (RegionId * 0x10));\r
\r
- MmioWrite32((UINTN)(Region), LowAddress&0xFFFF8000);\r
+ MmioWrite32((UINTN)(Region), TZASC_REGION_SETUP_LO_ADDR(LowAddress));\r
MmioWrite32((UINTN)(Region+1), HighAddress);\r
- MmioWrite32((UINTN)(Region+2), ((Security & 0xF) <<28) | ((Size & 0x3F) << 1) | (Enabled & 0x1));\r
+ MmioWrite32((UINTN)(Region+2), RegionAttributes);\r
\r
return EFI_SUCCESS;\r
}\r