All of lore.kernel.org
 help / color / mirror / Atom feed
* [parisc-linux] init and exit text problem
@ 2004-01-15  0:18 Matthew Wilcox
  2004-01-16 16:50 ` Joel Soete
  0 siblings, 1 reply; 11+ messages in thread
From: Matthew Wilcox @ 2004-01-15  0:18 UTC (permalink / raw)
  To: parisc-linux


Our vmlinux.lds.S doesn't discard init and exit text segments.  Anyone
want to look into fixing this?

-- 
"Next the statesmen will invent cheap lies, putting the blame upon 
the nation that is attacked, and every man will be glad of those
conscience-soothing falsities, and will diligently study them, and refuse
to examine any refutations of them; and thus he will by and by convince 
himself that the war is just, and will thank God for the better sleep 
he enjoys after this process of grotesque self-deception." -- Mark Twain

^ permalink raw reply	[flat|nested] 11+ messages in thread

* RE: [parisc-linux] init and exit text problem
  2004-01-15  0:18 [parisc-linux] init and exit text problem Matthew Wilcox
@ 2004-01-16 16:50 ` Joel Soete
  2004-01-16 16:58   ` Joel Soete
  2004-01-16 17:30   ` James Bottomley
  0 siblings, 2 replies; 11+ messages in thread
From: Joel Soete @ 2004-01-16 16:50 UTC (permalink / raw)
  To: Matthew Wilcox, parisc-linux

>
>Our vmlinux.lds.S doesn't discard init and exit text segments.  Anyone
>want to look into fixing this?
>
is it what you look for:

=========><=========
--- linux-2.6.1-pa3.orig/arch/parisc/kernel/vmlinux.lds.S	2003-09-22 09:06:55.000000000
+0200
+++ linux-2.6.1-pa3/arch/parisc/kernel/vmlinux.lds.S	2004-01-16 18:25:15.175817000
+0100
@@ -102,6 +102,17 @@
 
   _end = . ;
 
+  /* When something in the kernel is NOT compiled as a module, the
+   * module cleanup code and data are put into these segments.  Both
+   * can then be thrown away, as cleanup code is never called unless
+   * it's a module.
+   */
+  /DISCARD/ : {
+	*(.exit.text)
+	*(.exit.data)
+	*(.exitcall.exit)
+	}
+
   /* Stabs debugging sections.  */
   .stab 0 : { *(.stab) }
   .stabstr 0 : { *(.stabstr) }
=========><=========

Unfortunately failled to build kernel because:
[snip]
  	ld  -T arch/parisc/kernel/vmlinux.lds.s arch/parisc/kernel/head.o    init/built-in.o
--start-group  usr/built-in.o  arch/parisc/mm/built-in.o  arch/parisc/kernel/built-in.o
 arch/parisc/math-emu/built-in.o arch/parisc/kernel/init_task.o  kernel/built-in.o
 mm/built-in.o  fs/built-in.o  ipc/built-in.o  security/built-in.o  crypto/built-in.o
 lib/lib.a  arch/parisc/lib/lib.a `gcc -print-libgcc-file-name`  lib/built-in.o
 arch/parisc/lib/built-in.o `gcc -print-libgcc-file-name`  drivers/built-in.o
 sound/built-in.o  arch/parisc/oprofile/built-in.o  net/built-in.o --end-group
 -o .tmp_vmlinux1
