Allow the initcall tables to be emitted using relative references that are only half the size on 64-bit architectures and don't require fixups at runtime on relocatable kernels.
Showing the changes to init (1 of 4 files). Show all
Unified · Split
| @@ -902,18 +902,18 @@ int __init_or_module do_one_initcall(initcall_t fn) · 901 unmodified lines | ||
| 902 | 902 | } |
| 903 | 903 | |
| 904 | 904 | |
| 905 | −extern initcall_t __initcall_start[]; | |
| 906 | −extern initcall_t __initcall0_start[]; | |
| 907 | −extern initcall_t __initcall1_start[]; | |
| 908 | −extern initcall_t __initcall2_start[]; | |
| 909 | −extern initcall_t __initcall3_start[]; | |
| 910 | −extern initcall_t __initcall4_start[]; | |
| 911 | −extern initcall_t __initcall5_start[]; | |
| 912 | −extern initcall_t __initcall6_start[]; | |
| 913 | −extern initcall_t __initcall7_start[]; | |
| 914 | −extern initcall_t __initcall_end[]; | |
| 915 | − | |
| 916 | −static initcall_t *initcall_levels[] __initdata = { | |
| 905 | +extern initcall_entry_t __initcall_start[]; | |
| 906 | +extern initcall_entry_t __initcall0_start[]; | |
| 907 | +extern initcall_entry_t __initcall1_start[]; | |
| 908 | +extern initcall_entry_t __initcall2_start[]; | |
| 909 | +extern initcall_entry_t __initcall3_start[]; | |
| 910 | +extern initcall_entry_t __initcall4_start[]; | |
| 911 | +extern initcall_entry_t __initcall5_start[]; | |
| 912 | +extern initcall_entry_t __initcall6_start[]; | |
| 913 | +extern initcall_entry_t __initcall7_start[]; | |
| 914 | +extern initcall_entry_t __initcall_end[]; | |
| 915 | + | |
| 916 | +static initcall_entry_t *initcall_levels[] __initdata = { | |
| 917 | 917 | __initcall0_start, |
| 918 | 918 | __initcall1_start, |
| 919 | 919 | __initcall2_start, |
| @@ -939,7 +939,7 @@ static char *initcall_level_names[] __initdata = { · 19 unmodified lines | ||
| 939 | 939 | |
| 940 | 940 | static void __init do_initcall_level(int level) |
| 941 | 941 | { |
| 942 | − initcall_t *fn; | |
| 942 | + initcall_entry_t *fn; | |
| 943 | 943 | |
| 944 | 944 | strcpy(initcall_command_line, saved_command_line); |
| 945 | 945 | parse_args(initcall_level_names[level], |
| @@ -950,7 +950,7 @@ static void __init do_initcall_level(int level) · 4 unmodified lines | ||
| 950 | 950 | |
| 951 | 951 | trace_initcall_level(initcall_level_names[level]); |
| 952 | 952 | for (fn = initcall_levels[level]; fn < initcall_levels[level+1]; fn++) |
| 953 | − do_one_initcall(*fn); | |
| 953 | + do_one_initcall(initcall_from_entry(fn)); | |
| 954 | 954 | } |
| 955 | 955 | |
| 956 | 956 | static void __init do_initcalls(void) |
| @@ -981,11 +981,11 @@ static void __init do_basic_setup(void) · 24 unmodified lines | ||
| 981 | 981 | |
| 982 | 982 | static void __init do_pre_smp_initcalls(void) |
| 983 | 983 | { |
| 984 | − initcall_t *fn; | |
| 984 | + initcall_entry_t *fn; | |
| 985 | 985 | |
| 986 | 986 | trace_initcall_level("early"); |
| 987 | 987 | for (fn = __initcall_start; fn < __initcall0_start; fn++) |
| 988 | − do_one_initcall(*fn); | |
| 988 | + do_one_initcall(initcall_from_entry(fn)); | |
| 989 | 989 | } |
| 990 | 990 | |
| 991 | 991 | /* |