From bb2b339b546e760287b4849963e940572f4ea30e Mon Sep 17 00:00:00 2001 From: CTCaer Date: Sun, 14 Jun 2020 13:17:26 +0300 Subject: [PATCH] ianos: Remove sd (un)mount usage --- bootloader/ianos/ianos.c | 18 +++++------------- bootloader/ianos/ianos.h | 2 +- bootloader/main.c | 2 +- bootloader/mem/minerva.c | 6 +++--- nyx/nyx_gui/ianos/ianos.c | 18 +++++------------- nyx/nyx_gui/ianos/ianos.h | 2 +- nyx/nyx_gui/mem/minerva.c | 6 +++--- 7 files changed, 19 insertions(+), 35 deletions(-) diff --git a/bootloader/ianos/ianos.c b/bootloader/ianos/ianos.c index f807404..15f3c30 100644 --- a/bootloader/ianos/ianos.c +++ b/bootloader/ianos/ianos.c @@ -63,26 +63,20 @@ static bool _ianos_read_cb(el_ctx *ctx, void *dest, size_t numberBytes, size_t o } //TODO: Support shared libraries. -uintptr_t ianos_loader(bool sdmount, char *path, elfType_t type, void *moduleConfig) +uintptr_t ianos_loader(char *path, elfType_t type, void *moduleConfig) { + el_ctx ctx; uintptr_t epaddr = 0; - if (sdmount) - { - if (!sd_mount()) - goto elfLoadFinalOut; - } + if (!sd_mount()) + goto elfLoadFinalOut; + // Read library. fileBuf = sd_file_read(path, NULL); - if (sdmount) - sd_end(); - if (!fileBuf) goto elfLoadFinalOut; - - el_ctx ctx; ctx.pread = _ianos_read_cb; if (el_init(&ctx)) @@ -94,7 +88,6 @@ uintptr_t ianos_loader(bool sdmount, char *path, elfType_t type, void *moduleCon case EXEC_ELF: case AR64_ELF: elfBuf = (void *)DRAM_LIB_ADDR; - sd_end(); break; default: elfBuf = malloc(ctx.memsz); // Aligned to 0x10 by default. @@ -123,6 +116,5 @@ elfFreeOut: fileBuf = NULL; elfLoadFinalOut: - return epaddr; } \ No newline at end of file diff --git a/bootloader/ianos/ianos.h b/bootloader/ianos/ianos.h index 74d02c1..d64b329 100644 --- a/bootloader/ianos/ianos.h +++ b/bootloader/ianos/ianos.h @@ -29,6 +29,6 @@ typedef enum KEEP_IN_RAM = (1 << 31) // Shared library mask. } elfType_t; -uintptr_t ianos_loader(bool sdmount, char *path, elfType_t type, void* config); +uintptr_t ianos_loader(char *path, elfType_t type, void* config); #endif \ No newline at end of file diff --git a/bootloader/main.c b/bootloader/main.c index aa7295a..5d81ee6 100644 --- a/bootloader/main.c +++ b/bootloader/main.c @@ -1474,7 +1474,7 @@ void ipl_main() sd_mount(); // Save sdram lp0 config. - if (!ianos_loader(false, "bootloader/sys/libsys_lp0.bso", DRAM_LIB, (void *)sdram_get_params_patched())) + if (!ianos_loader("bootloader/sys/libsys_lp0.bso", DRAM_LIB, (void *)sdram_get_params_patched())) h_cfg.errors |= ERR_LIBSYS_LP0; // Train DRAM and switch to max frequency. diff --git a/bootloader/mem/minerva.c b/bootloader/mem/minerva.c index c399070..e30fa56 100644 --- a/bootloader/mem/minerva.c +++ b/bootloader/mem/minerva.c @@ -45,7 +45,7 @@ u32 minerva_init() if (mtc_cfg->init_done == MTC_INIT_MAGIC) { mtc_cfg->train_mode = OP_PERIODIC_TRAIN; // Retrain if needed. - u32 ep_addr = ianos_loader(false, "bootloader/sys/libsys_minerva.bso", DRAM_LIB, (void *)mtc_cfg); + u32 ep_addr = ianos_loader("bootloader/sys/libsys_minerva.bso", DRAM_LIB, (void *)mtc_cfg); minerva_cfg = (void *)ep_addr; return 0; @@ -58,7 +58,7 @@ u32 minerva_init() mtc_tmp.sdram_id = (fuse_read_odm(4) >> 3) & 0x1F; mtc_tmp.init_done = MTC_NEW_MAGIC; - u32 ep_addr = ianos_loader(false, "bootloader/sys/libsys_minerva.bso", DRAM_LIB, (void *)&mtc_tmp); + u32 ep_addr = ianos_loader("bootloader/sys/libsys_minerva.bso", DRAM_LIB, (void *)&mtc_tmp); // Ensure that Minerva is new. if (mtc_tmp.init_done == MTC_INIT_MAGIC) @@ -79,7 +79,7 @@ u32 minerva_init() mtc_cfg->sdram_id = (fuse_read_odm(4) >> 3) & 0x1F; mtc_cfg->init_done = MTC_NEW_MAGIC; // Initialize mtc table. - u32 ep_addr = ianos_loader(false, "bootloader/sys/libsys_minerva.bso", DRAM_LIB, (void *)mtc_cfg); + u32 ep_addr = ianos_loader("bootloader/sys/libsys_minerva.bso", DRAM_LIB, (void *)mtc_cfg); // Ensure that Minerva is new. if (mtc_cfg->init_done == MTC_INIT_MAGIC) diff --git a/nyx/nyx_gui/ianos/ianos.c b/nyx/nyx_gui/ianos/ianos.c index 0b5a2e6..b574c3f 100644 --- a/nyx/nyx_gui/ianos/ianos.c +++ b/nyx/nyx_gui/ianos/ianos.c @@ -63,26 +63,20 @@ static bool _ianos_read_cb(el_ctx *ctx, void *dest, size_t numberBytes, size_t o } //TODO: Support shared libraries. -uintptr_t ianos_loader(bool sdmount, char *path, elfType_t type, void *moduleConfig) +uintptr_t ianos_loader(char *path, elfType_t type, void *moduleConfig) { + el_ctx ctx; uintptr_t epaddr = 0; - if (sdmount) - { - if (!sd_mount()) - goto elfLoadFinalOut; - } + if (!sd_mount()) + goto elfLoadFinalOut; + // Read library. fileBuf = sd_file_read(path, NULL); - if (sdmount) - sd_end(); - if (!fileBuf) goto elfLoadFinalOut; - - el_ctx ctx; ctx.pread = _ianos_read_cb; if (el_init(&ctx)) @@ -94,7 +88,6 @@ uintptr_t ianos_loader(bool sdmount, char *path, elfType_t type, void *moduleCon case EXEC_ELF: case AR64_ELF: elfBuf = (void *)DRAM_LIB_ADDR; - sd_end; break; default: elfBuf = malloc(ctx.memsz); // Aligned to 0x10 by default. @@ -123,6 +116,5 @@ elfFreeOut: fileBuf = NULL; elfLoadFinalOut: - return epaddr; } \ No newline at end of file diff --git a/nyx/nyx_gui/ianos/ianos.h b/nyx/nyx_gui/ianos/ianos.h index 74d02c1..d64b329 100644 --- a/nyx/nyx_gui/ianos/ianos.h +++ b/nyx/nyx_gui/ianos/ianos.h @@ -29,6 +29,6 @@ typedef enum KEEP_IN_RAM = (1 << 31) // Shared library mask. } elfType_t; -uintptr_t ianos_loader(bool sdmount, char *path, elfType_t type, void* config); +uintptr_t ianos_loader(char *path, elfType_t type, void* config); #endif \ No newline at end of file diff --git a/nyx/nyx_gui/mem/minerva.c b/nyx/nyx_gui/mem/minerva.c index c399070..e30fa56 100644 --- a/nyx/nyx_gui/mem/minerva.c +++ b/nyx/nyx_gui/mem/minerva.c @@ -45,7 +45,7 @@ u32 minerva_init() if (mtc_cfg->init_done == MTC_INIT_MAGIC) { mtc_cfg->train_mode = OP_PERIODIC_TRAIN; // Retrain if needed. - u32 ep_addr = ianos_loader(false, "bootloader/sys/libsys_minerva.bso", DRAM_LIB, (void *)mtc_cfg); + u32 ep_addr = ianos_loader("bootloader/sys/libsys_minerva.bso", DRAM_LIB, (void *)mtc_cfg); minerva_cfg = (void *)ep_addr; return 0; @@ -58,7 +58,7 @@ u32 minerva_init() mtc_tmp.sdram_id = (fuse_read_odm(4) >> 3) & 0x1F; mtc_tmp.init_done = MTC_NEW_MAGIC; - u32 ep_addr = ianos_loader(false, "bootloader/sys/libsys_minerva.bso", DRAM_LIB, (void *)&mtc_tmp); + u32 ep_addr = ianos_loader("bootloader/sys/libsys_minerva.bso", DRAM_LIB, (void *)&mtc_tmp); // Ensure that Minerva is new. if (mtc_tmp.init_done == MTC_INIT_MAGIC) @@ -79,7 +79,7 @@ u32 minerva_init() mtc_cfg->sdram_id = (fuse_read_odm(4) >> 3) & 0x1F; mtc_cfg->init_done = MTC_NEW_MAGIC; // Initialize mtc table. - u32 ep_addr = ianos_loader(false, "bootloader/sys/libsys_minerva.bso", DRAM_LIB, (void *)mtc_cfg); + u32 ep_addr = ianos_loader("bootloader/sys/libsys_minerva.bso", DRAM_LIB, (void *)mtc_cfg); // Ensure that Minerva is new. if (mtc_cfg->init_done == MTC_INIT_MAGIC)