diff --git a/docs/pc_bsa/arm_pc-bsa_testcase_checklist.md b/docs/pc_bsa/arm_pc-bsa_testcase_checklist.md
index 4599c02c..228beea5 100644
--- a/docs/pc_bsa/arm_pc-bsa_testcase_checklist.md
+++ b/docs/pc_bsa/arm_pc-bsa_testcase_checklist.md
@@ -105,6 +105,16 @@ The checklist provides information about:
Yes |
No |
+
+ | 32 |
+ Check for addr authentication support |
+ 2 |
+ MHCBW |
+ Yes |
+ Yes |
+ Yes |
+ No |
+
| 36 |
Check for nested virtualization |
diff --git a/test_pool/pe/pe032.c b/test_pool/pe/pe032.c
index d30090f3..ca8d9d31 100644
--- a/test_pool/pe/pe032.c
+++ b/test_pool/pe/pe032.c
@@ -19,7 +19,11 @@
#include "val_interface.h"
#define TEST_NUM (ACS_PE_TEST_NUM_BASE + 32)
+#ifdef PC_BSA
+#define TEST_RULE "MHCBW"
+#else
#define TEST_RULE "S_L5PE_02"
+#endif
#define TEST_DESC "Check for addr authentication support "
static void payload(void)
diff --git a/tools/cmake/infra/pc_bsa_test.txt b/tools/cmake/infra/pc_bsa_test.txt
index 7fcbdea6..91b1b139 100644
--- a/tools/cmake/infra/pc_bsa_test.txt
+++ b/tools/cmake/infra/pc_bsa_test.txt
@@ -24,6 +24,7 @@ pe026.c
pe028.c
pe029.c
pe030.c
+pe032.c
pe036.c
pe040.c
pe048.c
diff --git a/val/include/rule_based_execution_enum.h b/val/include/rule_based_execution_enum.h
index 53d1bfa6..212d63c0 100644
--- a/val/include/rule_based_execution_enum.h
+++ b/val/include/rule_based_execution_enum.h
@@ -107,6 +107,7 @@ typedef enum {
P_L1PE_06,
P_L1PE_07,
P_L1PE_08,
+ MHCBW,
YKRHG,
CNBRV,
PBCRQ,
diff --git a/val/src/rule_enum_string_map.c b/val/src/rule_enum_string_map.c
index 27aa54d8..29d738fd 100644
--- a/val/src/rule_enum_string_map.c
+++ b/val/src/rule_enum_string_map.c
@@ -483,6 +483,7 @@ char *rule_id_string[RULE_ID_SENTINEL] = {
[P_L1PE_06] = "P_L1PE_06",
[P_L1PE_07] = "P_L1PE_07",
[P_L1PE_08] = "P_L1PE_08",
+ [MHCBW] = "MHCBW",
[YKRHG] = "YKRHG",
[CNBRV] = "CNBRV",
[PBCRQ] = "PBCRQ",
diff --git a/val/src/rule_lookup.c b/val/src/rule_lookup.c
index 14187265..cdaf5921 100644
--- a/val/src/rule_lookup.c
+++ b/val/src/rule_lookup.c
@@ -32,6 +32,7 @@ const pcbsa_rule_entry_t pcbsa_rule_list[] = {
{ P_L1PE_06, PCBSA_LEVEL_1 },
{ P_L1PE_07, PCBSA_LEVEL_1 },
{ P_L1PE_08, PCBSA_LEVEL_1 },
+ { MHCBW, PCBSA_LEVEL_2},
{ YKRHG, PCBSA_LEVEL_2 },
{ CNBRV, PCBSA_LEVEL_2 },
{ PBCRQ, PCBSA_LEVEL_2 },
diff --git a/val/src/rule_metadata.c b/val/src/rule_metadata.c
index 73e76558..569fdebf 100644
--- a/val/src/rule_metadata.c
+++ b/val/src/rule_metadata.c
@@ -2531,6 +2531,14 @@ rule_test_map_t rule_test_map[RULE_ID_SENTINEL] = {
.flag = BASE_RULE,
.test_num = ACS_PE_TEST_NUM_BASE + 30,
},
+ [MHCBW] = {
+ .test_entry_id = PE032_ENTRY,
+ .module_id = PE,
+ .rule_desc = "Check for addr and generic auth",
+ .platform_bitmask = PLATFORM_BAREMETAL | PLATFORM_UEFI,
+ .flag = BASE_RULE,
+ .test_num = ACS_PE_TEST_NUM_BASE + 32,
+ },
[YKRHG] = {
.test_entry_id = PE036_ENTRY,
.module_id = PE,
@@ -3981,6 +3989,7 @@ test_entry_fn_t test_entry_func_table[TEST_ENTRY_SENTINEL] = {
[PE028_ENTRY] = pe028_entry,
[PE029_ENTRY] = pe029_entry,
[PE030_ENTRY] = pe030_entry,
+ [PE032_ENTRY] = pe032_entry,
[PE036_ENTRY] = pe036_entry,
[PE040_ENTRY] = pe040_entry,
[PE048_ENTRY] = pe048_entry,