mirror of
https://github.com/Atmosphere-NX/Atmosphere.git
synced 2024-12-01 02:37:27 +01:00
Change defaut BCT0 for debug
This commit is contained in:
parent
4199be2460
commit
dc3099781d
@ -13,7 +13,12 @@
|
|||||||
#define BCT0_LOAD_END_ADDRESS (uintptr_t)(0x4003F000)
|
#define BCT0_LOAD_END_ADDRESS (uintptr_t)(0x4003F000)
|
||||||
#define MAGIC_BCT0 0x30544342
|
#define MAGIC_BCT0 0x30544342
|
||||||
|
|
||||||
#define DEFAULT_BCT0_FOR_DEBUG "BCT0\n[stage1]\nstage2_path = stage2.bin\nstage2_addr = 0xFFF00000\nstage2_entrypoint = 0xCAFEBABE\n"
|
#define DEFAULT_BCT0_FOR_DEBUG \
|
||||||
|
"BCT0\n"\
|
||||||
|
"[stage1]\n"\
|
||||||
|
"stage2_path = fusee-secondary.bin\n"\
|
||||||
|
"stage2_addr = 0xFFF00000\n"\
|
||||||
|
"stage2_entrypoint = 0xFFF00000\n"
|
||||||
|
|
||||||
const char *load_config(void) {
|
const char *load_config(void) {
|
||||||
if (!read_sd_file((void *)BCT0_LOAD_ADDRESS, BCT0_LOAD_END_ADDRESS - BCT0_LOAD_ADDRESS, "BCT.ini")) {
|
if (!read_sd_file((void *)BCT0_LOAD_ADDRESS, BCT0_LOAD_END_ADDRESS - BCT0_LOAD_ADDRESS, "BCT.ini")) {
|
||||||
@ -24,7 +29,7 @@ const char *load_config(void) {
|
|||||||
/* printk("Error: Failed to load BCT.ini!\n");
|
/* printk("Error: Failed to load BCT.ini!\n");
|
||||||
* generic_panic(); */
|
* generic_panic(); */
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((*((u32 *)(BCT0_LOAD_ADDRESS))) != MAGIC_BCT0) {
|
if ((*((u32 *)(BCT0_LOAD_ADDRESS))) != MAGIC_BCT0) {
|
||||||
printk("Error: Unexpected magic in BCT.ini!\n");
|
printk("Error: Unexpected magic in BCT.ini!\n");
|
||||||
generic_panic();
|
generic_panic();
|
||||||
@ -60,42 +65,42 @@ int main(void) {
|
|||||||
u32 *lfb_base;
|
u32 *lfb_base;
|
||||||
char buf[0x400];
|
char buf[0x400];
|
||||||
memset(buf, 0xCC, 0x400);
|
memset(buf, 0xCC, 0x400);
|
||||||
|
|
||||||
/* Initialize DRAM. */
|
/* Initialize DRAM. */
|
||||||
/* TODO: What can be stripped out to make this minimal? */
|
/* TODO: What can be stripped out to make this minimal? */
|
||||||
nx_hwinit();
|
nx_hwinit();
|
||||||
|
|
||||||
/* Initialize the display. */
|
/* Initialize the display. */
|
||||||
display_init();
|
display_init();
|
||||||
|
|
||||||
/* Register the display as a printk provider. */
|
/* Register the display as a printk provider. */
|
||||||
lfb_base = display_init_framebuffer();
|
lfb_base = display_init_framebuffer();
|
||||||
video_init(lfb_base);
|
video_init(lfb_base);
|
||||||
|
|
||||||
/* Turn on the backlight after initializing the lfb */
|
/* Turn on the backlight after initializing the lfb */
|
||||||
/* to avoid flickering. */
|
/* to avoid flickering. */
|
||||||
display_enable_backlight(true);
|
display_enable_backlight(true);
|
||||||
|
|
||||||
/* Say hello. */
|
/* Say hello. */
|
||||||
printk("Welcome to Atmosph\xe8re Fus\xe9" "e!\n");
|
printk("Welcome to Atmosph\xe8re Fus\xe9" "e!\n");
|
||||||
printk("Using color linear framebuffer at 0x%p!\n", lfb_base);
|
printk("Using color linear framebuffer at 0x%p!\n", lfb_base);
|
||||||
|
|
||||||
/* Try to load the SBK into the security engine, if possible. */
|
/* Try to load the SBK into the security engine, if possible. */
|
||||||
/* TODO: Should this be done later? */
|
/* TODO: Should this be done later? */
|
||||||
load_sbk();
|
load_sbk();
|
||||||
|
|
||||||
/* Load the BCT0 configuration ini off of the SD. */
|
/* Load the BCT0 configuration ini off of the SD. */
|
||||||
bct0 = load_config();
|
bct0 = load_config();
|
||||||
|
|
||||||
/* Load the loader payload into DRAM. */
|
/* Load the loader payload into DRAM. */
|
||||||
stage2_entrypoint = load_stage2(bct0);
|
stage2_entrypoint = load_stage2(bct0);
|
||||||
|
|
||||||
/* Setup argv. */
|
/* Setup argv. */
|
||||||
memset(stage2_argv, 0, STAGE2_ARGC * sizeof(*stage2_argv));
|
memset(stage2_argv, 0, STAGE2_ARGC * sizeof(*stage2_argv));
|
||||||
stage2_argv[STAGE2_ARGV_PROGRAM_PATH] = (void *)stage2_get_program_path();
|
stage2_argv[STAGE2_ARGV_PROGRAM_PATH] = (void *)stage2_get_program_path();
|
||||||
stage2_argv[STAGE2_ARGV_ARGUMENT_STRUCT] = &stage2_argv[STAGE2_ARGC];
|
stage2_argv[STAGE2_ARGV_ARGUMENT_STRUCT] = &stage2_argv[STAGE2_ARGC];
|
||||||
stage2_args_t *args = (stage2_args_t *)stage2_argv[STAGE2_ARGV_ARGUMENT_STRUCT];
|
stage2_args_t *args = (stage2_args_t *)stage2_argv[STAGE2_ARGV_ARGUMENT_STRUCT];
|
||||||
|
|
||||||
/* Setup arguments struct. */
|
/* Setup arguments struct. */
|
||||||
args->version = 0;
|
args->version = 0;
|
||||||
args->bct0 = bct0;
|
args->bct0 = bct0;
|
||||||
@ -103,8 +108,8 @@ int main(void) {
|
|||||||
args->console_col = video_get_col();
|
args->console_col = video_get_col();
|
||||||
args->console_row = video_get_row();
|
args->console_row = video_get_row();
|
||||||
save_sd_state(&args->sd_mmc, &args->sd_fs);
|
save_sd_state(&args->sd_mmc, &args->sd_fs);
|
||||||
|
|
||||||
|
|
||||||
/* Jump to Stage 2. */
|
/* Jump to Stage 2. */
|
||||||
stage2_entrypoint(STAGE2_ARGC, stage2_argv);
|
stage2_entrypoint(STAGE2_ARGC, stage2_argv);
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user