mirror of
https://github.com/Atmosphere-NX/Atmosphere
synced 2024-12-22 20:31:14 +00:00
fusee-primary: force displaying of fatal errors
This commit is contained in:
parent
dc4dbe29ae
commit
4d72c2b37a
1 changed files with 24 additions and 1 deletions
|
@ -17,6 +17,7 @@
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
|
#include "di.h"
|
||||||
#include "se.h"
|
#include "se.h"
|
||||||
#include "fuse.h"
|
#include "fuse.h"
|
||||||
#include "pmc.h"
|
#include "pmc.h"
|
||||||
|
@ -24,8 +25,8 @@
|
||||||
#include "panic.h"
|
#include "panic.h"
|
||||||
#include "car.h"
|
#include "car.h"
|
||||||
#include "btn.h"
|
#include "btn.h"
|
||||||
|
|
||||||
#include "lib/log.h"
|
#include "lib/log.h"
|
||||||
|
#include "display/video_fb.h"
|
||||||
|
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
|
|
||||||
|
@ -97,12 +98,34 @@ __attribute__ ((noreturn)) void generic_panic(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
__attribute__((noreturn)) void fatal_error(const char *fmt, ...) {
|
__attribute__((noreturn)) void fatal_error(const char *fmt, ...) {
|
||||||
|
/* Forcefully initialize the screen if logging is disabled. */
|
||||||
|
if (log_get_log_level() == SCREEN_LOG_LEVEL_NONE) {
|
||||||
|
/* Zero-fill the framebuffer and register it as printk provider. */
|
||||||
|
video_init((void *)0xC0000000);
|
||||||
|
|
||||||
|
/* Initialize the display. */
|
||||||
|
display_init();
|
||||||
|
|
||||||
|
/* Set the framebuffer. */
|
||||||
|
display_init_framebuffer((void *)0xC0000000);
|
||||||
|
|
||||||
|
/* Turn on the backlight after initializing the lfb */
|
||||||
|
/* to avoid flickering. */
|
||||||
|
display_backlight(true);
|
||||||
|
|
||||||
|
/* Override the global logging level. */
|
||||||
|
log_set_log_level(SCREEN_LOG_LEVEL_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Display fatal error. */
|
||||||
va_list args;
|
va_list args;
|
||||||
print(SCREEN_LOG_LEVEL_ERROR, "Fatal error: ");
|
print(SCREEN_LOG_LEVEL_ERROR, "Fatal error: ");
|
||||||
va_start(args, fmt);
|
va_start(args, fmt);
|
||||||
vprint(SCREEN_LOG_LEVEL_ERROR, fmt, args);
|
vprint(SCREEN_LOG_LEVEL_ERROR, fmt, args);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
print(SCREEN_LOG_LEVEL_ERROR | SCREEN_LOG_LEVEL_NO_PREFIX,"\nPress POWER to reboot\n");
|
print(SCREEN_LOG_LEVEL_ERROR | SCREEN_LOG_LEVEL_NO_PREFIX,"\nPress POWER to reboot\n");
|
||||||
|
|
||||||
|
/* Wait for button and reboot. */
|
||||||
wait_for_button_and_reboot();
|
wait_for_button_and_reboot();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue