[sw/rom] Fix sec_mmio_read32 expectations bug

sec_mmio write functions store masked values in the expectations table.
The reads, on the other hand, were storing unmasked values. This
consistency issue was making the sec_mmio_check_values function fail.

The fix is to stored masked values for the sec_mmio_read32() function.

Signed-off-by: Miguel Osorio <miguelosorio@google.com>
diff --git a/sw/device/silicon_creator/lib/base/sec_mmio.c b/sw/device/silicon_creator/lib/base/sec_mmio.c
index c9192b6..514029f 100644
--- a/sw/device/silicon_creator/lib/base/sec_mmio.c
+++ b/sw/device/silicon_creator/lib/base/sec_mmio.c
@@ -70,7 +70,7 @@
   uint32_t value = abs_mmio_read32(addr);
   uint32_t masked_value = value ^ kSecMmioMaskVal;
 
-  upsert_register(addr, value);
+  upsert_register(addr, masked_value);
 
   if ((abs_mmio_read32(addr) ^ kSecMmioMaskVal) != masked_value) {
     sec_mmio_shutdown_cb(kErrorSecMmioReadFault);
diff --git a/sw/device/silicon_creator/lib/base/sec_mmio_unittest.cc b/sw/device/silicon_creator/lib/base/sec_mmio_unittest.cc
index 8cdfb71..031709d 100644
--- a/sw/device/silicon_creator/lib/base/sec_mmio_unittest.cc
+++ b/sw/device/silicon_creator/lib/base/sec_mmio_unittest.cc
@@ -109,15 +109,20 @@
   EXPECT_ABS_READ32(8, 0);
   sec_mmio_write32(8, 0);
 
+  // Test an expected value modification which gets updated by a read.
+  EXPECT_ABS_READ32(8, 0xa5a5a5a5);
+  EXPECT_ABS_READ32(8, 0xa5a5a5a5);
+  EXPECT_EQ(sec_mmio_read32(8), 0xa5a5a5a5);
+
   // The expected permutation order for rnd_offset=0 is {1, 2, 0}.
   EXPECT_ABS_READ32(4, 0x87654321);
-  EXPECT_ABS_READ32(8, 0);
+  EXPECT_ABS_READ32(8, 0xa5a5a5a5);
   EXPECT_ABS_READ32(0, 0x12345678);
   sec_mmio_check_values(/*rnd_offset=*/0);
   EXPECT_EQ(ctx_->check_count, 1);
 
   // The expected permutation order for rnd_offset=1 is {2, 0, 1}.
-  EXPECT_ABS_READ32(8, 0);
+  EXPECT_ABS_READ32(8, 0xa5a5a5a5);
   EXPECT_ABS_READ32(0, 0x12345678);
   EXPECT_ABS_READ32(4, 0x87654321);
   sec_mmio_check_values(/*rnd_offset=*/1);
@@ -126,7 +131,7 @@
   // The expected permutation order for rnd_offset=32 is {0, 1, 2}.
   EXPECT_ABS_READ32(0, 0x12345678);
   EXPECT_ABS_READ32(4, 0x87654321);
-  EXPECT_ABS_READ32(8, 0);
+  EXPECT_ABS_READ32(8, 0xa5a5a5a5);
   sec_mmio_check_values(/*rnd_offset=*/32);
   EXPECT_EQ(ctx_->check_count, 3);
 }