[PATCH v2 8/9] ARM: Thumb-2: Fix long-distance conditional branches in head.S for Thumb-2.
Russell King - ARM Linux
linux at arm.linux.org.uk
Tue Nov 23 03:56:49 EST 2010
On Mon, Nov 22, 2010 at 07:26:51PM -0500, Nicolas Pitre wrote:
> On Mon, 22 Nov 2010, Russell King - ARM Linux wrote:
>
> > On Mon, Nov 22, 2010 at 03:24:11PM -0500, Nicolas Pitre wrote:
> > > On Mon, 22 Nov 2010, Russell King - ARM Linux wrote:
> > > > No, you're not thinking right. It was _intentional_ that __error_p
> > > > ended up in a different section to __init. With CPU hotplug, as it
> > > > is called from the hotplug CPU initialization path, it needs to be
> > > > available for that path to call.
> > >
> > > Well... agreed for the hotplug CPU case. The section selection is good
> > > as it is for that.
> > >
> > > However I doubt this was intentional when commit 75d90832d5 was created,
> > > which is when the actual section move took place.
> >
> > Well, T2 is not something I particularly test for. There's already too
> > many combinations to test as it is.
>
> Fair enough. My point was only about the unintentional drop of the
> __init section attribute for the __error_p and __error_a functions (and
> probably some others in head-common.S) from commit 75d9083 which is
> orthogonal to the T2 issue.
What are you talking about Nicolas?
75d9083 is about adding nommu support, which was added some 4 years ago
well before Thumb 2 was talked about. It moves some code out of head.S,
and creates a new file, head-common.S to contain this code. head-common.S
is included by head.S, which means the assembler sees it as a single file.
And to prove the point, this is what head.o looks like immediately after
commit 75d9083:
00000000 l d .text 00000000 .text
00000000 l d .data 00000000 .data
00000000 l d .bss 00000000 .bss
00000000 l d .init.text 00000000 .init.text
00000000 g F .init.text 00000000 stext
00000030 l F .init.text 00000000 __enable_mmu
00000060 l F .init.text 00000000 __turn_mmu_on
00000078 l F .init.text 00000000 __create_page_tables
00000118 l O .init.text 00000000 __switch_data
0000013c l F .init.text 00000000 __mmap_switched
00000180 l F .init.text 00000000 __error_p
0000018c l .init.text 00000000 str_p1
000001c4 l F .init.text 00000000 __error_a
00000230 l .init.text 00000000 str_a1
00000265 l .init.text 00000000 str_a2
00000294 l .init.text 00000000 str_a3
000002cc l F .init.text 00000000 __error
000002d4 l F .init.text 00000000 __lookup_processor_type
0000030c g .init.text 00000000 lookup_processor_type
00000334 l F .init.text 00000000 __lookup_machine_type
00000368 g .init.text 00000000 lookup_machine_type
c0004000 g *ABS* 00000000 swapper_pg_dir
As you can see, everything after this commit is in the .init.text section,
including the __error_p and __error_a functions.
More information about the linux-arm-kernel
mailing list