diff --git a/decompressor/main.c b/decompressor/main.c index 1efb2b6e..bf25012f 100644 --- a/decompressor/main.c +++ b/decompressor/main.c @@ -1,9 +1,9 @@ #include #include +#include #include -__attribute__((noreturn)) -void entry(uint8_t *compressed_stage2, size_t stage2_size, uint8_t boot_drive, int pxe) { +noreturn void entry(uint8_t *compressed_stage2, size_t stage2_size, uint8_t boot_drive, int pxe) { // The decompressor should decompress compressed_stage2 to address 0x8000. uint8_t *dest = (uint8_t *)0x8000; diff --git a/stage23/entry.s2.c b/stage23/entry.s2.c index 21544b05..7a1a13b9 100644 --- a/stage23/entry.s2.c +++ b/stage23/entry.s2.c @@ -1,3 +1,7 @@ +#include +#include +#include +#include #include #include #include @@ -73,8 +77,7 @@ enum { BOOTED_FROM_CD }; -__attribute__((noreturn)) -void entry(uint8_t boot_drive, int boot_from) { +noreturn void entry(uint8_t boot_drive, int boot_from) { // XXX DO NOT MOVE A20 ENABLE CALL if (!a20_enable()) panic(false, "Could not enable A20 line"); diff --git a/stage23/entry.s3.c b/stage23/entry.s3.c index 08a4edec..875d6266 100644 --- a/stage23/entry.s3.c +++ b/stage23/entry.s3.c @@ -1,3 +1,6 @@ +#include +#include +#include #include #include #include @@ -43,8 +46,7 @@ EFI_STATUS efi_main( #endif } -__attribute__((noreturn)) -void uefi_entry(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable) { +noreturn void uefi_entry(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable) { gST = SystemTable; gBS = SystemTable->BootServices; gRT = SystemTable->RuntimeServices; @@ -124,8 +126,7 @@ void uefi_entry(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable) { } #endif -__attribute__((noreturn)) -void stage3_common(void) { +noreturn void stage3_common(void) { init_flush_irqs(); init_io_apics(); diff --git a/stage23/lib/blib.h b/stage23/lib/blib.h index 6b200407..ee19df71 100644 --- a/stage23/lib/blib.h +++ b/stage23/lib/blib.h @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -48,7 +49,7 @@ int digit_to_int(char c); uint8_t bcd_to_int(uint8_t val); uint8_t int_to_bcd(uint8_t val); -__attribute__((noreturn)) void panic(bool allow_menu, const char *fmt, ...); +noreturn void panic(bool allow_menu, const char *fmt, ...); int pit_sleep_and_quit_on_keypress(int seconds); @@ -80,9 +81,9 @@ void memcpy32to64(uint64_t, uint64_t, uint64_t); typedef char symbol[]; -__attribute__((noreturn)) void stage3_common(void); +noreturn void stage3_common(void); -__attribute__((noreturn)) void common_spinup(void *fnptr, int args, ...); +noreturn void common_spinup(void *fnptr, int args, ...); #define no_unwind __attribute__((section(".no_unwind"))) diff --git a/stage23/lib/panic.s2.c b/stage23/lib/panic.s2.c index 20149836..8c841d60 100644 --- a/stage23/lib/panic.s2.c +++ b/stage23/lib/panic.s2.c @@ -1,5 +1,6 @@ #include #include +#include #include #include #include @@ -107,7 +108,7 @@ void fallback_get_cursor_pos(size_t *x, size_t *y) { } #endif -__attribute__((noreturn)) void panic(bool allow_menu, const char *fmt, ...) { +noreturn void panic(bool allow_menu, const char *fmt, ...) { va_list args; va_start(args, fmt); diff --git a/stage23/lib/real.h b/stage23/lib/real.h index 94a150a5..07f20eab 100644 --- a/stage23/lib/real.h +++ b/stage23/lib/real.h @@ -2,6 +2,7 @@ #define __LIB__REAL_H__ #include +#include #define rm_seg(x) ((uint16_t)(((int)x & 0xffff0) >> 4)) #define rm_off(x) ((uint16_t)(((int)x & 0x0000f) >> 0)) @@ -28,6 +29,6 @@ struct rm_regs { void rm_int(uint8_t int_no, struct rm_regs *out_regs, struct rm_regs *in_regs); -__attribute__((noreturn)) void rm_hcf(void); +noreturn void rm_hcf(void); #endif diff --git a/stage23/menu.c b/stage23/menu.c index b978fd7e..a4617676 100644 --- a/stage23/menu.c +++ b/stage23/menu.c @@ -1,6 +1,7 @@ #include #include #include +#include #include #include #include @@ -537,8 +538,8 @@ __attribute__((used)) static uintptr_t stack_at_first_entry = 0; #endif -__attribute__((noreturn, naked)) -void menu(__attribute__((unused)) bool timeout_enabled) { +__attribute__((naked)) +noreturn void menu(__attribute__((unused)) bool timeout_enabled) { #if defined (__i386__) asm volatile ( "pop %eax\n\t" @@ -592,8 +593,8 @@ extern symbol s2_data_begin; extern symbol s2_data_end; #endif -__attribute__((noreturn, used)) -static void _menu(bool timeout_enabled) { +__attribute__((used)) +static noreturn void _menu(bool timeout_enabled) { size_t data_size = (uintptr_t)data_end - (uintptr_t)data_begin; #if bios == 1 size_t s2_data_size = (uintptr_t)s2_data_end - (uintptr_t)s2_data_begin; @@ -867,8 +868,7 @@ timeout_aborted: } } -__attribute__((noreturn)) -void boot(char *config) { +noreturn void boot(char *config) { char *cmdline = config_get_value(config, 0, "KERNEL_CMDLINE"); if (!cmdline) { cmdline = config_get_value(config, 0, "CMDLINE"); diff --git a/stage23/menu.h b/stage23/menu.h index bd0c2b67..73f8a5b5 100644 --- a/stage23/menu.h +++ b/stage23/menu.h @@ -2,12 +2,11 @@ #define __MENU_H__ #include +#include -__attribute__((noreturn)) -void menu(bool timeout_enabled); +noreturn void menu(bool timeout_enabled); -__attribute__((noreturn)) -void boot(char *config); +noreturn void boot(char *config); char *config_entry_editor(const char *title, const char *orig_entry); diff --git a/stage23/protos/linux.32.c b/stage23/protos/linux.32.c index c5a9daaf..ac40ce1e 100644 --- a/stage23/protos/linux.32.c +++ b/stage23/protos/linux.32.c @@ -1,6 +1,8 @@ +#include +#include #include -__attribute__((noreturn)) void linux_spinup(void *entry, void *boot_params) { +noreturn void linux_spinup(void *entry, void *boot_params) { struct gdt_desc linux_gdt_descs[4]; linux_gdt_descs[0] = (struct gdt_desc){0}; linux_gdt_descs[1] = (struct gdt_desc){0}; diff --git a/stage23/protos/linux.c b/stage23/protos/linux.c index 817d0bb2..9c962f8d 100644 --- a/stage23/protos/linux.c +++ b/stage23/protos/linux.c @@ -1,5 +1,6 @@ #include #include +#include #include #include #include @@ -16,7 +17,7 @@ #include #include -__attribute__((noreturn)) void linux_spinup(void *entry, void *boot_params); +noreturn void linux_spinup(void *entry, void *boot_params); // The following definitions and struct were copied and adapted from Linux // kernel headers released under GPL-2.0 WITH Linux-syscall-note diff --git a/stage23/protos/multiboot1.32.c b/stage23/protos/multiboot1.32.c index c6fda4f6..e4b77d19 100644 --- a/stage23/protos/multiboot1.32.c +++ b/stage23/protos/multiboot1.32.c @@ -1,13 +1,13 @@ #include #include #include +#include #include #if bios == 1 # include #endif -__attribute__((noreturn)) void multiboot1_spinup_32( - uint32_t entry_point, uint32_t multiboot1_info) { +noreturn void multiboot1_spinup_32(uint32_t entry_point, uint32_t multiboot1_info) { #if bios == 1 struct idtr idtr; diff --git a/stage23/protos/multiboot1.c b/stage23/protos/multiboot1.c index dbdbacca..c57b8997 100644 --- a/stage23/protos/multiboot1.c +++ b/stage23/protos/multiboot1.c @@ -1,5 +1,6 @@ #include #include +#include #include #include #include @@ -17,9 +18,7 @@ #include #include -__attribute__((noreturn)) void multiboot1_spinup_32( - uint32_t entry_point, - uint32_t multiboot1_info); +noreturn void multiboot1_spinup_32(uint32_t entry_point, uint32_t multiboot1_info); bool multiboot1_load(char *config, char *cmdline) { struct file_handle *kernel_file; diff --git a/stage23/protos/multiboot2.32.c b/stage23/protos/multiboot2.32.c index 1991e378..c61207a2 100644 --- a/stage23/protos/multiboot2.32.c +++ b/stage23/protos/multiboot2.32.c @@ -1,13 +1,13 @@ #include #include #include +#include #include #if bios == 1 # include #endif -__attribute__((noreturn)) void multiboot2_spinup_32( - uint32_t entry_point, uint32_t multiboot2_info) { +noreturn void multiboot2_spinup_32(uint32_t entry_point, uint32_t multiboot2_info) { #if bios == 1 struct idtr idtr; diff --git a/stage23/protos/multiboot2.h b/stage23/protos/multiboot2.h index d02cfcca..5be4108d 100644 --- a/stage23/protos/multiboot2.h +++ b/stage23/protos/multiboot2.h @@ -24,8 +24,9 @@ #include #include +#include -bool multiboot2_load(char *config, char* cmdline); +bool multiboot2_load(char *config, char *cmdline); /* How many bytes from the start of the file we search for the header. */ #define MULTIBOOT_SEARCH 32768 @@ -415,7 +416,6 @@ struct multiboot_tag_load_base_addr uint32_t load_base_addr; }; -__attribute__((noreturn)) void multiboot2_spinup_32( - uint32_t entry_point, uint32_t multiboot1_info); +noreturn void multiboot2_spinup_32(uint32_t entry_point, uint32_t multiboot1_info); #endif diff --git a/stage23/protos/stivale.32.c b/stage23/protos/stivale.32.c index 17d13009..ed06a5f2 100644 --- a/stage23/protos/stivale.32.c +++ b/stage23/protos/stivale.32.c @@ -1,9 +1,10 @@ #include #include #include +#include #include -__attribute__((noreturn)) void stivale_spinup_32( +noreturn void stivale_spinup_32( int bits, bool level5pg, bool enable_nx, uint32_t pagemap_top_lv, uint32_t entry_point_lo, uint32_t entry_point_hi, uint32_t stivale_struct_lo, uint32_t stivale_struct_hi, diff --git a/stage23/protos/stivale.c b/stage23/protos/stivale.c index 30cf8706..8c9e9639 100644 --- a/stage23/protos/stivale.c +++ b/stage23/protos/stivale.c @@ -1,6 +1,7 @@ #include #include #include +#include #include #include #include @@ -461,13 +462,13 @@ pagemap_t stivale_build_pagemap(bool level5pg, bool unmap_null, struct elf_range extern symbol ImageBase; #endif -__attribute__((noreturn)) void stivale_spinup_32( +noreturn void stivale_spinup_32( int bits, bool level5pg, uint32_t pagemap_top_lv, uint32_t entry_point_lo, uint32_t entry_point_hi, uint32_t stivale_struct_lo, uint32_t stivale_struct_hi, uint32_t stack_lo, uint32_t stack_hi, uint32_t local_gdt); -__attribute__((noreturn)) void stivale_spinup( +noreturn void stivale_spinup( int bits, bool level5pg, pagemap_t *pagemap, uint64_t entry_point, uint64_t _stivale_struct, uint64_t stack, bool enable_nx, uint32_t local_gdt) { diff --git a/stage23/protos/stivale.h b/stage23/protos/stivale.h index cb743e7c..9b7e8e67 100644 --- a/stage23/protos/stivale.h +++ b/stage23/protos/stivale.h @@ -3,6 +3,7 @@ #include #include +#include #include #include @@ -13,7 +14,7 @@ bool stivale_load_by_anchor(void **_anchor, const char *magic, pagemap_t stivale_build_pagemap(bool level5pg, bool unmap_null, struct elf_range *ranges, size_t ranges_count, bool want_fully_virtual, uint64_t physical_base, uint64_t virtual_base, uint64_t direct_map_offset); -__attribute__((noreturn)) void stivale_spinup( +noreturn void stivale_spinup( int bits, bool level5pg, pagemap_t *pagemap, uint64_t entry_point, uint64_t stivale_struct, uint64_t stack, bool enable_nx, uint32_t local_gdt);