All of lore.kernel.org
 help / color / mirror / Atom feed
From: Franck Bui-Huu <fbuihuu@gmail.com>
To: unlisted-recipients:; (no To-header on input)
Cc: Ralf Baechle <ralf@linux-mips.org>,
	Thiemo Seufer <ths@networkno.de>,
	"Maciej W. Rozycki" <macro@linux-mips.org>,
	linux-mips@linux-mips.org
Subject: [PATCH 2/6] tlbex.c: Remove relocs[] and labels[] from the init.data section
Date: Tue, 09 Oct 2007 22:35:43 +0200	[thread overview]
Message-ID: <470BE61F.5020108@gmail.com> (raw)
In-Reply-To: <470BE58A.9070709@gmail.com>

This patch reduces the kernel image size by making these 2 arrays
automatic variables.

	tlbex.o~old  =>  tlbex.o
	 text:     9840     9812      -28  0%
	 data:     3904     1344    -2560 -65%
	  bss:     1568     1568        0  0%
	total:    15312    12724    -2588 -16%

It increases the stack pressure a lot (more than 2500 bytes) but
at this stage in the boot process, it shouldn't matter.

Futhermore the TLB handler generator code doesn't have any deep
call graph and probably won't.

Signed-off-by: Franck Bui-Huu <fbuihuu@gmail.com>
---
 arch/mips/mm/tlbex.c |   32 ++++++++++++++------------------
 1 files changed, 14 insertions(+), 18 deletions(-)

diff --git a/arch/mips/mm/tlbex.c b/arch/mips/mm/tlbex.c
index 01b0961..ae1bf81 100644
--- a/arch/mips/mm/tlbex.c
+++ b/arch/mips/mm/tlbex.c
@@ -745,10 +745,6 @@ il_bgez(u32 **p, struct reloc **r, unsigned int reg, enum label_id l)
  */
 static u32 tlb_handler[128] __initdata;
 
-/* simply assume worst case size for labels and relocs */
-static struct label labels[128] __initdata;
-static struct reloc relocs[128] __initdata;
-
 /*
  * The R3000 TLB handler is simple.
  */