local symbol 0: discarded in section `.exit.text' from kernel/built-in.o
local symbol 1: discarded in section `.exit.text' from kernel/built-in.o
local symbol 2: discarded in section `.exit.text' from fs/built-in.o
local symbol 3: discarded in section `.exit.text' from fs/built-in.o
local symbol 4: discarded in section `.exit.text' from fs/built-in.o
local symbol 5: discarded in section `.exit.text' from fs/built-in.o
local symbol 6: discarded in section `.exit.text' from fs/built-in.o
local symbol 7: discarded in section `.exit.text' from fs/built-in.o
local symbol 8: discarded in section `.exit.text' from fs/built-in.o
local symbol 9: discarded in section `.exit.text' from fs/built-in.o
local symbol 10: discarded in section `.exit.text' from fs/built-in.o
local symbol 11: discarded in section `.exit.text' from fs/built-in.o
local symbol 12: discarded in section `.exit.text' from fs/built-in.o
local symbol 13: discarded in section `.exit.text' from fs/built-in.o
local symbol 14: discarded in section `.exit.text' from fs/built-in.o
local symbol 15: discarded in section `.exit.text' from fs/built-in.o
local symbol 16: discarded in section `.exit.text' from fs/built-in.o
local symbol 17: discarded in section `.exit.text' from fs/built-in.o
local symbol 18: discarded in section `.exit.text' from fs/built-in.o
local symbol 19: discarded in section `.exit.text' from fs/built-in.o
local symbol 20: discarded in section `.exit.text' from fs/built-in.o
local symbol 21: discarded in section `.exit.text' from fs/built-in.o
local symbol 22: discarded in section `.exit.text' from fs/built-in.o
local symbol 23: discarded in section `.exit.text' from fs/built-in.o
local symbol 24: discarded in section `.exit.text' from fs/built-in.o
local symbol 25: discarded in section `.exit.text' from fs/built-in.o
local symbol 26: discarded in section `.exit.text' from fs/built-in.o
local symbol 27: discarded in section `.exit.text' from fs/built-in.o
local symbol 28: discarded in section `.exit.text' from drivers/built-in.o
local symbol 29: discarded in section `.exit.text' from drivers/built-in.o
local symbol 30: discarded in section `.exit.text' from drivers/built-in.o
local symbol 31: discarded in section `.exit.text' from drivers/built-in.o
local symbol 32: discarded in section `.exit.text' from drivers/built-in.o
local symbol 33: discarded in section `.exit.text' from drivers/built-in.o
local symbol 34: discarded in section `.exit.text' from drivers/built-in.o
local symbol 35: discarded in section `.exit.text' from drivers/built-in.o
local symbol 36: discarded in section `.exit.text' from drivers/built-in.o
local symbol 37: discarded in section `.exit.text' from drivers/built-in.o
local symbol 38: discarded in section `.exit.text' from drivers/built-in.o
local symbol 39: discarded in section `.exit.text' from drivers/built-in.o
local symbol 40: discarded in section `.exit.text' from drivers/built-in.o
local symbol 41: discarded in section `.exit.text' from drivers/built-in.o
local symbol 42: discarded in section `.exit.text' from drivers/built-in.o
local symbol 43: discarded in section `.exit.text' from drivers/built-in.o
local symbol 44: discarded in section `.exit.text' from drivers/built-in.o
local symbol 45: discarded in section `.exit.text' from drivers/built-in.o
local symbol 46: discarded in section `.exit.text' from drivers/built-in.o
local symbol 47: discarded in section `.exit.text' from drivers/built-in.o
local symbol 48: discarded in section `.exit.text' from drivers/built-in.o
local symbol 49: discarded in section `.exit.text' from drivers/built-in.o
local symbol 50: discarded in section `.exit.text' from drivers/built-in.o
local symbol 51: discarded in section `.exit.text' from drivers/built-in.o
local symbol 52: discarded in section `.exit.text' from drivers/built-in.o
local symbol 53: discarded in section `.exit.text' from drivers/built-in.o
local symbol 54: discarded in section `.exit.text' from drivers/built-in.o
local symbol 55: discarded in section `.exit.text' from drivers/built-in.o
local symbol 56: discarded in section `.exit.text' from drivers/built-in.o
local symbol 57: discarded in section `.exit.text' from drivers/built-in.o
local symbol 58: discarded in section `.exit.text' from drivers/built-in.o
local symbol 59: discarded in section `.exit.text' from drivers/built-in.o
local symbol 60: discarded in section `.exit.text' from drivers/built-in.o
local symbol 61: discarded in section `.exit.text' from drivers/built-in.o
local symbol 62: discarded in section `.exit.text' from drivers/built-in.o
local symbol 63: discarded in section `.exit.text' from drivers/built-in.o
local symbol 64: discarded in section `.exit.text' from drivers/built-in.o
local symbol 65: discarded in section `.exit.text' from drivers/built-in.o
local symbol 66: discarded in section `.exit.text' from drivers/built-in.o
local symbol 67: discarded in section `.exit.text' from drivers/built-in.o
local symbol 68: discarded in section `.exit.text' from drivers/built-in.o
local symbol 69: discarded in section `.exit.text' from drivers/built-in.o
local symbol 70: discarded in section `.exit.text' from drivers/built-in.o
local symbol 71: discarded in section `.exit.text' from drivers/built-in.o
local symbol 72: discarded in section `.exit.text' from drivers/built-in.o
local symbol 73: discarded in section `.exit.text' from drivers/built-in.o
local symbol 74: discarded in section `.exit.text' from drivers/built-in.o
local symbol 75: discarded in section `.exit.text' from drivers/built-in.o
local symbol 76: discarded in section `.exit.text' from drivers/built-in.o
local symbol 77: discarded in section `.exit.text' from drivers/built-in.o
local symbol 78: discarded in section `.exit.text' from drivers/built-in.o
local symbol 79: discarded in section `.exit.text' from drivers/built-in.o
local symbol 80: discarded in section `.exit.text' from drivers/built-in.o
local symbol 81: discarded in section `.exit.text' from drivers/built-in.o
local symbol 82: discarded in section `.exit.text' from drivers/built-in.o
local symbol 83: discarded in section `.exit.text' from drivers/built-in.o
local symbol 84: discarded in section `.exit.text' from drivers/built-in.o
local symbol 85: discarded in section `.exit.text' from drivers/built-in.o
local symbol 86: discarded in section `.exit.text' from drivers/built-in.o
local symbol 87: discarded in section `.exit.text' from drivers/built-in.o
fb_console_exit: discarded in section `.exit.text' from drivers/built-in.o
local symbol 88: discarded in section `.exit.text' from drivers/built-in.o
local symbol 89: discarded in section `.exit.text' from drivers/built-in.o
local symbol 90: discarded in section `.exit.text' from drivers/built-in.o
local symbol 91: discarded in section `.exit.text' from drivers/built-in.o
local symbol 92: discarded in section `.exit.text' from drivers/built-in.o
local symbol 93: discarded in section `.exit.text' from drivers/built-in.o
local symbol 94: discarded in section `.exit.text' from drivers/built-in.o
local symbol 95: discarded in section `.exit.text' from drivers/built-in.o
local symbol 96: discarded in section `.exit.text' from drivers/built-in.o
local symbol 97: discarded in section `.exit.text' from drivers/built-in.o
local symbol 98: discarded in section `.exit.text' from drivers/built-in.o
local symbol 99: discarded in section `.exit.text' from drivers/built-in.o
local symbol 100: discarded in section `.exit.text' from drivers/built-in.o
local symbol 101: discarded in section `.exit.text' from drivers/built-in.o
local symbol 102: discarded in section `.exit.text' from drivers/built-in.o
local symbol 103: discarded in section `.exit.text' from drivers/built-in.o
local symbol 104: discarded in section `.exit.text' from drivers/built-in.o
local symbol 105: discarded in section `.exit.text' from drivers/built-in.o
local symbol 106: discarded in section `.exit.text' from drivers/built-in.o
local symbol 107: discarded in section `.exit.text' from drivers/built-in.o
local symbol 108: discarded in section `.exit.text' from drivers/built-in.o
local symbol 109: discarded in section `.exit.text' from drivers/built-in.o
local symbol 110: discarded in section `.exit.text' from drivers/built-in.o
local symbol 111: discarded in section `.exit.text' from drivers/built-in.o
local symbol 112: discarded in section `.exit.text' from drivers/built-in.o
local symbol 113: discarded in section `.exit.text' from drivers/built-in.o
local symbol 114: discarded in section `.exit.text' from drivers/built-in.o
local symbol 115: discarded in section `.exit.text' from drivers/built-in.o
local symbol 116: discarded in section `.exit.text' from drivers/built-in.o
local symbol 117: discarded in section `.exit.text' from drivers/built-in.o
local symbol 118: discarded in section `.exit.text' from drivers/built-in.o
local symbol 119: discarded in section `.exit.text' from drivers/built-in.o
local symbol 120: discarded in section `.exit.text' from drivers/built-in.o
local symbol 121: discarded in section `.exit.text' from drivers/built-in.o
local symbol 122: discarded in section `.exit.text' from drivers/built-in.o
local symbol 123: discarded in section `.exit.text' from drivers/built-in.o
local symbol 124: discarded in section `.exit.text' from drivers/built-in.o
local symbol 125: discarded in section `.exit.text' from drivers/built-in.o
local symbol 126: discarded in section `.exit.text' from drivers/built-in.o
local symbol 127: discarded in section `.exit.text' from drivers/built-in.o
local symbol 128: discarded in section `.exit.text' from drivers/built-in.o
local symbol 129: discarded in section `.exit.text' from drivers/built-in.o
local symbol 130: discarded in section `.exit.text' from drivers/built-in.o
local symbol 131: discarded in section `.exit.text' from sound/built-in.o
local symbol 132: discarded in section `.exit.text' from sound/built-in.o
local symbol 133: discarded in section `.exit.text' from arch/parisc/oprofile/built-in.o
local symbol 134: discarded in section `.exit.text' from arch/parisc/oprofile/built-in.o
oprofilefs_unregister: discarded in section `.exit.text' from arch/parisc/oprofile/built-in.o
local symbol 135: discarded in section `.exit.text' from arch/parisc/oprofile/built-in.o
local symbol 136: discarded in section `.exit.text' from net/built-in.o
local symbol 137: discarded in section `.exit.text' from net/built-in.o
local symbol 138: discarded in section `.exit.text' from net/built-in.o
local symbol 139: discarded in section `.exit.text' from net/built-in.o
local symbol 140: discarded in section `.exit.text' from net/built-in.o
local symbol 141: discarded in section `.exit.text' from net/built-in.o
local symbol 142: discarded in section `.exit.text' from net/built-in.o
local symbol 143: discarded in section `.exit.text' from net/built-in.o
local symbol 144: discarded in section `.exit.text' from net/built-in.o
local symbol 145: discarded in section `.exit.text' from net/built-in.o
make: *** [.tmp_vmlinux1] Error 1

