diff --git a/sw/host/tests/chip/spi_passthru/src/main.rs b/sw/host/tests/chip/spi_passthru/src/main.rs
index 6ecece8..a5c8fa9 100644
--- a/sw/host/tests/chip/spi_passthru/src/main.rs
+++ b/sw/host/tests/chip/spi_passthru/src/main.rs
@@ -8,6 +8,7 @@
 
 use opentitanlib::app::TransportWrapper;
 use opentitanlib::execute_test;
+use opentitanlib::io::eeprom::AddressMode;
 use opentitanlib::io::spi::{Target, Transfer};
 use opentitanlib::spiflash::SpiFlash;
 use opentitanlib::test_utils::init::InitializeTest;
@@ -180,7 +181,6 @@
     let uart = transport.uart("console")?;
     let spi = transport.spi(&opts.spi)?;
     let flash = SpiFlash::default();
-
     let info = UploadInfo::execute(&*uart, || {
         flash.chip_erase(&*spi)?;
         Ok(())
@@ -196,6 +196,37 @@
     Ok(())
 }
 
+fn test_sector_erase(opts: &Opts, transport: &TransportWrapper, address: u32) -> Result<()> {
+    let uart = transport.uart("console")?;
+    let spi = transport.spi(&opts.spi)?;
+    let mut flash = SpiFlash::default();
+    // Double the flash size so we can test 3b and 4b addresses.
+    flash.size = 32 * 1024 * 1024;
+
+    // Make sure we're in a mode appropriate for the address.
+    let mode = if address < 0x1000000 {
+        AddressMode::Mode3b
+    } else {
+        AddressMode::Mode4b
+    };
+    flash.set_address_mode(&*spi, mode)?;
+    let info = UploadInfo::execute(&*uart, || {
+        flash.erase(&*spi, address, flash.erase_size)?;
+        Ok(())
+    })?;
+
+    assert_eq!(info.opcode, SpiFlash::SECTOR_ERASE);
+    assert_eq!(info.has_address, true);
+    assert_eq!(info.addr_4b, mode == AddressMode::Mode4b);
+    assert_eq!(info.address, address);
+    assert_eq!(info.data_len, 0);
+    assert_eq!(
+        info.flash_status & FLASH_STATUS_STD_BITS,
+        FLASH_STATUS_WEL | FLASH_STATUS_WIP
+    );
+    Ok(())
+}
+
 fn test_write_status(opts: &Opts, transport: &TransportWrapper, opcode: u8) -> Result<()> {
     let uart = transport.uart("console")?;
     let spi = transport.spi(&opts.spi)?;
@@ -227,6 +258,8 @@
     execute_test!(test_read_status_extended, &opts, &transport);
     execute_test!(test_read_sfdp, &opts, &transport);
     execute_test!(test_chip_erase, &opts, &transport);
+    execute_test!(test_sector_erase, &opts, &transport, 0x0000_4000);
+    execute_test!(test_sector_erase, &opts, &transport, 0x0100_4000);
     execute_test!(test_write_status, &opts, &transport, SpiFlash::WRITE_STATUS);
     execute_test!(
         test_write_status,
