diff --git a/exosphere/lp0fw/src/fuse.c b/exosphere/lp0fw/src/fuse.c index 84a64cf..cad33c8 100644 --- a/exosphere/lp0fw/src/fuse.c +++ b/exosphere/lp0fw/src/fuse.c @@ -28,6 +28,10 @@ return false; } +void fuse_disable_programming(void) { + FUSE_REGS->FUSE_DIS_PGM = 1; +} + static fuse_bypass_data_t g_fuse_bypass_entries[NUM_FUSE_BYPASS_ENTRIES] = { /* No entries here. */ }; diff --git a/exosphere/lp0fw/src/fuse.h b/exosphere/lp0fw/src/fuse.h index 39706bd..6c30596 100644 --- a/exosphere/lp0fw/src/fuse.h +++ b/exosphere/lp0fw/src/fuse.h @@ -197,4 +197,6 @@ void fuse_configure_fuse_bypass(void); +void fuse_disable_programming(void); + #endif diff --git a/exosphere/lp0fw/src/secmon.c b/exosphere/lp0fw/src/secmon.c index d6ec9b1..142e7b4 100644 --- a/exosphere/lp0fw/src/secmon.c +++ b/exosphere/lp0fw/src/secmon.c @@ -20,6 +20,7 @@ #include "lp0.h" #include "secmon.h" #include "se.h" +#include "fuse.h" #include "pmc.h" /* "private" functions. */ @@ -47,7 +48,12 @@ /* Make security engine require secure busmaster. */ se_get_regs()->_0x4 = 0; - /* TODO: stuff */ + /* TODO: se_verify_keys_unreadable(); */ + + /* TODO: pmc_lockout_wb_scratch_registers(); */ + + /* Disable fuse programming. */ + fuse_disable_programming(); } void secmon_decrypt_saved_image(void *dst, const void *src, size_t size) {