77#include "sw/device/lib/arch/device.h"
88#include "sw/device/lib/base/memory.h"
99#include "sw/device/silicon_creator/lib/boot_data.h"
10+ #include "sw/device/silicon_creator/lib/boot_log.h"
1011#include "sw/device/silicon_creator/lib/boot_svc/boot_svc_msg.h"
1112#include "sw/device/silicon_creator/lib/dbg_print.h"
1213#include "sw/device/silicon_creator/lib/drivers/flash_ctrl.h"
@@ -55,11 +56,11 @@ rom_error_t flash_firmware_block(rescue_state_t *state) {
5556 return kErrorOk ;
5657}
5758
58- rom_error_t flash_owner_block (rescue_state_t * state , boot_data_t * bootdata ) {
59- if (bootdata -> ownership_state == kOwnershipStateUnlockedAny ||
60- bootdata -> ownership_state == kOwnershipStateUnlockedSelf ||
61- bootdata -> ownership_state == kOwnershipStateUnlockedEndorsed ||
62- (bootdata -> ownership_state == kOwnershipStateLockedOwner &&
59+ rom_error_t flash_owner_block (rescue_state_t * state ) {
60+ if (state -> bootdata -> ownership_state == kOwnershipStateUnlockedAny ||
61+ state -> bootdata -> ownership_state == kOwnershipStateUnlockedSelf ||
62+ state -> bootdata -> ownership_state == kOwnershipStateUnlockedEndorsed ||
63+ (state -> bootdata -> ownership_state == kOwnershipStateLockedOwner &&
6364 owner_block_newversion_mode () == kHardenedBoolTrue )) {
6465 HARDENED_RETURN_IF_ERROR (flash_ctrl_info_erase (
6566 & kFlashCtrlInfoPageOwnerSlot1 , kFlashCtrlEraseTypePage ));
@@ -93,8 +94,7 @@ static void ownership_erase(void) {
9394}
9495#endif
9596
96- rom_error_t rescue_validate_mode (uint32_t mode , rescue_state_t * state ,
97- boot_data_t * bootdata ) {
97+ rom_error_t rescue_validate_mode (uint32_t mode , rescue_state_t * state ) {
9898 dbg_printf ("\r\nmode: %C\r\n" , bitfield_byteswap32 (mode ));
9999 rom_error_t result = kErrorOk ;
100100
@@ -131,10 +131,11 @@ rom_error_t rescue_validate_mode(uint32_t mode, rescue_state_t *state,
131131 dbg_printf ("ok: send boot_svc request\r\n" );
132132 break ;
133133 case kRescueModeOwnerBlock :
134- if (bootdata -> ownership_state == kOwnershipStateUnlockedAny ||
135- bootdata -> ownership_state == kOwnershipStateUnlockedSelf ||
136- bootdata -> ownership_state == kOwnershipStateUnlockedEndorsed ||
137- (bootdata -> ownership_state == kOwnershipStateLockedOwner &&
134+ if (state -> bootdata -> ownership_state == kOwnershipStateUnlockedAny ||
135+ state -> bootdata -> ownership_state == kOwnershipStateUnlockedSelf ||
136+ state -> bootdata -> ownership_state ==
137+ kOwnershipStateUnlockedEndorsed ||
138+ (state -> bootdata -> ownership_state == kOwnershipStateLockedOwner &&
138139 owner_block_newversion_mode () == kHardenedBoolTrue )) {
139140 dbg_printf ("ok: send owner_block\r\n" );
140141 } else {
@@ -170,7 +171,7 @@ rom_error_t rescue_validate_mode(uint32_t mode, rescue_state_t *state,
170171 return result ;
171172}
172173
173- rom_error_t rescue_send_handler (rescue_state_t * state , boot_data_t * bootdata ) {
174+ rom_error_t rescue_send_handler (rescue_state_t * state ) {
174175 hardened_bool_t allow =
175176 owner_rescue_command_allowed (state -> config , state -> mode );
176177 if (allow != kHardenedBoolTrue ) {
@@ -219,7 +220,7 @@ rom_error_t rescue_send_handler(rescue_state_t *state, boot_data_t *bootdata) {
219220 return kErrorRescueSendStart ;
220221}
221222
222- rom_error_t rescue_recv_handler (rescue_state_t * state , boot_data_t * bootdata ) {
223+ rom_error_t rescue_recv_handler (rescue_state_t * state ) {
223224 hardened_bool_t allow =
224225 owner_rescue_command_allowed (state -> config , state -> mode );
225226 if (allow != kHardenedBoolTrue ) {
@@ -249,7 +250,7 @@ rom_error_t rescue_recv_handler(rescue_state_t *state, boot_data_t *bootdata) {
249250 break ;
250251 case kRescueModeOwnerBlock :
251252 if (state -> offset == sizeof (state -> data )) {
252- HARDENED_RETURN_IF_ERROR (flash_owner_block (state , bootdata ));
253+ HARDENED_RETURN_IF_ERROR (flash_owner_block (state ));
253254 state -> offset = 0 ;
254255 }
255256 break ;
@@ -268,8 +269,11 @@ rom_error_t rescue_recv_handler(rescue_state_t *state, boot_data_t *bootdata) {
268269 return kErrorOk ;
269270}
270271
271- void rescue_state_init (rescue_state_t * state ,
272+ void rescue_state_init (rescue_state_t * state , boot_data_t * bootdata ,
273+ boot_log_t * boot_log ,
272274 const owner_rescue_config_t * config ) {
275+ state -> boot_log = boot_log ;
276+ state -> bootdata = bootdata ;
273277 state -> config = config ;
274278 if ((hardened_bool_t )config == kHardenedBoolFalse ) {
275279 HARDENED_CHECK_EQ ((hardened_bool_t )config , kHardenedBoolFalse );
0 commit comments