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 4a2095e7..46551c97 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 8916957a..564b085b 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 1512a2ef..d85f9376 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 891ab5d2..3360247b 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 adc87ee9..2607c4b8 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 00228f47..9be55c9a 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 1d20ce19..4fffd6b9 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 48877350..6175623b 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 9f9ce29a..0a791ad1 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 24478726..22e5f3b0 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 34f0d99e..aacc26a5 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 d77c5794..8e32f5d5 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 c20587b2..8e40a45c 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 ae3a9a81..126e6f16 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 39d40107..8a5e1ede 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 72954884..d01ccef8 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 139259d3..47a0a329 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 4017ff14..2ed25aa4 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 70b766c8..c8382ae5 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 1a48f331..ffe97ac7 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 a7974356..71c9dbfa 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 00228f47..9be55c9a 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 3a373829..aa58d603 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 1a9fd22f..b3a90dc6 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 a6e3d619..97b36c95 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 dac90aae..45f0e57a 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 8ee27e30..9198fe3d 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 34f0d99e..aacc26a5 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 {