@@ -1250,8 +1246,8 @@ static void __init build_update_entries(u32 **p, unsigned int tmp,
 static void __init build_r4000_tlb_refill_handler(void)
 {
 	u32 *p = tlb_handler;
-	struct label *l = labels;
-	struct reloc *r = relocs;
+	struct label labels[128], *l = labels;
+	struct reloc relocs[128], *r = relocs;
 	u32 *f;
 	unsigned int final_len;
 	int i;
@@ -1598,8 +1594,8 @@ build_r3000_tlbchange_handler_head(u32 **p, unsigned int pte,
 static void __init build_r3000_tlb_load_handler(void)
 {
 	u32 *p = handle_tlbl;
-	struct label *l = labels;
-	struct reloc *r = relocs;
+	struct label labels[FASTPATH_SIZE], *l = labels;
+	struct reloc relocs[FASTPATH_SIZE], *r = relocs;
 	int i;
 
 	memset(handle_tlbl, 0, sizeof(handle_tlbl));
@@ -1633,8 +1629,8 @@ static void __init build_r3000_tlb_load_handler(void)
 static void __init build_r3000_tlb_store_handler(void)
 {
 	u32 *p = handle_tlbs;
-	struct label *l = labels;
-	struct reloc *r = relocs;
+	struct label labels[FASTPATH_SIZE], *l = labels;
+	struct reloc relocs[FASTPATH_SIZE], *r = relocs;
 	int i;
 
 	memset(handle_tlbs, 0, sizeof(handle_tlbs));
@@ -1668,8 +1664,8 @@ static void __init build_r3000_tlb_store_handler(void)
 static void __init build_r3000_tlb_modify_handler(void)
 {
 	u32 *p = handle_tlbm;
-	struct label *l = labels;
-	struct reloc *r = relocs;
+	struct label labels[FASTPATH_SIZE], *l = labels;
+	struct reloc relocs[FASTPATH_SIZE], *r = relocs;
 	int i;
 
 	memset(handle_tlbm, 0, sizeof(handle_tlbm));
@@ -1748,8 +1744,8 @@ build_r4000_tlbchange_handler_tail(u32 **p, struct label **l,
 static void __init build_r4000_tlb_load_handler(void)
 {
 	u32 *p = handle_tlbl;
-	struct label *l = labels;
-	struct reloc *r = relocs;
+	struct label labels[FASTPATH_SIZE], *l = labels;
+	struct reloc relocs[FASTPATH_SIZE], *r = relocs;
 	int i;
 
 	memset(handle_tlbl, 0, sizeof(handle_tlbl));
@@ -1793,8 +1789,8 @@ static void __init build_r4000_tlb_load_handler(void)
 static void __init build_r4000_tlb_store_handler(void)
 {
 	u32 *p = handle_tlbs;
-	struct label *l = labels;
-	struct reloc *r = relocs;
+	struct label labels[FASTPATH_SIZE], *l = labels;
+	struct reloc relocs[FASTPATH_SIZE], *r = relocs;
 	int i;
 
 	memset(handle_tlbs, 0, sizeof(handle_tlbs));
@@ -1829,8 +1825,8 @@ static void __init build_r4000_tlb_store_handler(void)
 static void __init build_r4000_tlb_modify_handler(void)
 {
 	u32 *p = handle_tlbm;
-	struct label *l = labels;
-	struct reloc *r = relocs;
+	struct label labels[FASTPATH_SIZE], *l = labels;
+	struct reloc relocs[FASTPATH_SIZE], *r = relocs;
 	int i;
 
 	memset(handle_tlbm, 0, sizeof(handle_tlbm));
-- 
1.5.3.3

WARNING: multiple messages have this Message-ID (diff)
From: Franck Bui-Huu <fbuihuu@gmail.com>
Cc: Ralf Baechle <ralf@linux-mips.org>,
	Thiemo Seufer <ths@networkno.de>,
	"Maciej W. Rozycki" <macro@linux-mips.org>,
	linux-mips@linux-mips.org
Subject: [PATCH 2/6] tlbex.c: Remove relocs[] and labels[] from the init.data section
Date: Tue, 09 Oct 2007 22:35:43 +0200	[thread overview]
Message-ID: <470BE61F.5020108@gmail.com> (raw)
Message-ID: <20071009203543.KypmMmxyV0ilMoTVJ9SzSVaF3C_jJgDyRhcVcw6OvwM@z> (raw)
In-Reply-To: <470BE58A.9070709@gmail.com>

This patch reduces the kernel image size by making these 2 arrays
automatic variables.

	tlbex.o~old  =>  tlbex.o
	 text:     9840     9812      -28  0%
	 data:     3904     1344    -2560 -65%
	  bss:     1568     1568        0  0%
	total:    15312    12724    -2588 -16%

It increases the stack pressure a lot (more than 2500 bytes) but
at this stage in the boot process, it shouldn't matter.

Futhermore the TLB handler generator code doesn't have any deep
call graph and probably won't.

Signed-off-by: Franck Bui-Huu <fbuihuu@gmail.com>
---
 arch/mips/mm/tlbex.c |   32 ++++++++++++++------------------
 1 files changed, 14 insertions(+), 18 deletions(-)

diff --git a/arch/mips/mm/tlbex.c b/arch/mips/mm/tlbex.c
index 01b0961..ae1bf81 100644
--- a/arch/mips/mm/tlbex.c
+++ b/arch/mips/mm/tlbex.c
@@ -745,10 +745,6 @@ il_bgez(u32 **p, struct reloc **r, unsigned int reg, enum label_id l)
  */
 static u32 tlb_handler[128] __initdata;
 
-/* simply assume worst case size for labels and relocs */
-static struct label labels[128] __initdata;
-static struct reloc relocs[128] __initdata;
-
 /*
  * The R3000 TLB handler is simple.
  */
@@ -1250,8 +1246,8 @@ static void __init build_update_entries(u32 **p, unsigned int tmp,
 static void __init build_r4000_tlb_refill_handler(void)
 {
 	u32 *p = tlb_handler;
-	struct label *l = labels;
-	struct reloc *r = relocs;
+	struct label labels[128], *l = labels;
+	struct reloc relocs[128], *r = relocs;
 	u32 *f;
 	unsigned int final_len;
 	int i;
@@ -1598,8 +1594,8 @@ build_r3000_tlbchange_handler_head(u32 **p, unsigned int pte,
 static void __init build_r3000_tlb_load_handler(void)
 {
 	u32 *p = handle_tlbl;
-	struct label *l = labels;
-	struct reloc *r = relocs;
+	struct label labels[FASTPATH_SIZE], *l = labels;
+	struct reloc relocs[FASTPATH_SIZE], *r = relocs;
 	int i;
 
 	memset(handle_tlbl, 0, sizeof(handle_tlbl));
@@ -1633,8 +1629,8 @@ static void __init build_r3000_tlb_load_handler(void)
 static void __init build_r3000_tlb_store_handler(void)
 {
 	u32 *p = handle_tlbs;
-	struct label *l = labels;
-	struct reloc *r = relocs;
+	struct label labels[FASTPATH_SIZE], *l = labels;
+	struct reloc relocs[FASTPATH_SIZE], *r = relocs;
 	int i;
 
 	memset(handle_tlbs, 0, sizeof(handle_tlbs));
@@ -1668,8 +1664,8 @@ static void __init build_r3000_tlb_store_handler(void)
 static void __init build_r3000_tlb_modify_handler(void)
 {
 	u32 *p = handle_tlbm;
-	struct label *l = labels;
-	struct reloc *r = relocs;
+	struct label labels[FASTPATH_SIZE], *l = labels;
+	struct reloc relocs[FASTPATH_SIZE], *r = relocs;
 	int i;
 
 	memset(handle_tlbm, 0, sizeof(handle_tlbm));
@@ -1748,8 +1744,8 @@ build_r4000_tlbchange_handler_tail(u32 **p, struct label **l,
 static void __init build_r4000_tlb_load_handler(void)
 {
 	u32 *p = handle_tlbl;
-	struct label *l = labels;
-	struct reloc *r = relocs;
+	struct label labels[FASTPATH_SIZE], *l = labels;
+	struct reloc relocs[FASTPATH_SIZE], *r = relocs;
 	int i;
 
 	memset(handle_tlbl, 0, sizeof(handle_tlbl));
@@ -1793,8 +1789,8 @@ static void __init build_r4000_tlb_load_handler(void)
 static void __init build_r4000_tlb_store_handler(void)
 {
 	u32 *p = handle_tlbs;
-	struct label *l = labels;
-	struct reloc *r = relocs;
+	struct label labels[FASTPATH_SIZE], *l = labels;
+	struct reloc relocs[FASTPATH_SIZE], *r = relocs;
 	int i;
 
 	memset(handle_tlbs, 0, sizeof(handle_tlbs));
@@ -1829,8 +1825,8 @@ static void __init build_r4000_tlb_store_handler(void)
 static void __init build_r4000_tlb_modify_handler(void)
 {
 	u32 *p = handle_tlbm;
-	struct label *l = labels;
-	struct reloc *r = relocs;
+	struct label labels[FASTPATH_SIZE], *l = labels;
+	struct reloc relocs[FASTPATH_SIZE], *r = relocs;
 	int i;
 
 	memset(handle_tlbm, 0, sizeof(handle_tlbm));
-- 
1.5.3.3

  parent reply	other threads:[~2007-10-09 20:36 UTC|newest]

Thread overview: 93+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-10-02 13:54 [PATCH] mm/pg-r4k.c: Dump the generated code Maciej W. Rozycki
2007-10-02 14:11 ` Thiemo Seufer
2007-10-02 15:49   ` Ralf Baechle
2007-10-02 16:03     ` Thiemo Seufer
2007-10-02 16:08     ` Maciej W. Rozycki
2007-10-03  1:00       ` Ralf Baechle
2007-10-03  7:05         ` Geert Uytterhoeven
2007-10-03 10:32           ` Ralf Baechle
2007-10-03 12:17     ` Franck Bui-Huu
2007-10-03 13:11       ` Thiemo Seufer
2007-10-03 13:51         ` Maciej W. Rozycki
2007-10-03 19:45         ` Franck Bui-Huu
2007-10-03 20:18           ` Thiemo Seufer
2007-10-04  7:33             ` Franck Bui-Huu
2007-10-04 10:30               ` Maciej W. Rozycki
2007-10-04 12:15               ` Ralf Baechle
2007-10-04 15:01                 ` Franck Bui-Huu
2007-10-04 15:23                   ` Maciej W. Rozycki
2007-10-04 15:30                     ` Ralf Baechle
2007-10-04 15:35                       ` Maciej W. Rozycki
2007-10-04 15:42                         ` Ralf Baechle
2007-10-04 17:34                           ` Maciej W. Rozycki
2007-10-08 15:46                             ` Maciej W. Rozycki
2007-10-08 16:41                               ` Ralf Baechle
2007-10-08 16:45                                 ` Maciej W. Rozycki
2007-10-08 16:53                                   ` Ralf Baechle
2007-10-05  8:03                     ` Franck Bui-Huu
2007-10-05  9:09                       ` Geert Uytterhoeven
2007-10-08 15:02                         ` Franck Bui-Huu
2007-10-08 15:21                           ` Geert Uytterhoeven
2007-10-08 15:26                             ` Ralf Baechle
2007-10-09 20:20                             ` Franck Bui-Huu
2007-10-05 12:19                       ` Maciej W. Rozycki
2007-10-08 14:48                         ` Franck Bui-Huu
2007-10-08 15:24                           ` Ralf Baechle
2007-10-08 15:39                           ` Maciej W. Rozycki
2007-10-09 20:17                             ` Franck Bui-Huu
2007-10-10 11:58                               ` Maciej W. Rozycki
2007-10-10 12:08                                 ` [SPAM?] " Nigel Stephens
2007-10-11 12:01                                   ` Maciej W. Rozycki
2007-10-13 10:53                                     ` Richard Sandiford
2007-10-15 13:17                                       ` Maciej W. Rozycki
2007-10-14 19:37                                     ` Franck Bui-Huu
2007-10-15 13:26                                       ` Maciej W. Rozycki
2007-10-14 19:32                                 ` Franck Bui-Huu
2007-10-14 19:53                                   ` Thiemo Seufer
2007-10-14 20:29                                     ` Franck Bui-Huu
2007-10-15 19:35                                     ` Franck Bui-Huu
2007-10-15 20:11                                       ` Nigel Stephens
2007-10-16  8:24                                         ` Franck Bui-Huu
2007-10-16 12:58                                           ` Nigel Stephens
2007-10-17  7:56                                             ` Franck Bui-Huu
2007-10-17 12:30                                               ` Thiemo Seufer
2007-10-17 13:25                                                 ` Nigel Stephens
2007-10-17 13:31                                                   ` Maciej W. Rozycki
2007-11-04  8:21                                                   ` Franck Bui-Huu
2007-11-04 17:47                                                     ` Thiemo Seufer
2007-11-04 20:19                                                       ` Franck Bui-Huu
2007-11-05 11:36                                                         ` Ralf Baechle
2007-11-05 21:34                                                           ` Franck Bui-Huu
2007-11-05 23:30                                                             ` Ralf Baechle
2007-11-06  7:23                                                               ` Franck Bui-Huu
2007-11-05 15:58                                                         ` Nigel Stephens
2007-11-05 20:43                                                           ` Franck Bui-Huu
2007-10-10  8:53                             ` Ralf Baechle
2007-10-10 12:17                               ` Maciej W. Rozycki
2007-10-05 11:51                   ` Ralf Baechle
2007-10-08 14:11                     ` Franck Bui-Huu
2007-10-08 14:41                       ` Ralf Baechle
2007-10-09 20:33                     ` Franck Bui-Huu
2007-10-09 20:34                       ` [PATCH 1/6] tlbex.c: Cleanup __init usages Franck Bui-Huu
2007-10-11 16:16                         ` Ralf Baechle
2007-10-12  6:36                           ` Franck Bui-Huu
2007-10-12 14:43                             ` Ralf Baechle
2007-10-09 20:35                       ` Franck Bui-Huu [this message]
2007-10-09 20:35                         ` [PATCH 2/6] tlbex.c: Remove relocs[] and labels[] from the init.data section Franck Bui-Huu
2007-10-10 14:27                         ` Ralf Baechle
2007-10-10 16:17                           ` Maciej W. Rozycki
2007-10-10 16:42                             ` Ralf Baechle
2007-10-10 16:55                               ` Geert Uytterhoeven
2007-10-10 17:01                                 ` Maciej W. Rozycki
2007-10-10 17:09                                   ` Geert Uytterhoeven
2007-10-10 19:58                                 ` Franck Bui-Huu
2007-10-10 19:29                             ` Franck Bui-Huu
2007-10-09 20:36                       ` [PATCH 3/6] tlbex.c: remove tlb_handler[] from " Franck Bui-Huu
2007-10-09 20:36                         ` Franck Bui-Huu
2007-10-09 20:37                       ` [PATCH 4/6] tlbex.c: remove final_handler[] " Franck Bui-Huu
2007-10-09 20:37                         ` Franck Bui-Huu
2007-10-09 20:38                       ` [PATCH 5/6] tlbex.c: cleanup debug code Franck Bui-Huu
2007-10-09 20:38                         ` Franck Bui-Huu
2007-10-09 20:39                       ` [PATCH 6/6] tlbex.c: cleanup include files Franck Bui-Huu
2007-10-09 20:39                         ` Franck Bui-Huu
2007-10-03 13:41       ` [PATCH] mm/pg-r4k.c: Dump the generated code Ralf Baechle

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=470BE61F.5020108@gmail.com \
    --to=fbuihuu@gmail.com \
    --cc=linux-mips@linux-mips.org \
    --cc=macro@linux-mips.org \
    --cc=ralf@linux-mips.org \
    --cc=ths@networkno.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.