Skip to contentSkip to conversation

ppc boot: replace string labels with numbers

PATCH In review Olaf Hering 4 participants 6 messages Nov 17, 2005 – Dec 1, 2005 PowerPC

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ppc boot: replace string labels with numbers

Replacing the string labels with numbers saves 117 bytes in the final zImage. These local labels are not discared.

 arch/powerpc/boot/crt0.S |   23 +++++++++++------------
 1 files changed, 11 insertions(+), 12 deletions(-)
arch/powerpc/boot/crt0.S +11 -12
Index: linux-2.6.15-rc1-olh/arch/powerpc/boot/crt0.S
===================================================================
@@ -14,43 +14,42 @@
 	.text
 	.globl	_zimage_start
 _zimage_start:
-	bl	reloc_offset
+	bl	1f
 
-reloc_offset:
+1:
 	mflr	r0
-	lis	r9,reloc_offset@ha
-	addi	r9,r9,reloc_offset@l
+	lis	r9,1b@ha
+	addi	r9,r9,1b@l
 	subf.	r0,r9,r0
-	beq	clear_caches
+	beq	3f
 
-reloc_got2:
 	lis	r9,__got2_start@ha
 	addi	r9,r9,__got2_start@l
 	lis	r8,__got2_end@ha
 	addi	r8,r8,__got2_end@l
 	subf.	r8,r9,r8
-	beq	clear_caches
+	beq	3f
 	srwi.	r8,r8,2
 	mtctr	r8
 	add	r9,r0,r9
-reloc_got2_loop:
+2:
 	lwz	r8,0(r9)
 	add	r8,r8,r0
 	stw	r8,0(r9)
 	addi	r9,r9,4
-	bdnz	reloc_got2_loop
+	bdnz	2b
 
-clear_caches:
+3:
 	lis	r9,_start@h
 	add	r9,r0,r9
 	lis	r8,_etext@ha
 	addi	r8,r8,_etext@l
 	add	r8,r0,r8
-1:	dcbf	r0,r9
+4:	dcbf	r0,r9
 	icbi	r0,r9
 	addi	r9,r9,0x20
 	cmplwi	0,r9,8
-	blt	1b
+	blt	4b
 	sync
 	isync
 
Signature · 2 lines
short story of a lazy sysadmin:
 alias appserv=wotan
#1 lore raw
Quoted 19 lines · Olaf Hering

Replacing the string labels with numbers saves 117 bytes in the final zImage. These local labels are not discared.

 arch/powerpc/boot/crt0.S |   23 +++++++++++------------
 1 files changed, 11 insertions(+), 12 deletions(-)

Index: linux-2.6.15-rc1-olh/arch/powerpc/boot/crt0.S
===================================================================

arch/powerpc/boot/crt0.S +1 -1
@@ -14,43 +14,42 @@
 	.text
 	.globl	_zimage_start
 _zimage_start:
-	bl	reloc_offset
+	bl	1f
 

arch/powerpc/boot/crt0.S line 24

Quoted 10 lines
arch/powerpc/boot/crt0.S +4 -4
-reloc_offset:
+1:
 	mflr	r0
-	lis	r9,reloc_offset@ha
-	addi	r9,r9,reloc_offset@l
+	lis	r9,1b@ha
+	addi	r9,r9,1b@l
 	subf.	r0,r9,r0
-	beq	clear_caches
+	beq	3f

[snip]

OK, I've waited for someone dumber than me to ask, but I guess I'm the bottom guy on the totem pole here.

How does changing a local ascii label to a temporary label _but using the same machine instructions_ affect the output image size???? Why would "lis r9,reloc_offset@ha" generate a smaller (!) instruction than "lis r9,1b@ha"????

My first thought was that the symbol section of the ELF output is bigger, but the labels are not globals. Even if the local labels end up in the symbol section (which the comment on the original patch message sort of implies), that isn't going to make a (stripped) binary any bigger. If that is the case, isn't a better cure to strip the ELF file?

While I'm being dumb, I gotta ask, how big is zImage and why does 117 bytes make a difference?

My 2c: if you are going to use inscrutable labels (1,2,3,4), please put comments in. At least the previous labels gave hints as to what was happening.

Puzzled,
gvb

#2 lore raw
Quoted 2 lines · Jerry Van Baren

While I'm being dumb, I gotta ask, how big is zImage and why does 117 bytes make a difference?

Because we can.

Quoted 3 lines

My 2c: if you are going to use inscrutable labels (1,2,3,4), please put comments in. At least the previous labels gave hints as to what was happening.

The code should be obvious.

Signature · 2 lines
short story of a lazy sysadmin:
 alias appserv=wotan
#3 lore raw
Quoted 5 lines · Olaf Hering
Quoted 2 lines · Jerry Van Baren

While I'm being dumb, I gotta ask, how big is zImage and why does 117 bytes make a difference?

Quoted 7 lines

Because we can.

Quoted 3 lines

My 2c: if you are going to use inscrutable labels (1,2,3,4), please put comments in. At least the previous labels gave hints as to what was happening.

The code should be obvious.

I hope the above was a joke, Olaf.

I too am wondering where the savings come from. Regardless, IMHO 117 bytes is not a worthwhile tradeoff for less maintainable assembly.

BTW, Jerry, the size of the instructions themselves will not change. I suspect the savings is from things like the symbol table, but I can't replicate it with a simple "hello world" testcase.

-Hollis

#4 lore raw
Quoted 3 lines · Hollis Blanchard
Quoted 1 line

The code should be obvious.

I hope the above was a joke, Olaf.

Not really. Perhaps I have been working on that code for too long now. Its the string table that makes a difference.

Signature · 2 lines
short story of a lazy sysadmin:
 alias appserv=wotan
#5 lore raw
In reply to Olaf Hering
Quoted 4 lines · Olaf Hering

Replacing the string labels with numbers saves 117 bytes in the final zImage. These local labels are not discared.

And kicks easy-understanding right in the, somethings...

NAK. If it's not too late, of course (vacation catchup is fun!)

Signature · 2 lines
Tom Rini
http://gate.crashing.org/~trini/