From: Christian Zankel <chris@mvista.com>
To: Matt Porter <mporter@eng.mcd.mot.com>,
Simone Piccardi <Simone.Piccardi@fi.infn.it>
Cc: linuxppc-dev@lists.linuxppc.org
Subject: BUGboot 0.2 Patch
Date: Fri, 29 Oct 1999 11:08:00 -0700 [thread overview]
Message-ID: <3819E280.43C05759@mvista.com> (raw)
In-Reply-To: 19991014094024.A568@fwrsl-11.phx.mcd.mot.com
[-- Attachment #1: Type: text/plain, Size: 932 bytes --]
Hi Matt,
Hi Simone,
Matt Porter wrote:
>
> On Tue, Oct 12, 1999 at 12:37:03AM +0200, Simone Piccardi wrote:
> > Hi Matt,
> >
> > I'm trying your bugboot but I have some problem. I went through your
> > readme, and these are the steps that I did.
> >
>
> Since I posted 0.2 I've been able to produce this problem with certain
> board/zImage combinations. This fell down my list of priorities a little
> bit for the short term, but I will fix the problems and make a working
> 0.3 version available ASAP.
Enclosed you will find a patch that made bugboot work for me. You can
also use a little-endian machine to build it if you have the apropriate
cross-compiling tools.
Ups.. I forgot to change the README file:
RESDATA_DEST and RESDATA_SIZE are now in romboot.S and ZIMAGE_SIZE is
now called KERNEL_IMAGE (in Makefile).
Greetings,
Christian
--
Christian Zankel MontaVista Software, Inc.
chris@mvista.com +1 408-328-9211
[-- Attachment #2: bugboot-0.2.diff --]
[-- Type: text/plain, Size: 6273 bytes --]
diff -c bugboot-0.2/Makefile bugboot-0.2.1/Makefile
*** bugboot-0.2/Makefile Thu Sep 30 13:15:17 1999
--- bugboot-0.2.1/Makefile Fri Oct 29 10:44:49 1999
***************
*** 10,18 ****
CFLAGS=-c
OBJCOPY=$(CROSS_COMPILE)objcopy
! ZIMAGE_SIZE=602426
! RESDATA_DEST=0x1f78000
! RESDATA_SIZE=0x6a0c
all: bugboot.bin
--- 10,16 ----
CFLAGS=-c
OBJCOPY=$(CROSS_COMPILE)objcopy
! ZIMAGE_SIZE=587399
all: bugboot.bin
***************
*** 24,32 ****
romboot.o: romboot.S
$(CC) $(CFLAGS) \
! -DZIMAGE_SIZE=`wc -c <kernel_image | sed "s: ::g"` \
! -DRESDATA_DEST=RESDATA_DEST \
! -DRESDATA_SIZE=RESDATA_SIZE \
-o romboot.o romboot.S
mkbugboot: mkbugboot.c
--- 22,28 ----
romboot.o: romboot.S
$(CC) $(CFLAGS) \
! -DKERNEL_IMAGE=`wc -c <kernel_image | sed "s: ::g"` \
-o romboot.o romboot.S
mkbugboot: mkbugboot.c
Only in bugboot-0.2.1: kernel_image
diff -c bugboot-0.2/mkbugboot.c bugboot-0.2.1/mkbugboot.c
*** bugboot-0.2/mkbugboot.c Thu Sep 30 11:44:09 1999
--- bugboot-0.2.1/mkbugboot.c Fri Oct 29 10:47:48 1999
***************
*** 17,22 ****
--- 17,30 ----
#include <errno.h>
#include <fcntl.h>
+ // ON LITTLE ENDIAN MACHINES:
+
+ #ifdef LITTLE_ENDIAN
+ #define cpu_to_be32(x) le32_to_cpu(x)
+ #else
+ #define cpu_to_be32(x) (x)
+ #endif
+
#define cpu_to_le32(x) le32_to_cpu((x))
unsigned long le32_to_cpu(unsigned long x)
{
***************
*** 162,169 ****
/* Fill in the PPCBUG ROM boot header */
strncpy(bbh->magic_word, "BOOT", 4); /* PPCBUG magic word */
! bbh->entry_offset = header_size; /* Entry address */
! bbh->routine_length = MAX_BOOT_SIZE+boot_size+2; /* Routine length */
strncpy(bbh->routine_name, "LINUXROM", 8); /* Routine name */
/* Output the header and bootloader to the file */
--- 170,177 ----
/* Fill in the PPCBUG ROM boot header */
strncpy(bbh->magic_word, "BOOT", 4); /* PPCBUG magic word */
! bbh->entry_offset = cpu_to_be32(header_size); /* Entry address */
! bbh->routine_length = cpu_to_be32(MAX_BOOT_SIZE+boot_size+2); /* Routine length */
strncpy(bbh->routine_name, "LINUXROM", 8); /* Routine name */
/* Output the header and bootloader to the file */
***************
*** 185,191 ****
}
/* BUG romboot requires that our size is divisible by 2 */
! if (image_size % 2)
{
image_size++;
write(out_fd, &zero, 1);
--- 193,200 ----
}
/* BUG romboot requires that our size is divisible by 2 */
! /* align image to 4 byte boundary */
! if (image_size % 4)
{
image_size++;
write(out_fd, &zero, 1);
Only in bugboot-0.2.1: mkbugboot.c.orig
Only in bugboot-0.2.1: res_data
diff -c bugboot-0.2/romboot.S bugboot-0.2.1/romboot.S
*** bugboot-0.2/romboot.S Thu Sep 30 12:05:14 1999
--- bugboot-0.2.1/romboot.S Fri Oct 29 10:48:17 1999
***************
*** 5,51 ****
*/
#include "ppc_asm.tmpl"
#define ZIMAGE_START 0xff000100
#define ZIMAGE_DEST 0x00005000
- #define BOOT_VECTOR ZIMAGE_DEST + 0x400
- #define RESDATA_START ZIMAGE_START + ZIMAGE_SIZE
.text
/* .globl main */
kernel:
! lis r9,ZIMAGE_START@h /* Get pointer to top of zImage */
! ori r9,r9,ZIMAGE_START@l /* Bootloader starts immediately */
! lis r11,ZIMAGE_SIZE@h /* Set zImage size */
! ori r11,r11,ZIMAGE_SIZE@l
! lis r12,ZIMAGE_DEST@h /* Setup destination address for */
! ori r12,r12,ZIMAGE_DEST@l /* zImage in RAM */
mtctr r11 /* Setup the counter */
- li r13,0
copy1: lwzu r11,4(r9) /* Load a word in and increment */
stwu r11,4(r12) /* Store a word out and increment */
- xor r13,r13,r11 /* Decrement and repeat until counter */
bdnz copy1 /* is 0 */
resdata:
! lis r9,RESDATA_START@h /* Set top of resdata */
! ori r9,r9,RESDATA_START@l
! lis r11,RESDATA_SIZE@h /* Set resdata size */
! ori r11,r11,RESDATA_SIZE@l
! lis r12,RESDATA_DEST@h /* Set destination address for */
! ori r12,r12,RESDATA_DEST@l /* resdata in RAM */
mtctr r11 /* Setup the counter */
- li r13,0
copy2: lwzu r11,4(r9) /* Load a word in and increment */
stwu r11,4(r12) /* Store a word out and increment */
- xor r13,r13,r11 /* Decrement and repeat until counter */
bdnz copy2 /* is 0 */
lis r3,RESDATA_DEST@h /* Set pointer to resdata in R3 */
--- 5,52 ----
*/
#include "ppc_asm.tmpl"
+ #define RESDATA_DEST 0x7f88000
+ #define RESDATA_SIZE 0x6a0c
+
#define ZIMAGE_START 0xff000100
#define ZIMAGE_DEST 0x00005000
+ #define ZIMAGE_SIZE (KERNEL_IMAGE + 3) & (~3)
+ #define BOOT_VECTOR ZIMAGE_DEST + 0x400
+ #define RESDATA_START ZIMAGE_START + ZIMAGE_SIZE
+
.text
/* .globl main */
kernel:
! lis r9,(ZIMAGE_START-4)@h /* Get pointer to top of zImage */
! ori r9,r9,(ZIMAGE_START-4)@l/* Bootloader starts immediately */
! lis r11,(ZIMAGE_SIZE+3)/4@h /* Set zImage size (number of words) */
! ori r11,r11,(ZIMAGE_SIZE+3)/4@l
! lis r12,(ZIMAGE_DEST-4)@h /* Setup destination address for */
! ori r12,r12,(ZIMAGE_DEST-4)@l /* zImage in RAM */
mtctr r11 /* Setup the counter */
copy1: lwzu r11,4(r9) /* Load a word in and increment */
stwu r11,4(r12) /* Store a word out and increment */
bdnz copy1 /* is 0 */
resdata:
! lis r9,(RESDATA_START-4)@h /* Set top of resdata */
! ori r9,r9,(RESDATA_START-4)@l
! lis r11,(RESDATA_SIZE+3)/4@h /* Set resdata size */
! ori r11,r11,(RESDATA_SIZE+3)/4@l
! lis r12,(RESDATA_DEST-4)@h /* Set destination address for */
! ori r12,r12,(RESDATA_DEST-4)@l /* resdata in RAM */
mtctr r11 /* Setup the counter */
copy2: lwzu r11,4(r9) /* Load a word in and increment */
stwu r11,4(r12) /* Store a word out and increment */
bdnz copy2 /* is 0 */
lis r3,RESDATA_DEST@h /* Set pointer to resdata in R3 */
next prev parent reply other threads:[~1999-10-29 18:08 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
1999-09-30 20:45 BUGboot 0.2 - Boot Linux from flash on Moto boards Matt Porter
1999-10-11 22:37 ` Simone Piccardi
1999-10-14 16:40 ` Matt Porter
1999-10-29 18:08 ` Christian Zankel [this message]
1999-11-02 9:24 ` BUGboot 0.2 Patch Simone Piccardi
1999-11-02 9:45 ` Simone Piccardi
1999-11-12 23:45 ` BUGboot 0.3 - Boot Linux from flash on Moto boards Matt Porter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3819E280.43C05759@mvista.com \
--to=chris@mvista.com \
--cc=Simone.Piccardi@fi.infn.it \
--cc=linuxppc-dev@lists.linuxppc.org \
--cc=mporter@eng.mcd.mot.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.