(btw removing: "+	*(.exit.text)" in the above patch compile and boot (at
least with defconfig which afaik didn't already include module support).

Any idea on what I missed?

hth,
    Joel


-------------------------------------------------------------------------
Tiscali ADSL: 12 mois à 29,50 €/mois! L'Internet rapide, c'est pour tout
le monde.
http://reg.tiscali.be/default.asp?lg=fr

^ permalink raw reply	[flat|nested] 11+ messages in thread

* RE: [parisc-linux] init and exit text problem
  2004-01-16 16:50 ` Joel Soete
@ 2004-01-16 16:58   ` Joel Soete
  2004-01-16 17:30   ` James Bottomley
  1 sibling, 0 replies; 11+ messages in thread
From: Joel Soete @ 2004-01-16 16:58 UTC (permalink / raw)
  To: Matthew Wilcox, parisc-linux



btw, I try to print a hard copy of ld.info (the only place where I found
some interesting info about /DISCARD/) with texi2dvi but this scipt failed.
Is somebody know a tips to help me?

Thanks in advance,
    Joel


-------------------------------------------------------------------------
Tiscali ADSL: 12 mois à 29,50 €/mois! L'Internet rapide, c'est pour tout
le monde.
http://reg.tiscali.be/default.asp?lg=fr

^ permalink raw reply	[flat|nested] 11+ messages in thread

* RE: [parisc-linux] init and exit text problem
  2004-01-16 16:50 ` Joel Soete
  2004-01-16 16:58   ` Joel Soete
@ 2004-01-16 17:30   ` James Bottomley
  2004-01-16 20:14     ` Randolph Chung
  1 sibling, 1 reply; 11+ messages in thread
From: James Bottomley @ 2004-01-16 17:30 UTC (permalink / raw)
  To: Joel Soete; +Cc: Matthew Wilcox, parisc-linux

On Fri, 2004-01-16 at 11:50, Joel Soete wrote:
> +  /* When something in the kernel is NOT compiled as a module, the
> +   * module cleanup code and data are put into these segments.  Both
> +   * can then be thrown away, as cleanup code is never called unless
> +   * it's a module.
> +   */
> +  /DISCARD/ : {
> +	*(.exit.text)
> +	*(.exit.data)

This is wrong...exit.text and exit.data are runtime discards, not link
time ones, precisely because of the compile failures you get.

> +	*(.exitcall.exit)

This one should be OK.

I'm not sure we can actually do this, though...I seem to remember that
our 64 bit toolchain is not too happy doing discard sections.

James

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [parisc-linux] init and exit text problem
  2004-01-16 20:14     ` Randolph Chung
@ 2004-01-16 18:47       ` James Bottomley
  2004-01-17  0:12         ` James Bottomley
  0 siblings, 1 reply; 11+ messages in thread
From: James Bottomley @ 2004-01-16 18:47 UTC (permalink / raw)
  To: Randolph Chung; +Cc: Matthew Wilcox, parisc-linux

On Fri, 2004-01-16 at 15:14, Randolph Chung wrote:
> > I'm not sure we can actually do this, though...I seem to remember that
> > our 64 bit toolchain is not too happy doing discard sections.
> 
> Bugs not withstanding, it does seem to work. We have this in the linker
> script already for a while:

OK.

There look to be quite a few other differences between our linker script
and x86's.  I'll go over them and see if we need to change.

James

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [parisc-linux] init and exit text problem
  2004-01-16 17:30   ` James Bottomley
@ 2004-01-16 20:14     ` Randolph Chung
  2004-01-16 18:47       ` James Bottomley
  0 siblings, 1 reply; 11+ messages in thread
From: Randolph Chung @ 2004-01-16 20:14 UTC (permalink / raw)
  To: James Bottomley; +Cc: Matthew Wilcox, parisc-linux

> I'm not sure we can actually do this, though...I seem to remember that
> our 64 bit toolchain is not too happy doing discard sections.

Bugs not withstanding, it does seem to work. We have this in the linker
script already for a while:

#ifdef CONFIG_PARISC64
  /* temporary hack until binutils is fixed to not emit these
     for static binaries */
  /DISCARD/ : {
    *(.dynsym)
    *(.dynstr)
    *(.dynamic)
    *(.hash)
  }
#endif

randolph
-- 
Randolph Chung
Debian GNU/Linux Developer, hppa/ia64 ports
http://www.tausq.org/

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [parisc-linux] init and exit text problem
  2004-01-16 18:47       ` James Bottomley
@ 2004-01-17  0:12         ` James Bottomley
  2004-01-17  8:17           ` Grant Grundler
  0 siblings, 1 reply; 11+ messages in thread
From: James Bottomley @ 2004-01-17  0:12 UTC (permalink / raw)
  To: PARISC list; +Cc: Matthew Wilcox, Randolph Chung

The attached should be a first cut at this.

I shifted around or vmlinux.lds.S with a view to minimising the diffs
between ours and the one in i386 (so we can spot changes more easily).

I also:

- Implemented cacheline_aligned sections (this may save a few bytes, and
it mirrors i386)
- Corrected a misnaming of the init_task section
- updated our bss clearing algorithm
- removed the duplicate ".initcall.init" section from the head.S files
(it was confusing the linker script and we end up with it being called
.initcall.init.1)
- done the correct thing with regard to discard and init/exit sections
(although we still don't do runtime discards).
- added a few other sections that i386 has (but we don't) just in case
they'll be useful one day (also helps reduce the diff between us and
i386)

James

===== arch/parisc/kernel/head.S 1.4 vs edited =====
--- 1.4/arch/parisc/kernel/head.S	Wed Dec 17 23:48:38 2003
+++ edited/arch/parisc/kernel/head.S	Fri Jan 16 16:19:18 2004
@@ -22,17 +22,6 @@
 
 	.level 1.1
 
-	.section	.initcall.init
-	.align		4
-	.export __initcall_start
-__initcall_start:
-	.export __initcall_end
-__initcall_end:
-	.export __setup_start
-__setup_start:
-	.export __setup_end
-__setup_end:
-
 	.data
 
 	.export boot_args
@@ -64,13 +53,13 @@
 
 	/* Clear BSS (shouldn't the boot loader do this?) */
 
-	.import _edata,data
-	.import _end,data
+	.import __bss_start,data
+	.import __bss_stop,data
 
-	ldil            L%PA(_edata),%r3
-	ldo             R%PA(_edata)(%r3),%r3
-	ldil            L%PA(_end),%r4
-	ldo             R%PA(_end)(%r4),%r4
+	ldil            L%PA(__bss_start),%r3
+	ldo             R%PA(__bss_start)(%r3),%r3
+	ldil            L%PA(__bss_stop),%r4
+	ldo             R%PA(__bss_stop)(%r4),%r4
 $bss_loop:
 	cmpb,<<,n       %r3,%r4,$bss_loop
 	stw,ma          %r0,4(%r3)
===== arch/parisc/kernel/head64.S 1.3 vs edited =====
--- 1.3/arch/parisc/kernel/head64.S	Wed Dec 17 23:48:38 2003
+++ edited/arch/parisc/kernel/head64.S	Fri Jan 16 16:17:15 2004
@@ -26,17 +26,6 @@
 
 	.level 2.0w
 
-	.section	.initcall.init
-	.align		4
-	.export __initcall_start
-__initcall_start:
-	.export __initcall_end
-__initcall_end:
-	.export __setup_start
-__setup_start:
-	.export __setup_end
-__setup_end:
-
 	.data
 
 	.export boot_args
@@ -64,13 +53,13 @@
 
 	/* Clear BSS (shouldn't the boot loader do this?) */
 
-	.import _edata,data
-	.import _end,data
+	.import __bss_start,data
+	.import __bss_stop,data
 
-	ldil            L%PA(_edata),%r3
-	ldo             R%PA(_edata)(%r3),%r3
-	ldil            L%PA(_end),%r4
-	ldo             R%PA(_end)(%r4),%r4
+	ldil            L%PA(__bss_start),%r3
+	ldo             R%PA(__bss_start)(%r3),%r3
+	ldil            L%PA(__bss_stop),%r4
+	ldo             R%PA(__bss_stop)(%r4),%r4
 $bss_loop:
 	cmpb,<<,n       %r3,%r4,$bss_loop
 	stb,ma          %r0,1(%r3)
===== arch/parisc/kernel/vmlinux.lds.S 1.15 vs edited =====
--- 1.15/arch/parisc/kernel/vmlinux.lds.S	Mon Sep  8 17:00:21 2003
+++ edited/arch/parisc/kernel/vmlinux.lds.S	Fri Jan 16 16:34:28 2004
@@ -1,5 +1,7 @@
 #include <linux/config.h>
 #include <asm-generic/vmlinux.lds.h>
+/* needed for the processor specific cache alignment size */	
+#include <asm/cache.h>
 	
 /* ld script to make hppa Linux kernel */
 #ifndef CONFIG_PARISC64
@@ -22,7 +24,7 @@
   . = 0x10100000;
 
   _text = .;			/* Text and read-only data */
-  .text BLOCK(16) : {
+  .text ALIGN(16) : {
 	*(.text*)
 	*(.PARISC.unwind)
 	*(.fixup)
@@ -39,11 +41,34 @@
 
   RODATA
 
-  .data BLOCK(8192) : {			/* Data without special */
+  /* writeable */
+  .data : {			/* Data */
 	data_start = .;
 	*(.data)
+	CONSTRUCTORS
 	}
 
+  . = ALIGN(4096);
+  /* nosave data is really only used for software suspend...it's here
+   * just in case we ever implement it */
+  __nosave_begin = .;
+  .data_nosave : { *(.data.nosave) }
+  . = ALIGN(4096);
+  __nosave_end = .;
+
+  . = ALIGN(L1_CACHE_BYTES);
+  .data.cacheline_aligned : { *(.data.cacheline_aligned) }
+
+  _edata = .;			/* End of data section */
+
+  . = ALIGN(16384); 		/* init_task */
+  .data.init_task : { *(.data.init_task) }
+
+  /* The interrupt stack is currently partially coded, but not yet
+   * implemented */
+  . = ALIGN(16384);	
+  init_istack : { *(init_istack) }
+
 #ifdef CONFIG_PARISC64
   . = ALIGN(16);               /* Linkage tables */
   .opd : { *(.opd) } PROVIDE (__gp = .); 
@@ -63,7 +88,7 @@
   __setup_start = .;
   .init.setup : { *(.init.setup) }
   __setup_end = .;
-  __start___param =.; 
+  __start___param = .;
   __param : { *(__param) }
   __stop___param = .;
   __initcall_start = .;
@@ -81,6 +106,19 @@
   .con_initcall.init : { *(.con_initcall.init) }
   __con_initcall_end = .;
   SECURITY_INIT
+  /* alternate instruction replacement.  This is a mechanism x86 uses
+   * to detect the CPU type and replace generic instruction sequences
+   * with CPU specific ones.  We don't currently do this in PA, but
+   * it seems like a good idea... */
+  . = ALIGN(4);
+  __alt_instructions = .;
+  .altinstructions : { *(.altinstructions) } 
+  __alt_instructions_end = .; 
+ .altinstr_replacement : { *(.altinstr_replacement) } 
+  /* .exit.text is discard at runtime, not link time, to deal with references
+     from .altinstructions and .eh_frame */
+  .exit.text : { *(.exit.text) }
+  .exit.data : { *(.exit.data) }
   . = ALIGN(4096);
   __initramfs_start = .;
   .init.ramfs : { *(.init.ramfs) }
@@ -91,17 +129,27 @@
   __per_cpu_end = .;
   . = ALIGN(4096);
   __init_end = .;
-
-  init_task BLOCK(16384) : { *(init_task) }  /* The initial task and kernel stack */
-
-  _edata = .;			/* End of data section */
-
-
-  .bss : { *(.bss) *(COMMON) }		/* BSS */
-
+  /* freed after init ends here */
+	
+  __bss_start = .;		/* BSS */
+  .bss : { *(.bss) *(COMMON) }
+  __bss_stop = .; 
 
   _end = . ;
 
+  /* Sections to be discarded */
+  /DISCARD/ : {
+	*(.exitcall.exit)
+#ifdef CONFIG_PARISC64
+	/* temporary hack until binutils is fixed to not emit these
+	 for static binaries */
+	*(.dynsym)
+	*(.dynstr)
+	*(.dynamic)
+	*(.hash)
+#endif
+	}
+
   /* Stabs debugging sections.  */
   .stab 0 : { *(.stab) }
   .stabstr 0 : { *(.stabstr) }
@@ -112,14 +160,4 @@
   .comment 0 : { *(.comment) }
   .note 0 : { *(.note) }	
 
-#ifdef CONFIG_PARISC64
-  /* temporary hack until binutils is fixed to not emit these
-     for static binaries */
-  /DISCARD/ : {
-    *(.dynsym)
-    *(.dynstr)
-    *(.dynamic)
-    *(.hash)
-  }
-#endif
 }
===== include/asm-parisc/cache.h 1.4 vs edited =====
--- 1.4/include/asm-parisc/cache.h	Sun Jan  5 05:22:53 2003
+++ edited/include/asm-parisc/cache.h	Fri Jan 16 13:13:23 2004
@@ -7,7 +7,6 @@
 
 #include <linux/config.h>
 
-#ifndef __ASSEMBLY__
 /*
  * PA 2.0 processors have 64-byte cachelines; PA 1.1 processors have
  * 32-byte cachelines.  The default configuration is not for SMP anyway,
@@ -24,12 +23,12 @@
 #define L1_CACHE_SHIFT 5
 #endif
 
+#ifndef __ASSEMBLY__
+
 #define L1_CACHE_ALIGN(x)       (((x)+(L1_CACHE_BYTES-1))&~(L1_CACHE_BYTES-1))
 
 #define SMP_CACHE_BYTES L1_CACHE_BYTES
 #define L1_CACHE_SHIFT_MAX 5	/* largest L1 which this arch supports */
-
-#define __cacheline_aligned __attribute__((__aligned__(L1_CACHE_BYTES)))
 
 extern void flush_data_cache_local(void);  /* flushes local data-cache only */
 extern void flush_instruction_cache_local(void); /* flushes local code-cache only */

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [parisc-linux] init and exit text problem
  2004-01-17  0:12         ` James Bottomley
@ 2004-01-17  8:17           ` Grant Grundler
  2004-01-19 11:16             ` Joel Soete
  0 siblings, 1 reply; 11+ messages in thread
From: Grant Grundler @ 2004-01-17  8:17 UTC (permalink / raw)
  To: James Bottomley; +Cc: Matthew Wilcox, Randolph Chung, PARISC list

On Fri, Jan 16, 2004 at 07:12:41PM -0500, James Bottomley wrote:
> The attached should be a first cut at this.
> 
> I shifted around or vmlinux.lds.S with a view to minimising the diffs
> between ours and the one in i386 (so we can spot changes more easily).

This boots and works on the A500 (ios).

2.6.1 kernel with this patch and "bridge_ctl" PCI patch from
Russell King are uploaded to ftp.p-l.o:kernels/a500/2.6.1-pa4.tgz
(No, it's not a -pa4 kernel but that's what it happens to use)

thanks!
grant

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [parisc-linux] init and exit text problem
  2004-01-17  8:17           ` Grant Grundler
@ 2004-01-19 11:16             ` Joel Soete
  2004-01-19 18:57               ` Grant Grundler
  0 siblings, 1 reply; 11+ messages in thread
From: Joel Soete @ 2004-01-19 11:16 UTC (permalink / raw)
  To: Grant Grundler, James Bottomley
  Cc: Matthew Wilcox, Randolph Chung, PARISC list

Grant,

A great news: your kernel (2.6.1-pa4) boot well on the N4000-55 :)
palx4000:/var/logs# dmesg | more
Linux version 2.6.1-pa4 (grundler@ios) (gcc version 3.0.4) #10 Sat Jan 17
00:04:07 PST 2004
FP[0] enabled: Rev 1 Model 16
The 64-bit Kernel has started...
Determining PDC firmware type: 64 bit PAT.
model 00005d30 00000491 00000000 00000002 27988e5d 100000f1 00000008 000000b2
000000b2
vers  00000301
CPUID vers 18 rev 11 (0x0000024b)
capabilities 0x1
model 9000/800/N4000-55
Total Memory: 2048 Mb
On node 0 totalpages: 524288
  DMA zone: 524288 pages, LIFO batch:16
  Normal zone: 0 pages, LIFO batch:1
  HighMem zone: 0 pages, LIFO batch:1
Building zonelist for node : 0
Kernel command line: root=/dev/sda5 HOME=/ console=ttyS0 TERM=vt102 palo_kernel=3/vmlinux-2.6.1-pa4
PID hash table entries: 16 (order 4: 256 bytes)
[snip]

:))

>2.6.1 kernel with this patch and "bridge_ctl" PCI patch from
>Russell King are uploaded to ftp.p-l.o:kernels/a500/2.6.1-pa4.tgz

If i well find back your mail and references to this "bridge_ctl" patch otc
I don't reach to apply Russel's patch like this (against 2.6.1) to test on
my B2k (which you know don't work yet with pdc_cons). Can you make your "bridge_ctl"
patch available on ftp.p-l.o?

Thanks again for all,
    Joel

PS: an additional question regarding pdc_cons: in 2.4 there was a device
driver in devices/char/pdc_console.[ch] which allowing to use ttyB device.
But in 2.6 there isn't anymore such driver? any idea?

-------------------------------------------------------------------------
Tiscali ADSL: 12 mois à 29,50 €/mois! L'Internet rapide, c'est pour tout
le monde.
http://reg.tiscali.be/default.asp?lg=fr

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [parisc-linux] init and exit text problem
  2004-01-19 11:16             ` Joel Soete
@ 2004-01-19 18:57               ` Grant Grundler
  0 siblings, 0 replies; 11+ messages in thread
From: Grant Grundler @ 2004-01-19 18:57 UTC (permalink / raw)
  To: Joel Soete; +Cc: PARISC list

On Mon, Jan 19, 2004 at 12:16:40PM +0100, Joel Soete wrote:
> Grant,
> 
> A great news: your kernel (2.6.1-pa4) boot well on the N4000-55 :)

awesome! thanks for trying it.

> If i well find back your mail and references to this "bridge_ctl" patch otc
> I don't reach to apply Russel's patch like this (against 2.6.1) to test on
> my B2k (which you know don't work yet with pdc_cons). Can you make your "bridge_ctl"
> patch available on ftp.p-l.o?

yes - certainly ftp://ftp.parisc-linux.org/patches/diff-2.6.1-bridge_ctl

> PS: an additional question regarding pdc_cons: in 2.4 there was a device
> driver in devices/char/pdc_console.[ch] which allowing to use ttyB device.
> But in 2.6 there isn't anymore such driver? any idea?

sorry - I don't know.

grant

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [parisc-linux] init and exit text problem
@ 2004-01-20 18:12 Joel Soete
  0 siblings, 0 replies; 11+ messages in thread
From: Joel Soete @ 2004-01-20 18:12 UTC (permalink / raw)
  To: Grant Grundler; +Cc: PARISC list

Hi Grant,

> yes - certainly ftp://ftp.parisc-linux.org/patches/diff-2.6.1-bridge_ctl

Ok I applied it against 2.6.1-pa8 (+ some already accepted patch of Matthew
and James related to sym2 driver ;) ).

Compiled with unstable debian gcc-3.3.3 and defconfig, it compiles and boots
well on the b2k ;) (and I am on going to recompile toolchain with it and
all seems to works fine ;) ).

