void tboot_shutdown(u32 shutdown_type) { void (*shutdown)(void); if (!tboot_enabled()) return; /* * if we're being called before the 1:1 mapping is set up then just * return and let the normal shutdown happen; this should only be * due to very early panic() */ if (!tboot_pg_dir) return; /* if this is S3 then set regions to MAC */ if (shutdown_type == TB_SHUTDOWN_S3) if (tboot_setup_sleep()) return; tboot->shutdown_type = shutdown_type; switch_to_tboot_pt(); shutdown = (void(*)(void))(unsigned long)tboot->shutdown_entry; shutdown(); /* should not reach here */ while (1) halt(); }
void tboot_shutdown(u32 shutdown_type) { void (*shutdown)(void); if (!tboot_enabled()) return; /* if this is S3 then set regions to MAC */ if (shutdown_type == TB_SHUTDOWN_S3) if (tboot_setup_sleep()) return; tboot->shutdown_type = shutdown_type; switch_to_tboot_pt(); shutdown = (void(*)(void))(unsigned long)tboot->shutdown_entry; shutdown(); /* should not reach here */ while (1) halt(); }