Skip to contentSkip to conversation

SPARC: bootm SPARC support

PATCH New Daniel Hellstrom 1 participant 1 message Mar 28, 2008

lore
Share & tools
lore
#0 lore raw

PATCH 3/13 SPARC: bootm SPARC support

Hello Wolfgang,

This patch adds support for SPARC u-boot images to bootm. The IH_ARCH_SPARC indentifier in the image header is recognized. The IH_ARCH_SPARC indentifier has already been implemented in mkimage.

---------------------
U-Boot 1.3.2-00273-gf85e20a (Mar 28 2008 - 13:13:48)GAISLER LEON3 GR-XC3S-1500

CPU: LEON3
Board: GR-XC3S-1500
FLASH:  8 MB
In:    serial
Out:   serial
Err:   serial
Net:   GRETH 10/100

Type "run flash_nfs" to mount root filesystem over NFS

Hit any key to stop autoboot: 0
=> setenv scratch 41000000
=> run getkernel
Using GRETH 10/100 device
TFTP from server 192.168.0.20; our IP address is 192.168.0.179 Filename '/uImage'.
Load address: 0x41000000
Loading: #################################################################

         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         ############################################

done
Bytes transferred = 2550387 (26ea73 hex)
=> bootm
## Booting kernel from Legacy Image at 41000000 ...

   Image Name:   Linux-2.6.21.1
   Image Type:   SPARC Linux Kernel Image (gzip compressed)
   Data Size:    2550323 Bytes =  2.4 MB

Load Address: 40004000
Entry Point: f0004000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
## Found SPARC Linux kernel 2.6.21 ...
Booting Linux
Booting Linux...
PROMLIB: Sun Boot Prom Version 0 Revision 0
Linux version 2.6.21.1 (daniel at neptune) (gcc version 3.2.2) #17 Tue Dec 18 16:57
ARCH: LEON
Vendors Slaves
Ahb masters:

 0( 1:  3| 0):   VENDOR_GAISLER    GAISLER_LEON3
 1( 1: 1c| 0):   VENDOR_GAISLER  GAISLER_AHBJTAG
 2( 1: 1d| 0):   VENDOR_GAISLER   GAISLER_ETHMAC
 3( 1: 1f|10):   VENDOR_GAISLER Unknown device 1f
 4( 1: 1f|11):   VENDOR_GAISLER Unknown device 1f

Ahb slaves:
0( 4: f| 0): VENDOR_ESA ESA_MCTRL
+0: 0x0 (raw:0x3e002)
+1: 0x20000000 (raw:0x2000e002)
+2: 0x40000000 (raw:0x4003c002)
1( 1: 6| 0): VENDOR_GAISLER GAISLER_APBMST
+0: 0x80000000 (raw:0x8000fff2)
2( 1: 4| 0): VENDOR_GAISLER GAISLER_LEON3DSU
+0: 0x90000000 (raw:0x9000f002)
Apb slaves:
0( 4: f| 0): VENDOR_ESA ESA_MCTRL
+ 0: 0x80000000 (raw:0xfff1)
1( 1: c| 2): VENDOR_GAISLER GAISLER_APBUART
+ 0: 0x80000100 (raw:0x10fff1)
2( 1: d| 0): VENDOR_GAISLER GAISLER_IRQMP
+ 0: 0x80000200 (raw:0x20fff1)
3( 1: 11| 8): VENDOR_GAISLER GAISLER_GPTIMER
+ 0: 0x80000300 (raw:0x30fff1)
4( 1: 1d|12): VENDOR_GAISLER GAISLER_ETHMAC
+ 0: 0x80000b00 (raw:0xb0fff1)
5( 1: 1f|10): VENDOR_GAISLER Unknown device 1f
+ 0: 0x80000c00 (raw:0xc0fff1)
6( 1: 1f|11): VENDOR_GAISLER Unknown device 1f
+ 0: 0x80000d00 (raw:0xd0fff1)
7( 1: 52| 7): VENDOR_GAISLER Unknown device 52
+ 0: 0x80000f00 (raw:0xf0fff1)
TYPE: Leon2/3 System-on-a-Chip
Ethernet address: 0:0:7a:cc:0:12
CACHE: direct mapped cache, set size 1k
CACHE: not flushing on every context switch
Boot time fixup v1.6. 4/Mar/98 Jakub Jelinek (jj at ultra.linux.cz). Patching kernu
node 2: /cpu00 (type:cpu) (props:.node device_type mid mmu-nctx clock-frequency)
PROM: Built device tree from rootnode 1 with 918 bytes of memory.
DEBUG: psr.impl = 0xf fsr.vers = 0x7
Built 1 zonelists. Total pages: 15318
Kernel command line: console=ttyS0,38400 root=/dev/nfs rw nfsroot=192.168.0.20:
PID hash table entries: 256 (order: 8, 1024 bytes)
Todo: init master_l10_counter
Attaching grlib apbuart serial drivers (clk:40hz):
Console: colour dummy device 80x25
....
---------------

This patch is also available at
ftp://ftp.gaisler.com/gaisler.com/u-boot/patches.

Best Regards,
Daniel Hellstrom

 common/image.c  |    2 +-
 include/image.h |    4 ++++
 2 files changed, 5 insertions(+), 1 deletions(-)
common/image.c +0 -0
index f04826a..ce49bb2 100644
@@ -1014,7 +1014,7 @@ int boot_get_ramdisk (int argc, char *argv[], 

bootm_headers_t *images,

     return 0;

}

-#if defined(CONFIG_PPC) || defined(CONFIG_M68K)
+#if defined(CONFIG_PPC) || defined(CONFIG_M68K) || defined(CONFIG_SPARC)

/**
* boot_ramdisk_high - relocate init ramdisk
* @lmb: pointer to lmb handle, will be used for memory mgmt

include/image.h +0 -0
index 36143e2..c1a6cbb 100644
@@ -419,6 +419,8 @@ static inline int image_check_target_arch 

(image_header_t *hdr)
if (!image_check_arch (hdr, IH_ARCH_PPC))
#elif defined(__sh__)
if (!image_check_arch (hdr, IH_ARCH_SH))
+#elif defined(__sparc__)
+ if (!image_check_arch (hdr, IH_ARCH_SPARC))
#else

 # error Unknown CPU type
 #endif
@@ -571,6 +573,8 @@ static inline int fit_image_check_target_arch (const 
void *fdt, int node)
     if (!fit_image_check_arch (fdt, node, IH_ARCH_PPC))
 #elif defined(__sh__)
     if (!fit_image_check_arch (fdt, node, IH_ARCH_SH))
+#elif defined(__sparc__)
+    if (!fit_image_check_arch (fdt, node, IH_ARCH_SPARC))
 #else
 # error Unknown CPU type
 #endif