[mask_rom] Refactor alert driver to use sec_mmio
1. Update abs_mmio calls to sec_mmio calls.
2. Update the unit and functional tests.
Signed-off-by: Chris Frantz <cfrantz@google.com>
diff --git a/sw/device/silicon_creator/lib/base/mock_sec_mmio.h b/sw/device/silicon_creator/lib/base/mock_sec_mmio.h
index b55c953..d327545 100644
--- a/sw/device/silicon_creator/lib/base/mock_sec_mmio.h
+++ b/sw/device/silicon_creator/lib/base/mock_sec_mmio.h
@@ -54,17 +54,12 @@
/**
* Expect a shadowed write to the given offset with the given 32-bit value.
*
- * The value may be given as an integer, a pointer to little-endian data,
- * or a `std::initializer_list<BitField>`.
- *
- * This function is only available in tests using a fixture that derives
- * `MmioTest`.
- *
- * This expectation is sequenced with all other `EXPECT_SEC_READ` and
- * `EXPECT_SEC_WRITE` calls.
+ * @param addr Write address.
+ * @param ... Expected value to be written. May be an integer, a pointer to
+ * little-endian data, or a `std::initializer_list<BitField>`.
*/
-#define EXPECT_SEC_WRITE32_SHADOWED(mmio, addr, ...) \
- EXPECT_CALL(mmio, \
+#define EXPECT_SEC_WRITE32_SHADOWED(addr, ...) \
+ EXPECT_CALL(::mask_rom_test::MockSecMmio::Instance(), \
Write32Shadowed(addr, mock_mmio::ToInt<uint32_t>(__VA_ARGS__)));
extern "C" {
diff --git a/sw/device/silicon_creator/lib/base/sec_mmio.c b/sw/device/silicon_creator/lib/base/sec_mmio.c
index 0eb0cff..0267bc8 100644
--- a/sw/device/silicon_creator/lib/base/sec_mmio.c
+++ b/sw/device/silicon_creator/lib/base/sec_mmio.c
@@ -85,7 +85,7 @@
}
void sec_mmio_write32_shadowed(uint32_t addr, uint32_t value) {
- // Shadowed register require two writes.
+ // Shadowed registers require two writes.
abs_mmio_write32(addr, value);
abs_mmio_write32(addr, value);
uint32_t masked_value = value ^ kSecMmioMaskVal;
diff --git a/sw/device/silicon_creator/lib/base/sec_mmio.h b/sw/device/silicon_creator/lib/base/sec_mmio.h
index 631277b..af80850 100644
--- a/sw/device/silicon_creator/lib/base/sec_mmio.h
+++ b/sw/device/silicon_creator/lib/base/sec_mmio.h
@@ -158,7 +158,7 @@
* `offset`.
*
* This function implements a write-write-read-comparison operation for shadowed
- * registers.. The first write value is stored in the list of expected register
+ * registers. The first write value is stored in the list of expected register
* values for later comparison via `sec_mmio_check_values()`.
*
* On successful calls, this function will increment the internal count of
diff --git a/sw/device/silicon_creator/lib/drivers/alert.c b/sw/device/silicon_creator/lib/drivers/alert.c
index 63aa050..5f15e59 100644
--- a/sw/device/silicon_creator/lib/drivers/alert.c
+++ b/sw/device/silicon_creator/lib/drivers/alert.c
@@ -5,7 +5,7 @@
#include "sw/device/silicon_creator/lib/drivers/alert.h"
#include "sw/device/lib/base/macros.h"
-#include "sw/device/silicon_creator/lib/base/abs_mmio.h"
+#include "sw/device/silicon_creator/lib/base/sec_mmio.h"
#include "sw/device/silicon_creator/lib/error.h"
#include "alert_handler_regs.h"
@@ -24,22 +24,22 @@
switch (cls) {
case kAlertClassA:
- abs_mmio_write32_shadowed(
+ sec_mmio_write32_shadowed(
kBase + ALERT_HANDLER_ALERT_CLASS_SHADOWED_0_REG_OFFSET + index,
ALERT_HANDLER_ALERT_CLASS_SHADOWED_0_CLASS_A_0_VALUE_CLASSA);
break;
case kAlertClassB:
- abs_mmio_write32_shadowed(
+ sec_mmio_write32_shadowed(
kBase + ALERT_HANDLER_ALERT_CLASS_SHADOWED_0_REG_OFFSET + index,
ALERT_HANDLER_ALERT_CLASS_SHADOWED_0_CLASS_A_0_VALUE_CLASSB);
break;
case kAlertClassC:
- abs_mmio_write32_shadowed(
+ sec_mmio_write32_shadowed(
kBase + ALERT_HANDLER_ALERT_CLASS_SHADOWED_0_REG_OFFSET + index,
ALERT_HANDLER_ALERT_CLASS_SHADOWED_0_CLASS_A_0_VALUE_CLASSC);
break;
case kAlertClassD:
- abs_mmio_write32_shadowed(
+ sec_mmio_write32_shadowed(
kBase + ALERT_HANDLER_ALERT_CLASS_SHADOWED_0_REG_OFFSET + index,
ALERT_HANDLER_ALERT_CLASS_SHADOWED_0_CLASS_A_0_VALUE_CLASSD);
break;
@@ -54,13 +54,13 @@
break;
case kAlertEnableLocked:
// Enable, then lock.
- abs_mmio_write32_shadowed(
+ sec_mmio_write32_shadowed(
kBase + ALERT_HANDLER_ALERT_EN_SHADOWED_0_REG_OFFSET + index, 1);
- abs_mmio_write32(kBase + ALERT_HANDLER_ALERT_REGWEN_0_REG_OFFSET + index,
+ sec_mmio_write32(kBase + ALERT_HANDLER_ALERT_REGWEN_0_REG_OFFSET + index,
0);
break;
case kAlertEnableEnabled:
- abs_mmio_write32_shadowed(
+ sec_mmio_write32_shadowed(
kBase + ALERT_HANDLER_ALERT_EN_SHADOWED_0_REG_OFFSET + index, 1);
break;
default:
@@ -79,22 +79,22 @@
switch (cls) {
case kAlertClassA:
- abs_mmio_write32_shadowed(
+ sec_mmio_write32_shadowed(
kBase + ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_0_REG_OFFSET + index,
ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_0_CLASS_LA_0_VALUE_CLASSA);
break;
case kAlertClassB:
- abs_mmio_write32_shadowed(
+ sec_mmio_write32_shadowed(
kBase + ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_0_REG_OFFSET + index,
ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_0_CLASS_LA_0_VALUE_CLASSB);
break;
case kAlertClassC:
- abs_mmio_write32_shadowed(
+ sec_mmio_write32_shadowed(
kBase + ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_0_REG_OFFSET + index,
ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_0_CLASS_LA_0_VALUE_CLASSC);
break;
case kAlertClassD:
- abs_mmio_write32_shadowed(
+ sec_mmio_write32_shadowed(
kBase + ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_0_REG_OFFSET + index,
ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_0_CLASS_LA_0_VALUE_CLASSD);
break;
@@ -109,13 +109,13 @@
break;
case kAlertEnableLocked:
// Enable, then lock.
- abs_mmio_write32_shadowed(
+ sec_mmio_write32_shadowed(
kBase + ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_0_REG_OFFSET + index, 1);
- abs_mmio_write32(
+ sec_mmio_write32(
kBase + ALERT_HANDLER_LOC_ALERT_REGWEN_0_REG_OFFSET + index, 0);
break;
case kAlertEnableEnabled:
- abs_mmio_write32_shadowed(
+ sec_mmio_write32_shadowed(
kBase + ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_0_REG_OFFSET + index, 1);
break;
default:
@@ -201,23 +201,23 @@
return kErrorAlertBadEscalation;
}
- abs_mmio_write32_shadowed(
+ sec_mmio_write32_shadowed(
kBase + ALERT_HANDLER_CLASSA_CTRL_SHADOWED_REG_OFFSET + offset, reg);
- abs_mmio_write32_shadowed(
+ sec_mmio_write32_shadowed(
kBase + ALERT_HANDLER_CLASSA_ACCUM_THRESH_SHADOWED_REG_OFFSET + offset,
config->accum_threshold);
- abs_mmio_write32_shadowed(
+ sec_mmio_write32_shadowed(
kBase + ALERT_HANDLER_CLASSA_TIMEOUT_CYC_SHADOWED_REG_OFFSET + offset,
config->timeout_cycles);
for (size_t i = 0; i < 4; ++i) {
- abs_mmio_write32_shadowed(
+ sec_mmio_write32_shadowed(
kBase + ALERT_HANDLER_CLASSA_PHASE0_CYC_SHADOWED_REG_OFFSET + offset +
i * 4,
config->phase_cycles[i]);
}
if (config->enabled == kAlertEnableLocked) {
// Lock the alert configuration if it is configured to be locked.
- abs_mmio_write32(kBase + ALERT_HANDLER_CLASSA_REGWEN_REG_OFFSET + offset,
+ sec_mmio_write32(kBase + ALERT_HANDLER_CLASSA_REGWEN_REG_OFFSET + offset,
0);
}
return kErrorOk;
@@ -225,8 +225,8 @@
rom_error_t alert_ping_enable(void) {
// Enable the ping timer, then lock it.
- abs_mmio_write32_shadowed(
+ sec_mmio_write32_shadowed(
kBase + ALERT_HANDLER_PING_TIMER_EN_SHADOWED_REG_OFFSET, 1);
- abs_mmio_write32(kBase + ALERT_HANDLER_PING_TIMER_REGWEN_REG_OFFSET, 0);
+ sec_mmio_write32(kBase + ALERT_HANDLER_PING_TIMER_REGWEN_REG_OFFSET, 0);
return kErrorOk;
}
diff --git a/sw/device/silicon_creator/lib/drivers/alert_functest.c b/sw/device/silicon_creator/lib/drivers/alert_functest.c
index 13e6bda..9bea697 100644
--- a/sw/device/silicon_creator/lib/drivers/alert_functest.c
+++ b/sw/device/silicon_creator/lib/drivers/alert_functest.c
@@ -12,6 +12,7 @@
#include "sw/device/lib/runtime/log.h"
#include "sw/device/lib/runtime/print.h"
#include "sw/device/silicon_creator/lib/base/abs_mmio.h"
+#include "sw/device/silicon_creator/lib/base/sec_mmio.h"
#include "sw/device/silicon_creator/lib/drivers/alert.h"
#include "sw/device/silicon_creator/lib/drivers/rstmgr.h"
#include "sw/device/silicon_creator/lib/error.h"
@@ -37,6 +38,9 @@
kFlashBase = TOP_EARLGREY_FLASH_CTRL_CORE_BASE_ADDR,
};
+// sec_mmio (used by the alert driver) requires this symbol to be defined.
+sec_mmio_ctx_t sec_mmio_ctx;
+
rom_error_t alert_no_escalate_test(void) {
// Configure class B alerts for phase 0 only and disable NMI signalling.
alert_class_config_t config = {
diff --git a/sw/device/silicon_creator/lib/drivers/alert_unittest.cc b/sw/device/silicon_creator/lib/drivers/alert_unittest.cc
index 64607cb..d5ed258 100644
--- a/sw/device/silicon_creator/lib/drivers/alert_unittest.cc
+++ b/sw/device/silicon_creator/lib/drivers/alert_unittest.cc
@@ -6,7 +6,7 @@
#include "gtest/gtest.h"
#include "sw/device/lib/base/mmio.h"
-#include "sw/device/silicon_creator/lib/base/mock_abs_mmio.h"
+#include "sw/device/silicon_creator/lib/base/mock_sec_mmio.h"
#include "alert_handler_regs.h" // Generated.
#include "hw/top_earlgrey/sw/autogen/top_earlgrey.h"
@@ -17,7 +17,7 @@
class AlertTest : public mask_rom_test::MaskRomTest {
protected:
uint32_t base_ = TOP_EARLGREY_ALERT_HANDLER_BASE_ADDR;
- mask_rom_test::MockAbsMmio mmio_;
+ mask_rom_test::MockSecMmio mmio_;
};
class InitTest : public AlertTest {};
@@ -36,8 +36,8 @@
TEST_F(InitTest, AlertConfigureAlertBadEnable) {
// We expect the alert to get configured as class A, but then to
// experience an error when evaluating the enable parameter.
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_ALERT_CLASS_SHADOWED_0_REG_OFFSET, 0);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_ALERT_CLASS_SHADOWED_0_REG_OFFSET, 0);
EXPECT_EQ(alert_configure(0, kAlertClassA, (alert_enable_t)-1),
kErrorAlertBadEnable);
}
@@ -51,72 +51,71 @@
}
TEST_F(InitTest, AlertConfigure0AsClassA) {
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_ALERT_CLASS_SHADOWED_0_REG_OFFSET, 0);
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_ALERT_EN_SHADOWED_0_REG_OFFSET, 1);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_ALERT_CLASS_SHADOWED_0_REG_OFFSET, 0);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_ALERT_EN_SHADOWED_0_REG_OFFSET, 1);
EXPECT_EQ(alert_configure(0, kAlertClassA, kAlertEnableEnabled), kErrorOk);
}
TEST_F(InitTest, LocalAlertConfigure0AsClassA) {
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_0_REG_OFFSET, 0);
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_0_REG_OFFSET, 1);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_0_REG_OFFSET, 0);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_0_REG_OFFSET, 1);
EXPECT_EQ(alert_local_configure(0, kAlertClassA, kAlertEnableEnabled),
kErrorOk);
}
TEST_F(InitTest, AlertConfigure1AsClassB) {
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_ALERT_CLASS_SHADOWED_1_REG_OFFSET, 1);
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_ALERT_EN_SHADOWED_1_REG_OFFSET, 1);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_ALERT_CLASS_SHADOWED_1_REG_OFFSET, 1);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_ALERT_EN_SHADOWED_1_REG_OFFSET, 1);
EXPECT_EQ(alert_configure(1, kAlertClassB, kAlertEnableEnabled), kErrorOk);
}
TEST_F(InitTest, LocalAlertConfigure1AsClassB) {
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_1_REG_OFFSET, 1);
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_1_REG_OFFSET, 1);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_1_REG_OFFSET, 1);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_1_REG_OFFSET, 1);
EXPECT_EQ(alert_local_configure(1, kAlertClassB, kAlertEnableEnabled),
kErrorOk);
}
TEST_F(InitTest, AlertConfigure2AsClassC) {
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_ALERT_CLASS_SHADOWED_2_REG_OFFSET, 2);
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_ALERT_EN_SHADOWED_2_REG_OFFSET, 1);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_ALERT_CLASS_SHADOWED_2_REG_OFFSET, 2);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_ALERT_EN_SHADOWED_2_REG_OFFSET, 1);
EXPECT_EQ(alert_configure(2, kAlertClassC, kAlertEnableEnabled), kErrorOk);
}
TEST_F(InitTest, LocalAlertConfigure2AsClassC) {
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_2_REG_OFFSET, 2);
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_2_REG_OFFSET, 1);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_2_REG_OFFSET, 2);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_2_REG_OFFSET, 1);
EXPECT_EQ(alert_local_configure(2, kAlertClassC, kAlertEnableEnabled),
kErrorOk);
}
TEST_F(InitTest, AlertConfigure3AsClassDLocked) {
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_ALERT_CLASS_SHADOWED_3_REG_OFFSET, 3);
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_ALERT_EN_SHADOWED_3_REG_OFFSET, 1);
- EXPECT_ABS_WRITE32(mmio_, base_ + ALERT_HANDLER_ALERT_REGWEN_3_REG_OFFSET, 0);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_ALERT_CLASS_SHADOWED_3_REG_OFFSET, 3);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_ALERT_EN_SHADOWED_3_REG_OFFSET, 1);
+ EXPECT_SEC_WRITE32(base_ + ALERT_HANDLER_ALERT_REGWEN_3_REG_OFFSET, 0);
EXPECT_EQ(alert_configure(3, kAlertClassD, kAlertEnableLocked), kErrorOk);
}
TEST_F(InitTest, LocalAlertConfigure3AsClassDLocked) {
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_3_REG_OFFSET, 3);
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_3_REG_OFFSET, 1);
- EXPECT_ABS_WRITE32(mmio_, base_ + ALERT_HANDLER_LOC_ALERT_REGWEN_3_REG_OFFSET,
- 0);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_3_REG_OFFSET, 3);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_3_REG_OFFSET, 1);
+ EXPECT_SEC_WRITE32(base_ + ALERT_HANDLER_LOC_ALERT_REGWEN_3_REG_OFFSET, 0);
EXPECT_EQ(alert_local_configure(3, kAlertClassD, kAlertEnableLocked),
kErrorOk);
}
@@ -134,8 +133,8 @@
.timeout_cycles = 2,
.phase_cycles = {1, 10, 100, 1000},
};
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_CLASSA_CTRL_SHADOWED_REG_OFFSET,
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_CLASSA_CTRL_SHADOWED_REG_OFFSET,
{
{ALERT_HANDLER_CLASSA_CTRL_SHADOWED_EN_BIT, true},
{ALERT_HANDLER_CLASSA_CTRL_SHADOWED_LOCK_BIT, true},
@@ -148,19 +147,19 @@
{ALERT_HANDLER_CLASSA_CTRL_SHADOWED_MAP_E2_OFFSET, 2},
{ALERT_HANDLER_CLASSA_CTRL_SHADOWED_MAP_E3_OFFSET, 3},
});
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_CLASSA_ACCUM_THRESH_SHADOWED_REG_OFFSET, 1);
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_CLASSA_TIMEOUT_CYC_SHADOWED_REG_OFFSET, 2);
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_CLASSA_PHASE0_CYC_SHADOWED_REG_OFFSET, 1);
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_CLASSA_PHASE1_CYC_SHADOWED_REG_OFFSET, 10);
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_CLASSA_PHASE2_CYC_SHADOWED_REG_OFFSET, 100);
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_CLASSA_PHASE3_CYC_SHADOWED_REG_OFFSET, 1000);
- EXPECT_ABS_WRITE32(mmio_, base_ + ALERT_HANDLER_CLASSA_REGWEN_REG_OFFSET, 0);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_CLASSA_ACCUM_THRESH_SHADOWED_REG_OFFSET, 1);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_CLASSA_TIMEOUT_CYC_SHADOWED_REG_OFFSET, 2);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_CLASSA_PHASE0_CYC_SHADOWED_REG_OFFSET, 1);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_CLASSA_PHASE1_CYC_SHADOWED_REG_OFFSET, 10);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_CLASSA_PHASE2_CYC_SHADOWED_REG_OFFSET, 100);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_CLASSA_PHASE3_CYC_SHADOWED_REG_OFFSET, 1000);
+ EXPECT_SEC_WRITE32(base_ + ALERT_HANDLER_CLASSA_REGWEN_REG_OFFSET, 0);
EXPECT_EQ(alert_class_configure(kAlertClassA, &config), kErrorOk);
}
@@ -172,8 +171,8 @@
.timeout_cycles = 2,
.phase_cycles = {1, 10, 100, 1000},
};
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_CLASSB_CTRL_SHADOWED_REG_OFFSET,
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_CLASSB_CTRL_SHADOWED_REG_OFFSET,
{
{ALERT_HANDLER_CLASSA_CTRL_SHADOWED_EN_BIT, true},
{ALERT_HANDLER_CLASSA_CTRL_SHADOWED_LOCK_BIT, false},
@@ -186,18 +185,18 @@
{ALERT_HANDLER_CLASSA_CTRL_SHADOWED_MAP_E2_OFFSET, 2},
{ALERT_HANDLER_CLASSA_CTRL_SHADOWED_MAP_E3_OFFSET, 3},
});
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_CLASSB_ACCUM_THRESH_SHADOWED_REG_OFFSET, 1);
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_CLASSB_TIMEOUT_CYC_SHADOWED_REG_OFFSET, 2);
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_CLASSB_PHASE0_CYC_SHADOWED_REG_OFFSET, 1);
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_CLASSB_PHASE1_CYC_SHADOWED_REG_OFFSET, 10);
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_CLASSB_PHASE2_CYC_SHADOWED_REG_OFFSET, 100);
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_CLASSB_PHASE3_CYC_SHADOWED_REG_OFFSET, 1000);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_CLASSB_ACCUM_THRESH_SHADOWED_REG_OFFSET, 1);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_CLASSB_TIMEOUT_CYC_SHADOWED_REG_OFFSET, 2);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_CLASSB_PHASE0_CYC_SHADOWED_REG_OFFSET, 1);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_CLASSB_PHASE1_CYC_SHADOWED_REG_OFFSET, 10);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_CLASSB_PHASE2_CYC_SHADOWED_REG_OFFSET, 100);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_CLASSB_PHASE3_CYC_SHADOWED_REG_OFFSET, 1000);
EXPECT_EQ(alert_class_configure(kAlertClassB, &config), kErrorOk);
}
@@ -209,8 +208,8 @@
.timeout_cycles = 2,
.phase_cycles = {1, 10, 100, 1000},
};
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_CLASSC_CTRL_SHADOWED_REG_OFFSET,
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_CLASSC_CTRL_SHADOWED_REG_OFFSET,
{
{ALERT_HANDLER_CLASSA_CTRL_SHADOWED_EN_BIT, true},
{ALERT_HANDLER_CLASSA_CTRL_SHADOWED_LOCK_BIT, false},
@@ -223,18 +222,18 @@
{ALERT_HANDLER_CLASSA_CTRL_SHADOWED_MAP_E2_OFFSET, 2},
{ALERT_HANDLER_CLASSA_CTRL_SHADOWED_MAP_E3_OFFSET, 3},
});
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_CLASSC_ACCUM_THRESH_SHADOWED_REG_OFFSET, 1);
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_CLASSC_TIMEOUT_CYC_SHADOWED_REG_OFFSET, 2);
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_CLASSC_PHASE0_CYC_SHADOWED_REG_OFFSET, 1);
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_CLASSC_PHASE1_CYC_SHADOWED_REG_OFFSET, 10);
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_CLASSC_PHASE2_CYC_SHADOWED_REG_OFFSET, 100);
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_CLASSC_PHASE3_CYC_SHADOWED_REG_OFFSET, 1000);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_CLASSC_ACCUM_THRESH_SHADOWED_REG_OFFSET, 1);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_CLASSC_TIMEOUT_CYC_SHADOWED_REG_OFFSET, 2);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_CLASSC_PHASE0_CYC_SHADOWED_REG_OFFSET, 1);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_CLASSC_PHASE1_CYC_SHADOWED_REG_OFFSET, 10);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_CLASSC_PHASE2_CYC_SHADOWED_REG_OFFSET, 100);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_CLASSC_PHASE3_CYC_SHADOWED_REG_OFFSET, 1000);
EXPECT_EQ(alert_class_configure(kAlertClassC, &config), kErrorOk);
}
@@ -246,8 +245,8 @@
.timeout_cycles = 2,
.phase_cycles = {1, 10, 100, 1000},
};
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_CLASSD_CTRL_SHADOWED_REG_OFFSET,
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_CLASSD_CTRL_SHADOWED_REG_OFFSET,
{
{ALERT_HANDLER_CLASSA_CTRL_SHADOWED_EN_BIT, true},
{ALERT_HANDLER_CLASSA_CTRL_SHADOWED_LOCK_BIT, false},
@@ -260,18 +259,18 @@
{ALERT_HANDLER_CLASSA_CTRL_SHADOWED_MAP_E2_OFFSET, 2},
{ALERT_HANDLER_CLASSA_CTRL_SHADOWED_MAP_E3_OFFSET, 3},
});
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_CLASSD_ACCUM_THRESH_SHADOWED_REG_OFFSET, 1);
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_CLASSD_TIMEOUT_CYC_SHADOWED_REG_OFFSET, 2);
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_CLASSD_PHASE0_CYC_SHADOWED_REG_OFFSET, 1);
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_CLASSD_PHASE1_CYC_SHADOWED_REG_OFFSET, 10);
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_CLASSD_PHASE2_CYC_SHADOWED_REG_OFFSET, 100);
- EXPECT_ABS_WRITE32_SHADOWED(
- mmio_, base_ + ALERT_HANDLER_CLASSD_PHASE3_CYC_SHADOWED_REG_OFFSET, 1000);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_CLASSD_ACCUM_THRESH_SHADOWED_REG_OFFSET, 1);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_CLASSD_TIMEOUT_CYC_SHADOWED_REG_OFFSET, 2);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_CLASSD_PHASE0_CYC_SHADOWED_REG_OFFSET, 1);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_CLASSD_PHASE1_CYC_SHADOWED_REG_OFFSET, 10);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_CLASSD_PHASE2_CYC_SHADOWED_REG_OFFSET, 100);
+ EXPECT_SEC_WRITE32_SHADOWED(
+ base_ + ALERT_HANDLER_CLASSD_PHASE3_CYC_SHADOWED_REG_OFFSET, 1000);
EXPECT_EQ(alert_class_configure(kAlertClassD, &config), kErrorOk);
}
diff --git a/sw/device/silicon_creator/lib/drivers/meson.build b/sw/device/silicon_creator/lib/drivers/meson.build
index 7a05000..c81a33b 100644
--- a/sw/device/silicon_creator/lib/drivers/meson.build
+++ b/sw/device/silicon_creator/lib/drivers/meson.build
@@ -239,7 +239,7 @@
'alert.c',
],
dependencies: [
- sw_silicon_creator_lib_base_abs_mmio,
+ sw_silicon_creator_lib_base_sec_mmio,
],
),
)
@@ -253,7 +253,7 @@
],
dependencies: [
sw_vendor_gtest,
- sw_silicon_creator_lib_base_mock_abs_mmio,
+ sw_silicon_creator_lib_base_mock_sec_mmio,
],
native: true,
c_args: ['-DMOCK_ABS_MMIO'],
@@ -273,6 +273,8 @@
'alert_functest.c'
],
dependencies: [
+ sw_silicon_creator_lib_base_abs_mmio,
+ sw_silicon_creator_lib_base_sec_mmio,
sw_silicon_creator_lib_driver_alert,
sw_silicon_creator_lib_driver_rstmgr,
],