Booting a simple Program to a MCA IBM 7013J or BULL ESCALA 204 D

Michael Westermann michael at dvmwest.de
Tue Jan 30 08:02:42 EST 2007


Hello,

I've a Bull ESCALA-D With MCA and 8 PPC 604 and one gig ram. I work for
a few years on the booting and loading this box with linux.

My first step is loading and starting simple program via tftp-boot.

I've attached a simple bootfile. This load and display an hexvalue
to the Small user display, and loop until power off. This Programm use
the BUMP-Processor.

My next step is using the serial console...

I think that all IBM MCA have a similarly boot and io concept.

Are anyone interested  on linux on PPC-MCA?

I've compiled with a gcc ppc-crosscompile on i386.

<-Start- tftp_boot.S->
#include "ppc.h" 

#define BOOTSTRAP	0x400
#define NVRAM		0xff60
		.org	0
		.byte 0xc9,0xc2,0xd4,0xc1
		.byte 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
		.byte 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
		.byte 0x00,0x00,0x00,0x00
		.byte 0x00,0x00,0x00,0x22
		.byte 0x00,0x00,0x00,0x22
		.byte 0x00,0x00,0x00,0x02
		.byte 0x00,0x00,0x00,0x02
		.byte 0x00,0x00,0x00,0x22
		.byte 0x00,0x00,0x00,0x00
		.byte 0x01,0x02,0x00,0x00
		
		.byte 0x00,0x00,0x00,0x00
		.byte 0x00,0x00,0x00,0x00
		.byte 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
		.byte 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
		.byte 0x00,0x00,0x00,0x00
		.byte 0x00,0x00,0x00,0x22
		.byte 0x00,0x00,0x03,0x8c
		.byte 0x00,0x00,0x00,0x02
		.byte 0x00,0x00,0x00,0x02
		.byte 0x00,0x00,0x00,0x22
		.byte 0x00,0x00,0x00,0x00
		.org	BOOTSTRAP 
		.org	BOOTSTRAP+0x38c
		lis	r1,32		// Stack 0x200000

		addi	r28, r4 ,0	

		mtibatu	0,r3
		mtdbatu	0,r3
		mtibatu	1,r3
		mtdbatu	1,r3
		mtibatu	2,r3
		mtdbatu	2,r3
		mtibatu	3,r3
		mtdbatu	3,r3
		addi	r0,r4,19	
		mtibatl	0,r0		// BPRN=0,      PP = 11 WIMG=0010
		addi	r0,r4,18
		mtdbatl	0,r0		// BPRN=0,      PP = 10 WIMG=0010
		addi	r0,r4,255
		mtibatu	0,r0		// BEPI=0, Area Length=8MB, Vs=1,Vp=1
		mtdbatu	0,r0		// BEPI=0, Area Length=8MB, Vs=1,Vp=1
		li	r4,0
		oris	r4,r4,65472	
		addi	r0,r4,19	
		mtibatl	1,r0		// BPRN=0xffc0, PP = 11 WIMG=0010, 
		addi	r0,r4,19
		mtdbatl	1,r0		// BPRN=0xffc0, PP = 11 WIMG=0010, 
		addi	r0,r4,127	
		mtibatu	1,r0		// BEPI=0xffc0, Area Length=1MB, Vs=1,Vp=1
		mtdbatu	1,r0		// BEPI=0xffc0, Area Length=1MB, Vs=1,Vp=1
		lis	r4,-256
		addi	r0,r4,35
		mtibatl	2,r0		// BPRN=0xff00, PP = 11 WIMG=0100, 
		addi	r0,r4,34	// BPRN=0xff00, PP = 10 WIMG=0100, 
		mtdbatl	2,r0
		addi	r0,r4,255
		mtibatu	2,r0		// BEPI=0xff00, Area Length=8MB, Vs=1,Vp=1
		mtdbatu	2,r0		// BEPI=0xff00, Area Length=8MB, Vs=1,Vp=1
		lis	r4,384		
		addi	r0,r4,19
		mtibatl	3,r0		// BPRN=0x0180, PP = 11 WIMG=0010, 
		addi	r0,r4,18	// BPRN=0x0180, PP = 10 WIMG=0010, 
		mtdbatl	3,r0
		addi	r0,r4,255
		mtibatu	3,r0		// BEPI=0x0180, Area Length=8MB, Vs=1,Vp=1
		mtdbatu	3,r0		// BEPI=0x0180, Area Length=8MB, Vs=1,Vp=1
		sync	
		isync
		li	r0,12400
		mtmsr	r0
		isync
		sync
		
		bl 	set_led_copy

		li	r3, 0x444
		bl	dump_IPL	
		sync
		isync
loop:		b	loop				

dump_IPL:	mflr	r0		
      		mtctr	r0
		rlwinm	r4,r3,20,0,11
		li	r3,	0x300
		oris	r3,r3,	NVRAM
		stw	r4,0(r3)
		sync
		bctr

set_led_copy:	cmpwi	r3,0		// set_led_copy
		lis	r3,-158
		addic	r3,r3,2528
		li	r0,1
		beq-	L00004f68
		stw	r0,-2376(r3)
		blr
L00004f68:	li	r0,0
		stw	r0,-2376(r3)
		blr

		.org	0x43ff
		.byte 0	
<-end- tftp_boot.S->

Print on the Console:
 
SYSTEM WIRD GESTARTET (BOOT)                                                    
                                                                                
Boot-Vorgang lauft . . .  Bitte warten.                                         
                                                                                
Ethernet: Steckplatz 0/6, BNC / modular Jacks                                   
Hardware-Adresse .......................................... 0800382113B3        
                                                                                
....              Packete gesendet     Packete empfangen                        
                                                                                
BOOTP             00002                00001                                    
                                                                                
TFTP              00036                00035                                    
<< 299 >>                                                                       
<< 444 >>

and on User-Display 

444

Michael



More information about the Linuxppc-dev mailing list