[PATCH] powerpc: Simple platform for the ISS 4xx simulator
Josh Boyer
jwboyer at linux.vnet.ibm.com
Fri Oct 3 22:23:43 EST 2008
On Fri, Oct 03, 2008 at 10:07:19AM +1000, Benjamin Herrenschmidt wrote:
>Index: linux-work/arch/powerpc/boot/dts/iss4xx.dts
>===================================================================
>--- /dev/null 1970-01-01 00:00:00.000000000 +0000
>+++ linux-work/arch/powerpc/boot/dts/iss4xx.dts 2008-10-02 15:46:11.000000000 +1000
>@@ -0,0 +1,107 @@
>+/*
>+ * Device Tree Source for IBM Ebony
Lazy. ;)
>+ *
>+ * Copyright (c) 2006, 2007 IBM Corp.
>+ * Josh Boyer <jwboyer at linux.vnet.ibm.com>, David Gibson <dwg at au1.ibm.com>
>+ *
>+ * FIXME: Draft only!
>+ *
>+ * This file is licensed under the terms of the GNU General Public
>+ * License version 2. This program is licensed "as is" without
>+ * any warranty of any kind, whether express or implied.
>+ */
>+
>+/dts-v1/;
>+
>+/ {
>+ #address-cells = <2>;
>+ #size-cells = <1>;
>+ model = "ibm,iss-4xx";
>+ compatible = "ibm,iss-4xx";
>+ dcr-parent = <&{/cpus/cpu at 0}>;
>+
>+ aliases {
>+ serial0 = &UART0;
>+ };
>+
>+ cpus {
>+ #address-cells = <1>;
>+ #size-cells = <0>;
>+
>+ cpu at 0 {
>+ device_type = "cpu";
>+ model = "PowerPC,4xx"; // real CPU changed in sim
>+ reg = <0x00000000>;
>+ clock-frequency = <100000000>; // 100Mhz :-)
>+ timebase-frequency = <100000000>;
>+ i-cache-line-size = <32>; // may need fixup in sim
>+ d-cache-line-size = <32>; // may need fixup in sim
>+ i-cache-size = <32768>; /* may need fixup in sim */
>+ d-cache-size = <32768>; /* may need fixup in sim */
Does "fixup in sim" mean that the simulator itself mucks with the
device tree? Or is there some wrapper that does this prior to kernel
boot?
>+ dcr-controller;
>+ dcr-access-method = "native";
>+ };
>+ };
>+
>+ memory {
>+ device_type = "memory";
>+ reg = <0x00000000 0x00000000 0x00000000>; // Filled in by zImage
>+ };
>+
>+ UIC0: interrupt-controller0 {
>+ compatible = "ibm,uic-4xx", "ibm,uic";
>+ interrupt-controller;
>+ cell-index = <0>;
>+ dcr-reg = <0x0c0 0x009>;
>+ #address-cells = <0>;
>+ #size-cells = <0>;
>+ #interrupt-cells = <2>;
>+
>+ };
>+
>+ UIC1: interrupt-controller1 {
>+ compatible = "ibm,uic-4xx", "ibm,uic";
>+ interrupt-controller;
>+ cell-index = <1>;
>+ dcr-reg = <0x0d0 0x009>;
>+ #address-cells = <0>;
>+ #size-cells = <0>;
>+ #interrupt-cells = <2>;
>+ interrupts = <0x1e 0x4 0x1f 0x4>; /* cascade */
>+ interrupt-parent = <&UIC0>;
>+ };
>+
>+ plb {
>+ compatible = "ibm,plb-4xx", "ibm,plb4"; /* Could be PLB6, doesn't matter */
Why doesn't it matter?
>+ #address-cells = <2>;
>+ #size-cells = <1>;
>+ ranges;
>+ clock-frequency = <0>; // Filled in by zImage
>+
>+ POB0: opb {
>+ compatible = "ibm,opb-4xx", "ibm,opb";
>+ #address-cells = <1>;
>+ #size-cells = <1>;
>+ /* Wish there was a nicer way of specifying a full 32-bit
>+ range */
>+ ranges = <0x00000000 0x00000001 0x00000000 0x80000000
>+ 0x80000000 0x00000001 0x80000000 0x80000000>;
>+ clock-frequency = <0>; // Filled in by zImage
>+
>+ UART0: serial at 40000200 {
>+ device_type = "serial";
>+ compatible = "ns16550";
>+ reg = <0x40000200 0x00000008>;
>+ virtual-reg = <0xe0000200>;
>+ clock-frequency = <11059200>;
>+ current-speed = <115200>;
>+ interrupt-parent = <&UIC0>;
>+ interrupts = <0x0 0x4>;
>+ };
>+ };
>+ };
>+
>+ chosen {
>+ linux,stdout-path = "/plb/opb/serial at 40000200";
>+ };
>+};
>Index: linux-work/arch/powerpc/platforms/44x/Kconfig
>===================================================================
>--- linux-work.orig/arch/powerpc/platforms/44x/Kconfig 2008-10-02 15:45:47.000000000 +1000
>+++ linux-work/arch/powerpc/platforms/44x/Kconfig 2008-10-02 15:47:48.000000000 +1000
>@@ -113,6 +113,17 @@ config YOSEMITE
> help
> This option enables support for the AMCC PPC440EP evaluation board.
>
>+config ISS4xx
>+ bool "ISS 4xx Simulator"
>+ depends on (44x || 40x)
>+ default n
>+ select PPC44x_SIMPLE
>+ select 405GP if 40x
>+ select 440GP if 44x
>+ select PPC_FPU
>+ help
>+ This option enables support for the IBM ISS simulation environment
So I'm going to assume you tested the 40x case and that it works. But I
find it a bit odd to be in the 44x Kconfig.
>Index: linux-work/arch/powerpc/configs/44x/iss4xx_defconfig
>===================================================================
>--- /dev/null 1970-01-01 00:00:00.000000000 +0000
>+++ linux-work/arch/powerpc/configs/44x/iss4xx_defconfig 2008-10-02 15:46:11.000000000 +1000
So.. I'm not really opposed, but do you need a full defconfig
for this? I'm wondering if you could just add the iss4xx platform
to the multi-board ppc44x_defconfig and call it good.
josh
More information about the Linuxppc-dev
mailing list