/* * Copyright (c) 2018-2019 Atmosphère-NX * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, * version 2, as published by the Free Software Foundation. * * This program is distributed in the hope it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef FUSEE_LOADER_H #define FUSEE_LOADER_H #include "utils.h" #include "chainloader.h" #define LOADER_MAX_PATH_SIZE 255 typedef struct { char path[0x100]; const char *key; uintptr_t load_address; size_t load_size; } load_file_t; typedef struct { const char *bct0; uintptr_t chainload_entrypoint; size_t file_id_of_entrypoint; size_t nb_files_to_load; char package2_path[LOADER_MAX_PATH_SIZE+1]; char exosphere_path[LOADER_MAX_PATH_SIZE+1]; char tsecfw_path[LOADER_MAX_PATH_SIZE+1]; char warmboot_path[LOADER_MAX_PATH_SIZE+1]; char custom_splash_path[LOADER_MAX_PATH_SIZE+1]; char file_paths_to_load[CHAINLOADER_MAX_ENTRIES][LOADER_MAX_PATH_SIZE+1]; } loader_ctx_t; #define LOADER_ENTRYPOINT_KEY "entrypoint" #define LOADER_LOADLIST_KEY "loadlist" #define LOADER_CUSTOMSPLASH_KEY "custom_splash" #define LOADER_PACKAGE2_KEY "package2" #define LOADER_EXOSPHERE_KEY "exosphere" #define LOADER_TSECFW_KEY "tsecfw" #define LOADER_WARMBOOT_KEY "warmboot" /* TODO: Should we allow files bigger than 16 MB? */ //#define LOADER_FILESIZE_MAX 0x01000000 loader_ctx_t *get_loader_ctx(void); void load_payload(const char *bct0); #endif