@@ -794,6 +794,10 @@ def _init_hprot() -> None:
794794 LOG .debug ("%s implemented HPROT=%x HNONSEC=%x" , self .short_description , self ._impl_hprot ,
795795 self ._impl_hnonsec )
796796
797+ if (self ._flags & AP_SPROT ):
798+ if (original_csw & CSW_SDEVICEEN ) == 0 :
799+ self ._hnonsec = NONSECURE
800+
797801 # Update current HPROT and HNONSEC, and the current base CSW value.
798802 self .hprot = self ._hprot & self ._impl_hprot
799803 self .hnonsec = self ._hnonsec & self ._impl_hnonsec
@@ -1361,6 +1365,7 @@ def find_components(self) -> None:
13611365AP_ALL_TX_SZ = 0x2 # The AP is known to support 8-, 16-, and 32-bit transfers, *unless* Large Data is implemented.
13621366AP_MSTRTYPE = 0x4 # The AP is known to support the MSTRTYPE field.
13631367AP_DBGSWEN = 0x8 # The AP is known to support the DBGSWEN flag.
1368+ AP_SPROT = 0x10 # The AP is known to support the SPROT field.
13641369
13651370## Map from AP IDR fields to AccessPort subclass.
13661371#
@@ -1386,20 +1391,20 @@ def find_components(self) -> None:
13861391# |JEP106 |Class |Var|Type |Name |Class
13871392 (AP_JEP106_ARM , AP_CLASS_JTAG_AP , 0 , 0 ): ("JTAG-AP" , AccessPort , 0 ),
13881393 (AP_JEP106_ARM , AP_CLASS_COM_AP , 0 , 0 ): ("SDC-600" , AccessPort , 0 ),
1389- (AP_JEP106_ARM , AP_CLASS_MEM_AP , 0 , AP_TYPE_AHB ): ("AHB-AP" , AHB_AP , AP_ALL_TX_SZ ),
1394+ (AP_JEP106_ARM , AP_CLASS_MEM_AP , 0 , AP_TYPE_AHB ): ("AHB-AP" , AHB_AP , AP_ALL_TX_SZ | AP_SPROT ),
13901395 (AP_JEP106_ARM , AP_CLASS_MEM_AP , 1 , AP_TYPE_AHB ): ("AHB-AP" , AHB_AP , AP_ALL_TX_SZ | AP_4K_WRAP | AP_MSTRTYPE ),
13911396 (AP_JEP106_ARM , AP_CLASS_MEM_AP , 2 , AP_TYPE_AHB ): ("AHB-AP" , AHB_AP , AP_ALL_TX_SZ ),
13921397 (AP_JEP106_ARM , AP_CLASS_MEM_AP , 3 , AP_TYPE_AHB ): ("AHB-AP" , AHB_AP , AP_ALL_TX_SZ ),
13931398 (AP_JEP106_ARM , AP_CLASS_MEM_AP , 4 , AP_TYPE_AHB ): ("AHB-AP" , AHB_AP , AP_ALL_TX_SZ ),
13941399 (AP_JEP106_ARM , AP_CLASS_MEM_AP , 0 , AP_TYPE_APB ): ("APB-AP" , MEM_AP , AP_DBGSWEN ),
13951400 (AP_JEP106_ARM , AP_CLASS_MEM_AP , 0 , AP_TYPE_AXI ): ("AXI-AP" , MEM_AP , AP_ALL_TX_SZ ),
1396- (AP_JEP106_ARM , AP_CLASS_MEM_AP , 0 , AP_TYPE_AHB5 ): ("AHB5-AP" , AHB_AP , AP_ALL_TX_SZ ),
1401+ (AP_JEP106_ARM , AP_CLASS_MEM_AP , 0 , AP_TYPE_AHB5 ): ("AHB5-AP" , AHB_AP , AP_ALL_TX_SZ | AP_SPROT ),
13971402 (AP_JEP106_ARM , AP_CLASS_MEM_AP , 1 , AP_TYPE_AHB5 ): ("AHB5-AP" , AHB_AP , AP_ALL_TX_SZ ),
13981403 (AP_JEP106_ARM , AP_CLASS_MEM_AP , 2 , AP_TYPE_AHB5 ): ("AHB5-AP" , AHB_AP , AP_ALL_TX_SZ ),
13991404 (AP_JEP106_ARM , AP_CLASS_MEM_AP , 0 , AP_TYPE_APB4 ): ("APB4-AP" , MEM_AP , 0 ),
14001405 (AP_JEP106_ARM , AP_CLASS_MEM_AP , 0 , AP_TYPE_AXI5 ): ("AXI5-AP" , MEM_AP , AP_ALL_TX_SZ ),
14011406 (AP_JEP106_ARM , AP_CLASS_MEM_AP , 1 , AP_TYPE_AXI5 ): ("AXI5-AP" , MEM_AP , AP_ALL_TX_SZ ),
1402- (AP_JEP106_ARM , AP_CLASS_MEM_AP , 0 , AP_TYPE_AHB5_HPROT ): ("AHB5-AP" , MEM_AP , AP_ALL_TX_SZ ),
1407+ (AP_JEP106_ARM , AP_CLASS_MEM_AP , 0 , AP_TYPE_AHB5_HPROT ): ("AHB5-AP" , MEM_AP , AP_ALL_TX_SZ | AP_SPROT ),
14031408 (AP_JEP106_ARM_CHINA ,
14041409 AP_CLASS_MEM_AP , 1 , AP_TYPE_AHB5 ): ("AHB5-AP" , AHB_AP , AP_ALL_TX_SZ ),
14051410 }
0 commit comments