Skip to contentSkip to conversation

Building sh4 without CONFIG_EXPERT.

PATCH New Rob Landley 3 participants 4 messages May 11, 2014 – Jan 12, 2015 SuperH

lore
Share & tools
lore
#0 lore raw

I got sh4 to work under QEMU years ago as part of my aboriginal linux project, which builds the smallest Linux system capable of rebuilding itself natively from source code. (You can download and run the system images from http://landley.net/aboriginal/bin if you're curious.)

One of the goals of Aboriginal is to make different architectures behave the same way, and one of the ways I do that is by having a basic kernel miniconfig file defining the config symbols common across platforms:

http://landley.net/hg/aboriginal/file/1651/sources/baseconfig-linux

And then append target-specific chunks, ala the LINUX_CONFIG sections from each of:

http://landley.net/hg/aboriginal/file/1651/sources/targets

The problem is, the sh4 target's target-specific chunk is an INSANE 45 config symbols (armv5l needs 15 symbols, powerpc needs 16, i686 needs 7, mips needs 6...) and the reason for the verbosity is that sh4 forces on CONFIG_EXPERT.

As far as I can tell, the only reason sh4 is forcing on CONFIG_EXPERT is to get CONFIG_PATA_PLATFORM. The patch to make sh4 _not_ force on CONFIG_EXPERT is just:

arch/sh/Kconfig +1 -1
index 834b67c..7d0d44d 100644
@@ -1,7 +1,7 @@
 config SUPERH
 	def_bool y
 	select ARCH_MIGHT_HAVE_PC_PARPORT
-	select EXPERT
+	select HAVE_PATA_PLATFORM
 	select CLKDEV_LOOKUP
 	select HAVE_IDE if HAS_IOPORT_MAP
 	select HAVE_MEMBLOCK

Which swaps EXPERT for HAVE_PATA_PLATFORM, so I can still provide a hard drive qemu can see as /dev/sda. The result builds, boots, and works for me in very basic smoke testing, and lets me get my sh4-specific config symbol set down to 27 symbols.

(P.S. I have no idea why hitting ctrl-C kills the _emulator_ rather than passing it along to the emulated system. The other qemu targets don't do that...)

Rob

P.S. I'm using linux 3.14, qemu 2.0, and the sh4 cross compiler toolchain from the URL at the top of the post. I can be more explicit if you care...

Acked-by
#1 lore raw
Quoted 30 lines · Rob Landley

I got sh4 to work under QEMU years ago as part of my aboriginal linux project, which builds the smallest Linux system capable of rebuilding itself natively from source code. (You can download and run the system images from http://landley.net/aboriginal/bin if you're curious.)

One of the goals of Aboriginal is to make different architectures behave the same way, and one of the ways I do that is by having a basic kernel miniconfig file defining the config symbols common across platforms:

http://landley.net/hg/aboriginal/file/1651/sources/baseconfig-linux

And then append target-specific chunks, ala the LINUX_CONFIG sections from each of:

http://landley.net/hg/aboriginal/file/1651/sources/targets

The problem is, the sh4 target's target-specific chunk is an INSANE 45 config symbols (armv5l needs 15 symbols, powerpc needs 16, i686 needs 7, mips needs 6...) and the reason for the verbosity is that sh4 forces on CONFIG_EXPERT.

As far as I can tell, the only reason sh4 is forcing on CONFIG_EXPERT is to get CONFIG_PATA_PLATFORM. The patch to make sh4 _not_ force on CONFIG_EXPERT is just:

arch/sh/Kconfig +0 -0
index 834b67c..7d0d44d 100644

arch/sh/Kconfig line 7

Quoted 8 lines
arch/sh/Kconfig +1 -1
@@ -1,7 +1,7 @@
 config SUPERH
 	def_bool y
 	select ARCH_MIGHT_HAVE_PC_PARPORT
-	select EXPERT
+	select HAVE_PATA_PLATFORM
 	select CLKDEV_LOOKUP
 	select HAVE_IDE if HAS_IOPORT_MAP
 	select HAVE_MEMBLOCK

Since PATA_PLATFORM is:

config PATA_PLATFORM

	tristate "Generic platform device PATA support"
	depends on EXPERT || PPC || HAVE_PATA_PLATFORM

then any of EXPERT, PPC, or HAVE_PATA_PLATFORM should be sufficient. and using HAVE_PATA_PLATFORM is more direct and obvious.

Quoted 14 lines

Which swaps EXPERT for HAVE_PATA_PLATFORM, so I can still provide a hard drive qemu can see as /dev/sda. The result builds, boots, and works for me in very basic smoke testing, and lets me get my sh4-specific config symbol set down to 27 symbols.

(P.S. I have no idea why hitting ctrl-C kills the _emulator_ rather than passing it along to the emulated system. The other qemu targets don't do that...)

Rob

P.S. I'm using linux 3.14, qemu 2.0, and the sh4 cross compiler toolchain from the URL at the top of the post. I can be more explicit if you care...

Signature · 1 line
~Randy
#2 lore raw
Quoted 42 lines · Randy Dunlap
Quoted 30 lines · Rob Landley

I got sh4 to work under QEMU years ago as part of my aboriginal linux project, which builds the smallest Linux system capable of rebuilding itself natively from source code. (You can download and run the system images from http://landley.net/aboriginal/bin if you're curious.)

One of the goals of Aboriginal is to make different architectures behave the same way, and one of the ways I do that is by having a basic kernel miniconfig file defining the config symbols common across platforms:

http://landley.net/hg/aboriginal/file/1651/sources/baseconfig-linux

And then append target-specific chunks, ala the LINUX_CONFIG sections from each of:

http://landley.net/hg/aboriginal/file/1651/sources/targets

The problem is, the sh4 target's target-specific chunk is an INSANE 45 config symbols (armv5l needs 15 symbols, powerpc needs 16, i686 needs 7, mips needs 6...) and the reason for the verbosity is that sh4 forces on CONFIG_EXPERT.

As far as I can tell, the only reason sh4 is forcing on CONFIG_EXPERT is to get CONFIG_PATA_PLATFORM. The patch to make sh4 _not_ force on CONFIG_EXPERT is just:

arch/sh/Kconfig +0 -0
index 834b67c..7d0d44d 100644

arch/sh/Kconfig line 7

Quoted 8 lines
arch/sh/Kconfig +1 -1
@@ -1,7 +1,7 @@
 config SUPERH
      def_bool y
      select ARCH_MIGHT_HAVE_PC_PARPORT
-     select EXPERT
+     select HAVE_PATA_PLATFORM
      select CLKDEV_LOOKUP
      select HAVE_IDE if HAS_IOPORT_MAP
      select HAVE_MEMBLOCK

Since PATA_PLATFORM is:

Quoted 8 lines

config PATA_PLATFORM
tristate "Generic platform device PATA support" depends on EXPERT || PPC || HAVE_PATA_PLATFORM

then any of EXPERT, PPC, or HAVE_PATA_PLATFORM should be sufficient. and using HAVE_PATA_PLATFORM is more direct and obvious.

Note that you have to resent to akpm to get sh-patches applied.

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

#3 lore raw

PATCH 1/1 Build superh without CONFIG_EXPERT.

From: Rob Landley <[email protected]>

What sh4 actually wants is HAVE_PATA_PLATFORM, so select that instead.

---

 arch/sh/Kconfig |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

A follow-up patch could simplify the defconfigs in arch/sh/configs...

arch/sh/Kconfig +1 -1
@@ -1,7 +1,7 @@
 config SUPERH
 	def_bool y
 	select ARCH_MIGHT_HAVE_PC_PARPORT
-	select EXPERT
+	select HAVE_PATA_PLATFORM
 	select CLKDEV_LOOKUP
 	select HAVE_IDE if HAS_IOPORT_MAP
 	select HAVE_MEMBLOCK