[ARM] Ensure head text is always placed at the start of kernel

Commit 86c0baf123e474b6eb404798926ecf62b426bf3a highlighted that we
may end up with the head text placed elsewhere in the kernel image.
Introduce a new .text.head section to contain the initial kernel
startup code, and always place this section at the beginning of the
kernel image.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
Russell King 2007-05-08 15:15:45 +01:00 committed by Russell King
parent 4efb448272
commit 08fdffd4cf
3 changed files with 9 additions and 5 deletions

View File

@ -33,7 +33,7 @@
* numbers for r1. * numbers for r1.
* *
*/ */
__INIT .section ".text.head", "ax"
.type stext, %function .type stext, %function
ENTRY(stext) ENTRY(stext)
msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | SVC_MODE @ ensure svc mode msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | SVC_MODE @ ensure svc mode

View File

@ -73,7 +73,7 @@
* crap here - that's what the boot loader (or in extreme, well justified * crap here - that's what the boot loader (or in extreme, well justified
* circumstances, zImage) is for. * circumstances, zImage) is for.
*/ */
__INIT .section ".text.head", "ax"
.type stext, %function .type stext, %function
ENTRY(stext) ENTRY(stext)
msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | SVC_MODE @ ensure svc mode msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | SVC_MODE @ ensure svc mode

View File

@ -23,9 +23,13 @@ SECTIONS
#else #else
. = PAGE_OFFSET + TEXT_OFFSET; . = PAGE_OFFSET + TEXT_OFFSET;
#endif #endif
.init : { /* Init code and data */ .text.head : {
_stext = .; _stext = .;
_sinittext = .; _sinittext = .;
*(.text.head)
}
.init : { /* Init code and data */
*(.init.text) *(.init.text)
_einittext = .; _einittext = .;
__proc_info_begin = .; __proc_info_begin = .;