From 8e89ccf89e817630b99d097f600680921c4fa923 Mon Sep 17 00:00:00 2001 From: Stefan Reinauer Date: Thu, 4 May 2006 22:07:30 +0000 Subject: [PATCH] more of the sparc32 port by Blue Swirl git-svn-id: svn://coreboot.org/openbios/openbios-devel@4 f158a5a8-5612-0410-a976-696ce0be7e32 --- Makefile | 4 +- arch/sparc32/build.xml | 36 ++- arch/sparc32/builtin.c | 2 +- arch/sparc32/entry.S | 2 +- arch/sparc32/init.fs | 37 --- arch/sparc32/libgcc/__divdi3.c | 29 ++ arch/sparc32/libgcc/__udivdi3.c | 13 + arch/sparc32/libgcc/__udivmoddi4.c | 33 ++ arch/sparc32/libgcc/__umoddi3.c | 16 + arch/sparc32/libgcc/ashldi3.c | 62 ++++ arch/sparc32/libgcc/ashrdi3.c | 63 ++++ arch/sparc32/libgcc/build.xml | 12 + arch/sparc32/multiboot.c | 2 +- arch/sparc32/openbios.c | 9 +- arch/sparc32/tree.fs | 234 ++++++++++++++ config/examples/cross-sparc32_config.xml | 3 + config/examples/sparc32_config.xml | 2 + drivers/build.xml | 4 + drivers/esp.c | 377 +++++++++++++++++++++++ drivers/esp.fs | 18 ++ drivers/sbus.c | 52 ++++ drivers/sbus.fs | 19 ++ include/openbios/drivers.h | 6 + include/sparc32/dma.h | 213 +++++++++++++ include/sparc32/io.h | 6 +- kernel/dict.c | 3 + 26 files changed, 1201 insertions(+), 56 deletions(-) create mode 100644 arch/sparc32/libgcc/__divdi3.c create mode 100644 arch/sparc32/libgcc/__udivdi3.c create mode 100644 arch/sparc32/libgcc/__udivmoddi4.c create mode 100644 arch/sparc32/libgcc/__umoddi3.c create mode 100644 arch/sparc32/libgcc/ashldi3.c create mode 100644 arch/sparc32/libgcc/ashrdi3.c create mode 100644 arch/sparc32/libgcc/build.xml create mode 100644 arch/sparc32/tree.fs create mode 100644 drivers/esp.c create mode 100644 drivers/esp.fs create mode 100644 drivers/sbus.c create mode 100644 drivers/sbus.fs create mode 100644 include/sparc32/dma.h diff --git a/Makefile b/Makefile index 7350b89..631e16f 100644 --- a/Makefile +++ b/Makefile @@ -9,7 +9,8 @@ info: clean: @echo -n "Cleaning up..." - @rm -rf $(ODIR) forth.dict.core + @rm -rf $(ODIR) forth.dict.core + @find . -type f -name "*~" -exec rm \{\} \; @echo " ok" directories: clean @@ -22,6 +23,7 @@ directories: clean @mkdir -p $(ODIR)/target/arch/ppc/pearpc @mkdir -p $(ODIR)/target/arch/ppc/mol @mkdir -p $(ODIR)/target/arch/x86/xbox + @mkdir -p $(ODIR)/target/sparc32/libgcc @mkdir -p $(ODIR)/target/kernel @mkdir -p $(ODIR)/target/modules @mkdir -p $(ODIR)/target/fs/grubfs diff --git a/arch/sparc32/build.xml b/arch/sparc32/build.xml index 1fec32e..1107db3 100644 --- a/arch/sparc32/build.xml +++ b/arch/sparc32/build.xml @@ -1,6 +1,9 @@ + + + @@ -11,6 +14,7 @@ + @@ -18,40 +22,53 @@ + + + + + + + - $(LD) -N -T arch/sparc32/ldscript -o $@.nostrip $^ `$(CC) --print-libgcc` + $(LD) -N -T arch/sparc32/ldscript -o $@.nostrip $^ $(NM) $@.nostrip | sort > $(ODIR)/openbios-multiboot.syms cp $@.nostrip $@ $(STRIP) $@ - - + + + - $(LD) -N -T arch/sparc32/ldscript -o $@.nostrip $^ `$(CC) --print-libgcc` + $(LD) -N -T arch/sparc32/ldscript -o $@.nostrip $^ $(NM) $@.nostrip | sort > $(ODIR)/openbios-plain.syms cp $@.nostrip $@ $(STRIP) $@ - - + + + @@ -77,13 +94,13 @@ - $(LD) -N -T arch/sparc32/ldscript -o $@.nostrip $^ `$(CC) --print-libgcc` + $(LD) -N -T arch/sparc32/ldscript -o $@.nostrip $^ $(NM) $@.nostrip | sort > $(ODIR)/openbios-builtin.syms cp $@.nostrip $@ $(STRIP) $@ - - + + @@ -91,6 +108,7 @@ + diff --git a/arch/sparc32/builtin.c b/arch/sparc32/builtin.c index b351c70..46309b8 100644 --- a/arch/sparc32/builtin.c +++ b/arch/sparc32/builtin.c @@ -1,4 +1,4 @@ -/* tag: openbios forth starter for builtin dictionary for amd64 +/* tag: openbios forth starter for builtin dictionary for sparc32 * * Copyright (C) 2003 Stefan Reinauer * diff --git a/arch/sparc32/entry.S b/arch/sparc32/entry.S index 3d30545..0ea3381 100644 --- a/arch/sparc32/entry.S +++ b/arch/sparc32/entry.S @@ -181,7 +181,7 @@ entry: bl 1b add %o0, 0x4, %o0 - set 0x10000, %sp ! XXX + set _estack, %sp mov 0, %fp mov 2, %g1 wr %g1, 0x0, %wim ! make window 1 invalid diff --git a/arch/sparc32/init.fs b/arch/sparc32/init.fs index 3a2eb9e..75c14e2 100644 --- a/arch/sparc32/init.fs +++ b/arch/sparc32/init.fs @@ -4,43 +4,6 @@ \ ." 0 > boot hd:2,\boot\vmlinuz root=/dev/hda2" cr ; DIAG-initializer -" /" find-device - " SUNW,SparcStation-5" encode-string " name" property - " " encode-string " idprom" property - " SparcStation" encode-string " banner-name" property - " sun4m" encode-string " compatible" property - -new-device - " memory" device-name - \ 12230 encode-int " reg" property - external - : open true ; - : close ; - \ claim ( phys size align -- base ) - \ release ( phys size -- ) -finish-device - -new-device - " STP1012PGA" device-name - " cpu" device-type - " " encode-string " performance-monitor" property - d# 256 encode-int " mmu-nctx" int-property - d# 32 encode-int " cache-line-size" int-property - d# 512 encode-int " cache-nlines" int-property - 1 encode-int " mid" int-property -finish-device - -new-device - " iommu" device-name -finish-device - -" /iommu" find-device -new-device - " sbus" device-name - " hierarchical" device-type -finish-device - - : make-openable ( path ) find-dev if begin ?dup while diff --git a/arch/sparc32/libgcc/__divdi3.c b/arch/sparc32/libgcc/__divdi3.c new file mode 100644 index 0000000..3641396 --- /dev/null +++ b/arch/sparc32/libgcc/__divdi3.c @@ -0,0 +1,29 @@ +/* + * arch/i386/libgcc/__divdi3.c + */ + +#include +#include + +extern uint64_t __udivmoddi4(uint64_t num, uint64_t den, uint64_t *rem); + +int64_t __divdi3(int64_t num, int64_t den) +{ + int minus = 0; + int64_t v; + + if ( num < 0 ) { + num = -num; + minus = 1; + } + if ( den < 0 ) { + den = -den; + minus ^= 1; + } + + v = __udivmoddi4(num, den, NULL); + if ( minus ) + v = -v; + + return v; +} diff --git a/arch/sparc32/libgcc/__udivdi3.c b/arch/sparc32/libgcc/__udivdi3.c new file mode 100644 index 0000000..901ce2a --- /dev/null +++ b/arch/sparc32/libgcc/__udivdi3.c @@ -0,0 +1,13 @@ +/* + * arch/i386/libgcc/__divdi3.c + */ + +#include +#include + +extern uint64_t __udivmoddi4(uint64_t num, uint64_t den, uint64_t *rem); + +uint64_t __udivdi3(uint64_t num, uint64_t den) +{ + return __udivmoddi4(num, den, NULL); +} diff --git a/arch/sparc32/libgcc/__udivmoddi4.c b/arch/sparc32/libgcc/__udivmoddi4.c new file mode 100644 index 0000000..e77be3a --- /dev/null +++ b/arch/sparc32/libgcc/__udivmoddi4.c @@ -0,0 +1,33 @@ +#include + +extern void __divide_error(); + +uint64_t __udivmoddi4(uint64_t num, uint64_t den, uint64_t *rem_p) +{ + uint64_t quot = 0, qbit = 1; + + if ( den == 0 ) { + __divide_error(); + return 0; /* If trap returns... */ + } + + /* Left-justify denominator and count shift */ + while ( (int64_t)den >= 0 ) { + den <<= 1; + qbit <<= 1; + } + + while ( qbit ) { + if ( den <= num ) { + num -= den; + quot += qbit; + } + den >>= 1; + qbit >>= 1; + } + + if ( rem_p ) + *rem_p = num; + + return quot; +} diff --git a/arch/sparc32/libgcc/__umoddi3.c b/arch/sparc32/libgcc/__umoddi3.c new file mode 100644 index 0000000..c007d48 --- /dev/null +++ b/arch/sparc32/libgcc/__umoddi3.c @@ -0,0 +1,16 @@ +/* + * arch/i386/libgcc/__umoddi3.c + */ + +#include +#include + +extern uint64_t __udivmoddi4(uint64_t num, uint64_t den, uint64_t *rem); + +uint64_t __umoddi3(uint64_t num, uint64_t den) +{ + uint64_t v; + + (void) __udivmoddi4(num, den, &v); + return v; +} diff --git a/arch/sparc32/libgcc/ashldi3.c b/arch/sparc32/libgcc/ashldi3.c new file mode 100644 index 0000000..008403e --- /dev/null +++ b/arch/sparc32/libgcc/ashldi3.c @@ -0,0 +1,62 @@ +/* ashrdi3.c extracted from gcc-2.95.2/libgcc2.c which is: */ +/* Copyright (C) 1989, 92-98, 1999 Free Software Foundation, Inc. + +This file is part of GNU CC. + +GNU CC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU CC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU CC; see the file COPYING. If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +#define BITS_PER_UNIT 8 + +typedef int SItype __attribute__ ((mode (SI))); +typedef unsigned int USItype __attribute__ ((mode (SI))); +typedef int DItype __attribute__ ((mode (DI))); +typedef int word_type __attribute__ ((mode (__word__))); + +struct DIstruct {SItype high, low;}; + +typedef union +{ + struct DIstruct s; + DItype ll; +} DIunion; + +DItype +__ashldi3 (DItype u, word_type b) +{ + DIunion w; + word_type bm; + DIunion uu; + + if (b == 0) + return u; + + uu.ll = u; + + bm = (sizeof (SItype) * BITS_PER_UNIT) - b; + if (bm <= 0) + { + w.s.low = 0; + w.s.high = (USItype)uu.s.low << -bm; + } + else + { + USItype carries = (USItype)uu.s.low >> bm; + w.s.low = (USItype)uu.s.low << b; + w.s.high = ((USItype)uu.s.high << b) | carries; + } + + return w.ll; +} diff --git a/arch/sparc32/libgcc/ashrdi3.c b/arch/sparc32/libgcc/ashrdi3.c new file mode 100644 index 0000000..78efb65 --- /dev/null +++ b/arch/sparc32/libgcc/ashrdi3.c @@ -0,0 +1,63 @@ +/* ashrdi3.c extracted from gcc-2.7.2/libgcc2.c which is: */ +/* Copyright (C) 1989, 1992, 1993, 1994, 1995 Free Software Foundation, Inc. + +This file is part of GNU CC. + +GNU CC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU CC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU CC; see the file COPYING. If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +#define BITS_PER_UNIT 8 + +typedef int SItype __attribute__ ((mode (SI))); +typedef unsigned int USItype __attribute__ ((mode (SI))); +typedef int DItype __attribute__ ((mode (DI))); +typedef int word_type __attribute__ ((mode (__word__))); + +struct DIstruct {SItype high, low;}; + +typedef union +{ + struct DIstruct s; + DItype ll; +} DIunion; + +DItype +__ashrdi3 (DItype u, word_type b) +{ + DIunion w; + word_type bm; + DIunion uu; + + if (b == 0) + return u; + + uu.ll = u; + + bm = (sizeof (SItype) * BITS_PER_UNIT) - b; + if (bm <= 0) + { + /* w.s.high = 1..1 or 0..0 */ + w.s.high = uu.s.high >> (sizeof (SItype) * BITS_PER_UNIT - 1); + w.s.low = uu.s.high >> -bm; + } + else + { + USItype carries = (USItype)uu.s.high << bm; + w.s.high = uu.s.high >> b; + w.s.low = ((USItype)uu.s.low >> b) | carries; + } + + return w.ll; +} diff --git a/arch/sparc32/libgcc/build.xml b/arch/sparc32/libgcc/build.xml new file mode 100644 index 0000000..a746350 --- /dev/null +++ b/arch/sparc32/libgcc/build.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/arch/sparc32/multiboot.c b/arch/sparc32/multiboot.c index c35ab0f..d5877d4 100644 --- a/arch/sparc32/multiboot.c +++ b/arch/sparc32/multiboot.c @@ -46,7 +46,7 @@ void collect_multiboot_info(struct sys_info *info) struct multiboot_info *mbinfo; struct multiboot_mmap *mbmem; unsigned mbcount, mbaddr; - int i; + unsigned int i; struct memrange *mmap; int mmap_count; module_t *mod; diff --git a/arch/sparc32/openbios.c b/arch/sparc32/openbios.c index 8d7c0b1..7f09b73 100644 --- a/arch/sparc32/openbios.c +++ b/arch/sparc32/openbios.c @@ -8,6 +8,7 @@ #include "openbios/config.h" #include "openbios/bindings.h" +#include "openbios/drivers.h" #include "asm/types.h" #include "dict.h" #include "openbios/kernel.h" @@ -47,9 +48,11 @@ arch_init( void ) void setup_timers(void); modules_init(); -#ifdef CONFIG_DRIVER_IDE - setup_timers(); - ob_ide_init(); +#ifdef CONFIG_DRIVER_SBUS + ob_sbus_init(); +#endif +#ifdef CONFIG_DRIVER_ESP + ob_esp_init(); #endif device_end(); bind_func("platform-boot", boot ); diff --git a/arch/sparc32/tree.fs b/arch/sparc32/tree.fs new file mode 100644 index 0000000..3b9f3e2 --- /dev/null +++ b/arch/sparc32/tree.fs @@ -0,0 +1,234 @@ + +" /" find-device + 2 encode-int " #address-cells" property + 1 encode-int " #size-cells" property + " SUNW,SparcStation-5" encode-string " name" property + " " encode-string " idprom" property + " SparcStation" encode-string " banner-name" property + " sun4m" encode-string " compatible" property + : encode-unit encode-unit-sbus ; + : decode-unit decode-unit-sbus ; + +new-device + " memory" device-name + external + : open true ; + : close ; + \ claim ( phys size align -- base ) + \ release ( phys size -- ) +finish-device + +new-device + " STP1012PGA" device-name + " cpu" device-type + d# 256 encode-int " mmu-nctx" property + d# 32 encode-int " cache-line-size" property + d# 512 encode-int " cache-nlines" property + 1 encode-int " mid" property +finish-device + +new-device + " iommu" device-name + 2 encode-int " #address-cells" property + 1 encode-int " #size-cells" property + h# 0 encode-int h# 10000000 encode-int encode+ h# 00000300 encode-int encode+ " reg" property + external + : open cr ." opening iommu" cr true ; + : close ; + : encode-unit encode-unit-sbus ; + : decode-unit decode-unit-sbus ; +finish-device + +" /iommu" find-device +new-device + " sbus" device-name + " hierarchical" device-type + 2 encode-int " #address-cells" property + 1 encode-int " #size-cells" property + h# 0 encode-int h# 0 encode-int encode+ h# 0 encode-int encode+ h# 30000000 encode-int encode+ h# 10000000 encode-int encode+ + h# 1 encode-int encode+ h# 0 encode-int encode+ h# 0 encode-int encode+ h# 40000000 encode-int encode+ h# 10000000 encode-int encode+ + h# 2 encode-int encode+ h# 0 encode-int encode+ h# 0 encode-int encode+ h# 50000000 encode-int encode+ h# 10000000 encode-int encode+ + h# 3 encode-int encode+ h# 0 encode-int encode+ h# 0 encode-int encode+ h# 60000000 encode-int encode+ h# 10000000 encode-int encode+ + h# 4 encode-int encode+ h# 0 encode-int encode+ h# 0 encode-int encode+ h# 70000000 encode-int encode+ h# 10000000 encode-int encode+ + " ranges" property + h# 0 encode-int h# 10001000 encode-int encode+ h# 00000028 encode-int encode+ " reg" property + external + : open cr ." opening SBus" cr true ; + : close ; + : encode-unit encode-unit-sbus ; + : decode-unit decode-unit-sbus ; +finish-device + +" /iommu/sbus" find-device +new-device + " SUNW,CS4231" device-name + " serial" device-type + 5 encode-int 0 encode-int encode+ " intr" property + 5 encode-int " interrupts" property + h# 3 encode-int h# 0c000000 encode-int encode+ h# 00000040 encode-int encode+ " reg" property + " audio" encode-string " alias" property +finish-device + +" /iommu/sbus" find-device +new-device + " SUNW,bpp" device-name + h# 4 encode-int h# 0c800000 encode-int encode+ h# 0000001c encode-int encode+ " reg" property + h# 33 encode-int 0 encode-int encode+ " intr" property +finish-device + +" /iommu/sbus" find-device +new-device + " SUNW,tcx" device-name + " display" device-type + h# 1d encode-int " vbporch" property + h# 90 encode-int " hbporch" property + h# 06 encode-int " vsync" property + h# 88 encode-int " hsync" property + h# 03 encode-int " vfporch" property + h# 18 encode-int " hfporch" property + h# 03dfd240 encode-int " pixfreq" property + h# 3c encode-int " vfreq" property + h# 300 encode-int " height" property + h# 400 encode-int " width" property + h# 400 encode-int " linebytes" property + d# 24 encode-int " depth" property + " no" encode-string " tcx-8-bit" property + 5 encode-int 0 encode-int encode+ " intr" property + 5 encode-int " interrupts" property + 2 encode-int h# 00800000 encode-int encode+ h# 00100000 encode-int encode+ + 2 encode-int encode+ h# 02000000 encode-int encode+ h# 00000001 encode-int encode+ + 2 encode-int encode+ h# 04000000 encode-int encode+ h# 00800000 encode-int encode+ + 2 encode-int encode+ h# 06000000 encode-int encode+ h# 00800000 encode-int encode+ + 2 encode-int encode+ h# 0a000000 encode-int encode+ h# 00000001 encode-int encode+ + 2 encode-int encode+ h# 0c000000 encode-int encode+ h# 00000001 encode-int encode+ + 2 encode-int encode+ h# 0e000000 encode-int encode+ h# 00000001 encode-int encode+ + 2 encode-int encode+ h# 00700000 encode-int encode+ h# 00001000 encode-int encode+ + 2 encode-int encode+ h# 00200000 encode-int encode+ h# 00000004 encode-int encode+ + 2 encode-int encode+ h# 00300000 encode-int encode+ h# 0000081c encode-int encode+ + 2 encode-int encode+ h# 00000000 encode-int encode+ h# 00010000 encode-int encode+ + 2 encode-int encode+ h# 00240000 encode-int encode+ h# 00000004 encode-int encode+ + 2 encode-int encode+ h# 00280000 encode-int encode+ h# 00000001 encode-int encode+ + " reg" property +finish-device + +" /iommu/sbus" find-device +new-device + " espdma" device-name + h# 4 encode-int h# 08400000 encode-int encode+ h# 00000010 encode-int encode+ " reg" property + external + : encode-unit encode-unit-sbus ; + : decode-unit decode-unit-sbus ; +finish-device + +" /iommu/sbus" find-device +new-device + " ledma" device-name + h# 4 encode-int h# 08400010 encode-int encode+ h# 00000020 encode-int encode+ " reg" property + h# 3f encode-int " burst-sizes" property + external + : encode-unit encode-unit-sbus ; + : decode-unit decode-unit-sbus ; +finish-device + +" /iommu/sbus/ledma" find-device +new-device + " le" device-name + " network" device-type + h# 4 encode-int h# 08c00000 encode-int encode+ h# 00000004 encode-int encode+ " reg" property + h# 7 encode-int " busmaster-regval" property + h# 26 encode-int 0 encode-int encode+ " intr" property +finish-device + +" /iommu/sbus" find-device +new-device + \ disabled with xxx, bad interactions with Linux + " xxxpower-management" device-name + h# 4 encode-int h# 0a000000 encode-int encode+ h# 00000010 encode-int encode+ " reg" property +finish-device + + +\ obio (on-board IO) +" /" find-device +new-device + " obio" device-name + " hierarchical" device-type + 2 encode-int " #address-cells" property + 1 encode-int " #size-cells" property + h# 0 encode-int h# 0 encode-int encode+ h# 0 encode-int encode+ h# 71000000 encode-int encode+ h# 01000000 encode-int encode+ + " ranges" property + external + : open cr ." opening obio" cr true ; + : close ; + : encode-unit encode-unit-sbus ; + : decode-unit decode-unit-sbus ; +finish-device + +" /obio" find-device +new-device + " SUNW,fdtwo" device-name + " block" device-type + h# 0 encode-int h# 00400000 encode-int encode+ h# 0000000f encode-int encode+ " reg" property + h# 2b encode-int 0 encode-int encode+ " intr" property +finish-device + +" /obio" find-device +new-device + " auxio" device-name + h# 0 encode-int h# 00900000 encode-int encode+ h# 00000001 encode-int encode+ " reg" property +finish-device + +" /obio" find-device +new-device + " counter" device-name + h# 0 encode-int h# 00d00000 encode-int encode+ h# 00000010 encode-int encode+ + h# 0 encode-int encode+ h# 00d10000 encode-int encode+ h# 00000010 encode-int encode+ + " reg" property +finish-device + +" /obio" find-device +new-device + " eeprom" device-name + h# 0 encode-int h# 00200000 encode-int encode+ h# 00002000 encode-int encode+ " reg" property + " mk48t08" model +finish-device + +" /obio" find-device +new-device + " interrupt" device-name + h# 0 encode-int h# 00e00000 encode-int encode+ h# 00000010 encode-int encode+ + h# 0 encode-int encode+ h# 00e10000 encode-int encode+ h# 00000010 encode-int encode+ + " reg" property +finish-device + +" /obio" find-device +new-device + " power" device-name + h# 0 encode-int h# 00910000 encode-int encode+ h# 00000001 encode-int encode+ " reg" property + h# 22 encode-int 0 encode-int encode+ " intr" property +finish-device + +" /obio" find-device +new-device + " slavioconfig" device-name + h# 0 encode-int h# 00800000 encode-int encode+ h# 00000001 encode-int encode+ " reg" property +finish-device + +" /obio" find-device +new-device + " zs" device-name + " serial" device-type + h# 0 encode-int h# 00000000 encode-int encode+ h# 00000008 encode-int encode+ " reg" property + 1 encode-int " slave" property + h# 2c encode-int 0 encode-int encode+ " intr" property + 1 encode-int " keyboard" property + 1 encode-int " mouse" property +finish-device + +" /obio" find-device +new-device + " zs" device-name + " serial" device-type + h# 0 encode-int h# 00100000 encode-int encode+ h# 00000008 encode-int encode+ " reg" property + 0 encode-int " slave" property + h# 2c encode-int 0 encode-int encode+ " intr" property +finish-device diff --git a/config/examples/cross-sparc32_config.xml b/config/examples/cross-sparc32_config.xml index 80ee00f..820b3ad 100644 --- a/config/examples/cross-sparc32_config.xml +++ b/config/examples/cross-sparc32_config.xml @@ -26,6 +26,7 @@