From cc54df87d7f3b8954378296c6e85df5aa130b927 Mon Sep 17 00:00:00 2001 From: Dave Murphy Date: Fri, 8 May 2020 23:32:44 +0100 Subject: [PATCH] fixes for compiling with gcc 10 gcc 10 no longer lets you get away with not externing global variables in header files. This adds the necessary extern and adds defines in appropriate c files --- bootloader/gfx/gfx.c | 4 ++++ bootloader/gfx/gfx.h | 4 ++-- bootloader/hos/pkg2.c | 4 ++++ bootloader/hos/pkg2.h | 6 +++--- bootloader/mem/minerva.c | 1 + bootloader/mem/minerva.h | 2 +- bootloader/storage/emummc.c | 2 ++ bootloader/storage/emummc.h | 2 +- bootloader/storage/nx_sd.c | 5 +++++ bootloader/storage/nx_sd.h | 6 +++--- bootloader/storage/sdmmc.h | 2 +- bootloader/storage/sdmmc_driver.c | 2 ++ nyx/nyx_gui/frontend/gui.c | 22 ++++++++++++++++++++ nyx/nyx_gui/frontend/gui.h | 30 +++++++++++++-------------- nyx/nyx_gui/frontend/gui_emmc_tools.c | 2 ++ nyx/nyx_gui/frontend/gui_tools.h | 2 +- nyx/nyx_gui/gfx/gfx.c | 4 ++++ nyx/nyx_gui/gfx/gfx.h | 4 ++-- nyx/nyx_gui/hos/pkg2.c | 4 ++++ nyx/nyx_gui/hos/pkg2.h | 6 +++--- nyx/nyx_gui/mem/minerva.c | 2 ++ nyx/nyx_gui/mem/minerva.h | 2 +- nyx/nyx_gui/storage/nx_emmc.c | 4 ++++ nyx/nyx_gui/storage/nx_emmc.h | 6 +++--- nyx/nyx_gui/storage/nx_sd.c | 4 ++++ nyx/nyx_gui/storage/nx_sd.h | 6 +++--- nyx/nyx_gui/storage/sdmmc.c | 2 ++ nyx/nyx_gui/storage/sdmmc.h | 2 +- 28 files changed, 102 insertions(+), 40 deletions(-) diff --git a/bootloader/gfx/gfx.c b/bootloader/gfx/gfx.c index 4a2095e..46551c9 100644 --- a/bootloader/gfx/gfx.c +++ b/bootloader/gfx/gfx.c @@ -19,6 +19,10 @@ #include #include "gfx.h" +// Global gfx console and context. +gfx_ctxt_t gfx_ctxt; +gfx_con_t gfx_con; + static const u8 _gfx_font[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Char 032 ( ) 0x00, 0x30, 0x30, 0x18, 0x18, 0x00, 0x0C, 0x00, // Char 033 (!) diff --git a/bootloader/gfx/gfx.h b/bootloader/gfx/gfx.h index 8916957..564b085 100644 --- a/bootloader/gfx/gfx.h +++ b/bootloader/gfx/gfx.h @@ -49,7 +49,7 @@ void gfx_set_rect_argb(const u32 *buf, u32 size_x, u32 size_y, u32 pos_x, u32 po void gfx_render_bmp_argb(const u32 *buf, u32 size_x, u32 size_y, u32 pos_x, u32 pos_y); // Global gfx console and context. -gfx_ctxt_t gfx_ctxt; -gfx_con_t gfx_con; +extern gfx_ctxt_t gfx_ctxt; +extern gfx_con_t gfx_con; #endif diff --git a/bootloader/hos/pkg2.c b/bootloader/hos/pkg2.c index 1512a2e..d85f937 100644 --- a/bootloader/hos/pkg2.c +++ b/bootloader/hos/pkg2.c @@ -36,6 +36,10 @@ extern hekate_config h_cfg; extern const u8 package2_keyseed[]; +u32 pkg2_newkern_ini1_val; +u32 pkg2_newkern_ini1_start; +u32 pkg2_newkern_ini1_end; + #ifdef KIP1_PATCH_DEBUG #include "../utils/util.h" #define DPRINTF(...) gfx_printf(__VA_ARGS__) diff --git a/bootloader/hos/pkg2.h b/bootloader/hos/pkg2.h index 891ab5d..3360247 100644 --- a/bootloader/hos/pkg2.h +++ b/bootloader/hos/pkg2.h @@ -30,9 +30,9 @@ #define PKG2_NEWKERN_GET_INI1_HEURISTIC 0xD2800015 // Offset of OP + 12 is the INI1 offset. #define PKG2_NEWKERN_START 0x800 -u32 pkg2_newkern_ini1_val; -u32 pkg2_newkern_ini1_start; -u32 pkg2_newkern_ini1_end; +extern u32 pkg2_newkern_ini1_val; +extern u32 pkg2_newkern_ini1_start; +extern u32 pkg2_newkern_ini1_end; typedef struct _kernel_patch_t { diff --git a/bootloader/mem/minerva.c b/bootloader/mem/minerva.c index adc87ee..2607c4b 100644 --- a/bootloader/mem/minerva.c +++ b/bootloader/mem/minerva.c @@ -27,6 +27,7 @@ #include "../soc/t210.h" extern volatile nyx_storage_t *nyx_str; +void (*minerva_cfg)(mtc_config_t *mtc_cfg, void *); u32 minerva_init() { diff --git a/bootloader/mem/minerva.h b/bootloader/mem/minerva.h index 00228f4..9be55c9 100644 --- a/bootloader/mem/minerva.h +++ b/bootloader/mem/minerva.h @@ -57,7 +57,7 @@ typedef enum FREQ_1600 = 1600000 } minerva_freq_t; -void (*minerva_cfg)(mtc_config_t *mtc_cfg, void *); +extern void (*minerva_cfg)(mtc_config_t *mtc_cfg, void *); u32 minerva_init(); void minerva_change_freq(minerva_freq_t freq); void minerva_periodic_training(); diff --git a/bootloader/storage/emummc.c b/bootloader/storage/emummc.c index 1d20ce1..4fffd6b 100644 --- a/bootloader/storage/emummc.c +++ b/bootloader/storage/emummc.c @@ -29,6 +29,8 @@ #include "../utils/types.h" extern hekate_config h_cfg; +emummc_cfg_t emu_cfg; + void emummc_load_cfg() { diff --git a/bootloader/storage/emummc.h b/bootloader/storage/emummc.h index 4887735..6175623 100644 --- a/bootloader/storage/emummc.h +++ b/bootloader/storage/emummc.h @@ -47,7 +47,7 @@ typedef struct _emummc_cfg_t int fs_ver; } emummc_cfg_t; -emummc_cfg_t emu_cfg; +extern emummc_cfg_t emu_cfg; void emummc_load_cfg(); bool emummc_set_path(char *path); diff --git a/bootloader/storage/nx_sd.c b/bootloader/storage/nx_sd.c index 9f9ce29..0a791ad 100644 --- a/bootloader/storage/nx_sd.c +++ b/bootloader/storage/nx_sd.c @@ -25,6 +25,11 @@ static bool sd_mounted = false; static u32 sd_mode = SD_UHS_SDR82; + +sdmmc_t sd_sdmmc; +sdmmc_storage_t sd_storage; +FATFS sd_fs; + u32 sd_get_mode() { return sd_mode; diff --git a/bootloader/storage/nx_sd.h b/bootloader/storage/nx_sd.h index 2447872..22e5f3b 100644 --- a/bootloader/storage/nx_sd.h +++ b/bootloader/storage/nx_sd.h @@ -30,9 +30,9 @@ enum SD_UHS_SDR82 = 3, }; -sdmmc_t sd_sdmmc; -sdmmc_storage_t sd_storage; -FATFS sd_fs; +extern sdmmc_t sd_sdmmc; +extern sdmmc_storage_t sd_storage; +extern FATFS sd_fs; u32 sd_get_mode(); int sd_init_retry(bool power_cycle); diff --git a/bootloader/storage/sdmmc.h b/bootloader/storage/sdmmc.h index 34f0d99..aacc26a 100644 --- a/bootloader/storage/sdmmc.h +++ b/bootloader/storage/sdmmc.h @@ -21,7 +21,7 @@ #include "../utils/types.h" #include "sdmmc_driver.h" -u32 sd_power_cycle_time_start; +extern u32 sd_power_cycle_time_start; typedef enum _sdmmc_type { diff --git a/bootloader/storage/sdmmc_driver.c b/bootloader/storage/sdmmc_driver.c index d77c579..8e32f5d 100644 --- a/bootloader/storage/sdmmc_driver.c +++ b/bootloader/storage/sdmmc_driver.c @@ -32,6 +32,8 @@ //#define DPRINTF(...) gfx_printf(__VA_ARGS__) #define DPRINTF(...) +u32 sd_power_cycle_time_start; + /*! SCMMC controller base addresses. */ static const u32 _sdmmc_bases[4] = { 0x700B0000, diff --git a/nyx/nyx_gui/frontend/gui.c b/nyx/nyx_gui/frontend/gui.c index c20587b..8e40a45 100644 --- a/nyx/nyx_gui/frontend/gui.c +++ b/nyx/nyx_gui/frontend/gui.c @@ -59,6 +59,28 @@ extern lv_res_t launch_payload(lv_obj_t *list); static bool disp_init_done = false; static bool do_reload = false; +lv_style_t hint_small_style; +lv_style_t hint_small_style_white; +lv_style_t monospace_text; + +lv_obj_t *payload_list; +lv_obj_t *autorcm_btn; +lv_obj_t *close_btn; + +lv_img_dsc_t *icon_switch; +lv_img_dsc_t *icon_payload; +lv_img_dsc_t *icon_lakka; + +lv_img_dsc_t *hekate_bg; + +lv_style_t btn_transp_rel, btn_transp_pr, btn_transp_tgl_rel, btn_transp_tgl_pr; +lv_style_t ddlist_transp_bg, ddlist_transp_sel; +lv_style_t tabview_btn_pr, tabview_btn_tgl_pr; + +lv_style_t mbox_darken; + +char *text_color; + typedef struct _gui_status_bar_ctx { lv_obj_t *mid; diff --git a/nyx/nyx_gui/frontend/gui.h b/nyx/nyx_gui/frontend/gui.h index ae3a9a8..126e6f1 100644 --- a/nyx/nyx_gui/frontend/gui.h +++ b/nyx/nyx_gui/frontend/gui.h @@ -34,27 +34,27 @@ typedef struct _emmc_tool_gui_t bool raw_emummc; } emmc_tool_gui_t; -lv_style_t hint_small_style; -lv_style_t hint_small_style_white; -lv_style_t monospace_text; +extern lv_style_t hint_small_style; +extern lv_style_t hint_small_style_white; +extern lv_style_t monospace_text; -lv_obj_t *payload_list; -lv_obj_t *autorcm_btn; -lv_obj_t *close_btn; +extern lv_obj_t *payload_list; +extern lv_obj_t *autorcm_btn; +extern lv_obj_t *close_btn; -lv_img_dsc_t *icon_switch; -lv_img_dsc_t *icon_payload; -lv_img_dsc_t *icon_lakka; +extern lv_img_dsc_t *icon_switch; +extern lv_img_dsc_t *icon_payload; +extern lv_img_dsc_t *icon_lakka; -lv_img_dsc_t *hekate_bg; +extern lv_img_dsc_t *hekate_bg; -lv_style_t btn_transp_rel, btn_transp_pr, btn_transp_tgl_rel, btn_transp_tgl_pr; -lv_style_t ddlist_transp_bg, ddlist_transp_sel; -lv_style_t tabview_btn_pr, tabview_btn_tgl_pr; +extern lv_style_t btn_transp_rel, btn_transp_pr, btn_transp_tgl_rel, btn_transp_tgl_pr; +extern lv_style_t ddlist_transp_bg, ddlist_transp_sel; +extern lv_style_t tabview_btn_pr, tabview_btn_tgl_pr; -lv_style_t mbox_darken; +extern lv_style_t mbox_darken; -char *text_color; +extern char *text_color; void reload_nyx(); lv_img_dsc_t *bmp_to_lvimg_obj(const char *path); diff --git a/nyx/nyx_gui/frontend/gui_emmc_tools.c b/nyx/nyx_gui/frontend/gui_emmc_tools.c index 39d4010..8a5e1ed 100644 --- a/nyx/nyx_gui/frontend/gui_emmc_tools.c +++ b/nyx/nyx_gui/frontend/gui_emmc_tools.c @@ -39,6 +39,8 @@ extern hekate_config h_cfg; extern void emmcsn_path_impl(char *path, char *sub_dir, char *filename, sdmmc_storage_t *storage); +lv_obj_t *ums_mbox; + typedef struct _emmc_backup_buttons_t { lv_obj_t *emmc_boot; diff --git a/nyx/nyx_gui/frontend/gui_tools.h b/nyx/nyx_gui/frontend/gui_tools.h index 7295488..d01ccef 100644 --- a/nyx/nyx_gui/frontend/gui_tools.h +++ b/nyx/nyx_gui/frontend/gui_tools.h @@ -19,7 +19,7 @@ #include "../libs/lvgl/lvgl.h" -lv_obj_t *ums_mbox; +extern lv_obj_t *ums_mbox; void create_tab_tools(lv_theme_t *th, lv_obj_t *parent); void nyx_run_ums(void *param); diff --git a/nyx/nyx_gui/gfx/gfx.c b/nyx/nyx_gui/gfx/gfx.c index 139259d..47a0a32 100644 --- a/nyx/nyx_gui/gfx/gfx.c +++ b/nyx/nyx_gui/gfx/gfx.c @@ -19,6 +19,10 @@ #include #include "gfx.h" +// Global gfx console and context. +gfx_ctxt_t gfx_ctxt; +gfx_con_t gfx_con; + static const u8 _gfx_font[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Char 032 ( ) 0x00, 0x30, 0x30, 0x18, 0x18, 0x00, 0x0C, 0x00, // Char 033 (!) diff --git a/nyx/nyx_gui/gfx/gfx.h b/nyx/nyx_gui/gfx/gfx.h index 4017ff1..2ed25aa 100644 --- a/nyx/nyx_gui/gfx/gfx.h +++ b/nyx/nyx_gui/gfx/gfx.h @@ -44,7 +44,7 @@ void gfx_set_rect_land_pitch(u32 *fb, const u32 *buf, u32 stride, u32 pos_x, u32 void gfx_set_rect_land_block(u32 *fb, const u32 *buf, u32 pos_x, u32 pos_y, u32 pos_x2, u32 pos_y2); // Global gfx console and context. -gfx_ctxt_t gfx_ctxt; -gfx_con_t gfx_con; +extern gfx_ctxt_t gfx_ctxt; +extern gfx_con_t gfx_con; #endif diff --git a/nyx/nyx_gui/hos/pkg2.c b/nyx/nyx_gui/hos/pkg2.c index 70b766c..c8382ae 100644 --- a/nyx/nyx_gui/hos/pkg2.c +++ b/nyx/nyx_gui/hos/pkg2.c @@ -30,6 +30,10 @@ extern const u8 package2_keyseed[]; +u32 pkg2_newkern_ini1_val; +u32 pkg2_newkern_ini1_start; +u32 pkg2_newkern_ini1_end; + /*#include "util.h" #define DPRINTF(...) gfx_printf(__VA_ARGS__) #define DEBUG_PRINTING*/ diff --git a/nyx/nyx_gui/hos/pkg2.h b/nyx/nyx_gui/hos/pkg2.h index 1a48f33..ffe97ac 100644 --- a/nyx/nyx_gui/hos/pkg2.h +++ b/nyx/nyx_gui/hos/pkg2.h @@ -30,9 +30,9 @@ #define PKG2_NEWKERN_GET_INI1_HEURISTIC 0xD2800015 // Offset of OP + 12 is the INI1 offset. #define PKG2_NEWKERN_START 0x800 -u32 pkg2_newkern_ini1_val; -u32 pkg2_newkern_ini1_start; -u32 pkg2_newkern_ini1_end; +extern u32 pkg2_newkern_ini1_val; +extern u32 pkg2_newkern_ini1_start; +extern u32 pkg2_newkern_ini1_end; typedef struct _pkg2_hdr_t { diff --git a/nyx/nyx_gui/mem/minerva.c b/nyx/nyx_gui/mem/minerva.c index a797435..71c9dbf 100644 --- a/nyx/nyx_gui/mem/minerva.c +++ b/nyx/nyx_gui/mem/minerva.c @@ -28,6 +28,8 @@ extern volatile nyx_storage_t *nyx_str; +void (*minerva_cfg)(mtc_config_t *mtc_cfg, void *); + u32 minerva_init() { u32 curr_ram_idx = 0; diff --git a/nyx/nyx_gui/mem/minerva.h b/nyx/nyx_gui/mem/minerva.h index 00228f4..9be55c9 100644 --- a/nyx/nyx_gui/mem/minerva.h +++ b/nyx/nyx_gui/mem/minerva.h @@ -57,7 +57,7 @@ typedef enum FREQ_1600 = 1600000 } minerva_freq_t; -void (*minerva_cfg)(mtc_config_t *mtc_cfg, void *); +extern void (*minerva_cfg)(mtc_config_t *mtc_cfg, void *); u32 minerva_init(); void minerva_change_freq(minerva_freq_t freq); void minerva_periodic_training(); diff --git a/nyx/nyx_gui/storage/nx_emmc.c b/nyx/nyx_gui/storage/nx_emmc.c index 3a37382..aa58d60 100644 --- a/nyx/nyx_gui/storage/nx_emmc.c +++ b/nyx/nyx_gui/storage/nx_emmc.c @@ -21,6 +21,10 @@ #include "../mem/heap.h" #include "../utils/list.h" +sdmmc_t emmc_sdmmc; +sdmmc_storage_t emmc_storage; +FATFS emmc_fs; + void nx_emmc_gpt_parse(link_t *gpt, sdmmc_storage_t *storage) { gpt_t *gpt_buf = (gpt_t *)calloc(NX_GPT_NUM_BLOCKS, NX_EMMC_BLOCKSIZE); diff --git a/nyx/nyx_gui/storage/nx_emmc.h b/nyx/nyx_gui/storage/nx_emmc.h index 1a9fd22..b3a90dc 100644 --- a/nyx/nyx_gui/storage/nx_emmc.h +++ b/nyx/nyx_gui/storage/nx_emmc.h @@ -36,9 +36,9 @@ typedef struct _emmc_part_t link_t link; } emmc_part_t; -sdmmc_t emmc_sdmmc; -sdmmc_storage_t emmc_storage; -FATFS emmc_fs; +extern sdmmc_t emmc_sdmmc; +extern sdmmc_storage_t emmc_storage; +extern FATFS emmc_fs; void nx_emmc_gpt_parse(link_t *gpt, sdmmc_storage_t *storage); void nx_emmc_gpt_free(link_t *gpt); diff --git a/nyx/nyx_gui/storage/nx_sd.c b/nyx/nyx_gui/storage/nx_sd.c index a6e3d61..97b36c9 100644 --- a/nyx/nyx_gui/storage/nx_sd.c +++ b/nyx/nyx_gui/storage/nx_sd.c @@ -27,6 +27,10 @@ static bool sd_init_done = false; static u16 sd_errors[3] = { 0 }; // Init and Read/Write errors. static u32 sd_mode = SD_UHS_SDR104; +sdmmc_t sd_sdmmc; +sdmmc_storage_t sd_storage; +FATFS sd_fs; + void sd_error_count_increment(u8 type) { switch (type) diff --git a/nyx/nyx_gui/storage/nx_sd.h b/nyx/nyx_gui/storage/nx_sd.h index dac90aa..45f0e57 100644 --- a/nyx/nyx_gui/storage/nx_sd.h +++ b/nyx/nyx_gui/storage/nx_sd.h @@ -38,9 +38,9 @@ enum SD_ERROR_RW_RETRY = 2 }; -sdmmc_t sd_sdmmc; -sdmmc_storage_t sd_storage; -FATFS sd_fs; +extern sdmmc_t sd_sdmmc; +extern sdmmc_storage_t sd_storage; +extern FATFS sd_fs; void sd_error_count_increment(u8 type); u16 *sd_get_error_count(); diff --git a/nyx/nyx_gui/storage/sdmmc.c b/nyx/nyx_gui/storage/sdmmc.c index 8ee27e3..9198fe3 100644 --- a/nyx/nyx_gui/storage/sdmmc.c +++ b/nyx/nyx_gui/storage/sdmmc.c @@ -28,6 +28,8 @@ //#define DPRINTF(...) gfx_printf(__VA_ARGS__) #define DPRINTF(...) +u32 sd_power_cycle_time_start; + static inline u32 unstuff_bits(u32 *resp, u32 start, u32 size) { const u32 mask = (size < 32 ? 1 << size : 0) - 1; diff --git a/nyx/nyx_gui/storage/sdmmc.h b/nyx/nyx_gui/storage/sdmmc.h index 34f0d99..aacc26a 100644 --- a/nyx/nyx_gui/storage/sdmmc.h +++ b/nyx/nyx_gui/storage/sdmmc.h @@ -21,7 +21,7 @@ #include "../utils/types.h" #include "sdmmc_driver.h" -u32 sd_power_cycle_time_start; +extern u32 sd_power_cycle_time_start; typedef enum _sdmmc_type {