Thanks a lot,
    Joel

ps: I also drive severall test:

Unfortunately, it doesn't help to boot with 64bit kernel on this system
(neither build with my gcc-hppa64_3.3.2 nor with unofficial-deb gcc-hppa64_3.0.4ds3-7.1_hppa.deb
which should the one to use iirc)

And with your config file it always do an hpmc with the 3 compilers I used
(debian gcc-3.3.3, gcc-hppa64 (from gcc-hppa64_3.0.4d
3-7.1_hppa.deb), my own gcc-hppa64_3.3.2), so I would have to find what breaks
for b2k even in 32bit kernel (that will take a long time).

The bad thing is that I don't reach to get any relevant iaoq address from
pim to start investigation :( (just know that it failed very early after
'-- search the FAQ and mailing list...')

hmm just noticed the following diff:
Command line for kernel: 'root=/dev/sda5 HOME=/ console=ttyS0 TERM=vt102
palo_kernel=3/vmlinux-2.6.1-pa7'
Selected kernel: /vmlinux-2.6.1-pa7 from partition 3
ELF32 executable
Entry 001002f0 first 00100000 n 3
Segment 0 load 00100000 size 2586936 mediaptr 0x1000
Segment 1 load 00378000 size 368640 mediaptr 0x279000
Segment 2 load 003d4000 size 553093 mediaptr 0x2d3000
Branching to kernel entry point 0x001002f0.  If this is the last
message you see, you may need to switch your console.  This is
a common symptom -- search the FAQ and mailing list at parisc-linux.org

[snip] normal boot


Command line for kernel: 'roo
=/dev/sda5 HOME=/ console=ttyS0 TERM=vt102
palo_kernel=3/vmlinux-26-up64-gcc30'
Selected kernel: /vmlinux-26-up64-gcc30 from partition 3
ELF64 executable
Entry 00100000 first 00100000 n 2
Segment 0 load 00100000 size 3529136 mediaptr 0x1000
Segment 1 load 00460000 size 237702 mediaptr 0x35f000
Branching to kernel entry point 0x00100000.  If this is the last
message you see, you may need to switch your console.  This is
a common symptom -- search the FAQ and mailing list at parisc-linux.org


HPMC

So 3 segment loaded in 32bit and only 2 in 64bit, is it normal (i lost info
on the N4k boot :( ).
And also seems to "Branching to" a wrong entry point?



-------------------------------------------------------------------------
Tiscali ADSL: 12 mois à 29,50 €/mois! L'Internet rapide, c'est pour tout
le monde.
http://reg.tiscali.be/default.asp?lg=fr

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2004-01-20 18:12 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-01-15  0:18 [parisc-linux] init and exit text problem Matthew Wilcox
2004-01-16 16:50 ` Joel Soete
2004-01-16 16:58   ` Joel Soete
2004-01-16 17:30   ` James Bottomley
2004-01-16 20:14     ` Randolph Chung
2004-01-16 18:47       ` James Bottomley
2004-01-17  0:12         ` James Bottomley
2004-01-17  8:17           ` Grant Grundler
2004-01-19 11:16             ` Joel Soete
2004-01-19 18:57               ` Grant Grundler
  -- strict thread matches above, loose matches on Subject: below --
2004-01-20 18:12 Joel Soete

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.