diff options
author | Pawel Moll <pawel.moll@arm.com> | 2012-03-25 22:20:51 -0400 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2012-03-25 22:20:51 -0400 |
commit | 026cee0086fe1df4cf74691cf273062cc769617d (patch) | |
tree | 22735ecd2132de4570fbad81e5716f7fee3448d5 /include/asm-generic | |
parent | 8b8252813dee8e8cd453bb219731c36b268c69a7 (diff) |
params: <level>_initcall-like kernel parameters
This patch adds a set of macros that can be used to declare
kernel parameters to be parsed _before_ initcalls at a chosen
level are executed. We rename the now-unused "flags" field of
struct kernel_param as the level. It's signed, for when we
use this for early params as well, in future.
Linker macro collating init calls had to be modified in order
to add additional symbols between levels that are later used
by the init code to split the calls into blocks.
Signed-off-by: Pawel Moll <pawel.moll@arm.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Diffstat (limited to 'include/asm-generic')
-rw-r--r-- | include/asm-generic/vmlinux.lds.h | 35 |
1 files changed, 14 insertions, 21 deletions
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index 798603e8ec38..8aeadf6b553a 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h | |||
@@ -616,30 +616,23 @@ | |||
616 | *(.init.setup) \ | 616 | *(.init.setup) \ |
617 | VMLINUX_SYMBOL(__setup_end) = .; | 617 | VMLINUX_SYMBOL(__setup_end) = .; |
618 | 618 | ||
619 | #define INITCALLS \ | 619 | #define INIT_CALLS_LEVEL(level) \ |
620 | *(.initcallearly.init) \ | 620 | VMLINUX_SYMBOL(__initcall##level##_start) = .; \ |
621 | VMLINUX_SYMBOL(__early_initcall_end) = .; \ | 621 | *(.initcall##level##.init) \ |
622 | *(.initcall0.init) \ | 622 | *(.initcall##level##s.init) \ |
623 | *(.initcall0s.init) \ | ||
624 | *(.initcall1.init) \ | ||
625 | *(.initcall1s.init) \ | ||
626 | *(.initcall2.init) \ | ||
627 | *(.initcall2s.init) \ | ||
628 | *(.initcall3.init) \ | ||
629 | *(.initcall3s.init) \ | ||
630 | *(.initcall4.init) \ | ||
631 | *(.initcall4s.init) \ | ||
632 | *(.initcall5.init) \ | ||
633 | *(.initcall5s.init) \ | ||
634 | *(.initcallrootfs.init) \ | ||
635 | *(.initcall6.init) \ | ||
636 | *(.initcall6s.init) \ | ||
637 | *(.initcall7.init) \ | ||
638 | *(.initcall7s.init) | ||
639 | 623 | ||
640 | #define INIT_CALLS \ | 624 | #define INIT_CALLS \ |
641 | VMLINUX_SYMBOL(__initcall_start) = .; \ | 625 | VMLINUX_SYMBOL(__initcall_start) = .; \ |
642 | INITCALLS \ | 626 | *(.initcallearly.init) \ |
627 | INIT_CALLS_LEVEL(0) \ | ||
628 | INIT_CALLS_LEVEL(1) \ | ||
629 | INIT_CALLS_LEVEL(2) \ | ||
630 | INIT_CALLS_LEVEL(3) \ | ||
631 | INIT_CALLS_LEVEL(4) \ | ||
632 | INIT_CALLS_LEVEL(5) \ | ||
633 | INIT_CALLS_LEVEL(rootfs) \ | ||
634 | INIT_CALLS_LEVEL(6) \ | ||
635 | INIT_CALLS_LEVEL(7) \ | ||
643 | VMLINUX_SYMBOL(__initcall_end) = .; | 636 | VMLINUX_SYMBOL(__initcall_end) = .; |
644 | 637 | ||
645 | #define CON_INITCALL \ | 638 | #define CON_INITCALL \ |