summaryrefslogtreecommitdiff
path: root/packages/lilo-sh/files/lilo-sh-linux.patch
diff options
context:
space:
mode:
authorDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
committerDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
commit709c4d66e0b107ca606941b988bad717c0b45d9b (patch)
tree37ee08b1eb308f3b2b6426d5793545c38396b838 /packages/lilo-sh/files/lilo-sh-linux.patch
parentfa6cd5a3b993f16c27de4ff82b42684516d433ba (diff)
rename packages/ to recipes/ per earlier agreement
See links below for more details: http://thread.gmane.org/gmane.comp.handhelds.openembedded/21326 http://thread.gmane.org/gmane.comp.handhelds.openembedded/21816 Signed-off-by: Denys Dmytriyenko <denis@denix.org> Acked-by: Mike Westerhof <mwester@dls.net> Acked-by: Philip Balister <philip@balister.org> Acked-by: Khem Raj <raj.khem@gmail.com> Acked-by: Marcin Juszkiewicz <hrw@openembedded.org> Acked-by: Koen Kooi <koen@openembedded.org> Acked-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com>
Diffstat (limited to 'packages/lilo-sh/files/lilo-sh-linux.patch')
-rw-r--r--packages/lilo-sh/files/lilo-sh-linux.patch1971
1 files changed, 0 insertions, 1971 deletions
diff --git a/packages/lilo-sh/files/lilo-sh-linux.patch b/packages/lilo-sh/files/lilo-sh-linux.patch
deleted file mode 100644
index 0eadf26cff..0000000000
--- a/packages/lilo-sh/files/lilo-sh-linux.patch
+++ /dev/null
@@ -1,1971 +0,0 @@
-This is the patch that upgrade lilo to match the version included in
-the old lilosh CVS.
-
-diff -ruN lilo.orig/ChangeLog lilo/ChangeLog
---- lilo.orig/ChangeLog Thu Jan 1 09:00:00 1970
-+++ lilo/ChangeLog Thu Dec 7 16:17:10 2000
-@@ -0,0 +1,44 @@
-+2000-11-26 NIIBE Yutaka <gniibe@m17n.org>
-+
-+ * first.S (done): Flush the cache.
-+ * second.c (start): Call cache_flush.
-+ (cache_flush): New function.
-+
-+2000-11-25 NIIBE Yutaka <gniibe@m17n.org>
-+
-+ * first.S: Don't put '$' for register spec.
-+ * second.c (start): Don't put '$' for register spec.
-+ (machine_type, memory_size, io_base, put_string_1, read_sectors):
-+ Likewise.
-+ * second.lds: Use new tool chain's ldscript.
-+ * defs.h: Add declaration of memcpy.
-+
-+2000-09-09 NIIBE Yutaka <gniibe@m17n.org>
-+
-+ * first.S (real_start): Set argument 0 for cache enable call.
-+
-+2000-08-19 NIIBE Yutaka <gniibe@m17n.org>
-+
-+ * second.c (get_sector_address): Bug fix for # of sector == 0.
-+ (start): Support machine types of CqREEK and SolutionEngine.
-+
-+ * first.S (load_sector_address): Bug fix for checking LBA.
-+ (real_start): Call "enable cache" BIOS feature.
-+
-+2000-08-05 NIIBE Yutaka <gniibe@m17n.org>
-+
-+ * Makefile (first.o): Added -traditional for "'" in comments.
-+
-+ * second.c (machine_type, serial_type, memory_size, io_base): New
-+ functions.
-+ (start): Implement kernel command line handling a bit.
-+ (read_sectors): Emit error message.
-+ (get_sector_address): Emit error message.
-+
-+ * first.S (read_a_sector): Implement error handling.
-+ (load_sector_address): Check if it's LBA.
-+
-+2000-07-22 NIIBE Yutaka <gniibe@m17n.org>
-+
-+ * second.c (start): Don't load two magic sectors at the memory
-+ of executable image.
-diff -ruN lilo.orig/Makefile lilo/Makefile
---- lilo.orig/Makefile Fri Dec 8 10:10:02 2000
-+++ lilo/Makefile Fri Dec 8 11:46:04 2000
-@@ -39,76 +39,55 @@
- GO=-DGO=0x`sed '/go/s/^.*go 0 \(....\) A.*$$/\1/p;d' first.lis`
-
- SHELL=/bin/sh
--CC=cc
--CPP=$(CC) -E
--AS86=as86 -0 -a
--LD86=ld86 -0
-
--CFLAGS=-Wall -g $(PCONFIG)
--LDFLAGS=#-Xlinker -qmagic
-+CROSS_COMPILE = sh3-linux-
-+CC =$(CROSS_COMPILE)gcc
-+LD =$(CROSS_COMPILE)ld
-+OBJCOPY =$(CROSS_COMPILE)objcopy
-+STRIP =$(CROSS_COMPILE)strip
-+
-+CFLAGS = -O2 -I. -pipe -fPIC $(CONFIG) -DPATH_MAX=255
-+CPP=$(CC) -E -traditional
-+
-+#CFLAGS=-Wall -g $(PCONFIG)
-+#LDFLAGS=#-Xlinker -qmagic
-
- OBJS=lilo.o map.o geometry.o boot.o device.o common.o bsect.o cfg.o temp.o \
- partition.o identify.o
-
--.SUFFIXES: .img .b
-+.SUFFIXES: .b
-
--all: check-config lilo boot.b dump.b os2_d.b chain.b dparam.com \
-- activate
--
--check-config:
-- $(CPP) check-config.cpp $(PCONFIG) >/dev/null
-+all: lilo boot.b
-
- .c.o:
- $(CC) -c $(CFLAGS) $*.c
-
--.s.o:
-- $(AS86) -w -o $*.o $*.s
--
--.o.img:
-- $(LD86) -s -o $*.img $*.o
-+boot.b: first.bin second.bin
-+ cat first.bin second.bin >boot.b
-
--.img.b:
-- dd if=$*.img of=$*.b bs=32 skip=1
-+first.bin: first.exe
-+ $(OBJCOPY) -S first.exe -O binary first.bin
-
--activate: activate.c
-- $(CC) -Wall -s -O -o activate activate.c $(LDFLAGS)
--
--dparam.com: dparam.img
-- dd if=dparam.img of=dparam.com bs=288 skip=1
--
--lilo: $(OBJS)
-- $(CC) -o lilo $(LDFLAGS) $(OBJS)
-+second.bin: second.exe
-+ $(OBJCOPY) -R .comment -S second.exe -O binary second.bin
-
--boot.b: first.b second.b
-- (dd if=first.b bs=512 conv=sync; dd if=second.b) >boot.b
-+first.exe: first.o
-+ $(LD) -EL -e start first.o -o first.exe -Ttext 0x8c200000
-
--first.s: first.S lilo.h lilo
-- $(CPP) $(PCONFIG) `./lilo -X` first.S -o first.s
-+second.exe: second.o string.o
-+ $(LD) -T second.lds -EL second.o string.o -o second.exe -Ttext 0x8c201000
-
--second.s: second.S lilo.h lilo
-- $(CPP) $(PCONFIG) $(GO) `./lilo -X` second.S -o second.s
-+first.o: first.S
-+ $(CC) $(CFLAGS) -c first.S
-
--chain.s: chain.S lilo.h
-- $(CPP) $(PCONFIG) $(GO) chain.S -o chain.s
-+second.o: second.c
-+ $(CC) $(CFLAGS) -c second.c
-
--os2_d.s: chain.S lilo.h
-- $(CPP) $(PCONFIG) $(GO) chain.S -DDOS_D -o os2_d.s
-+string.o: string.c
-+ $(CC) $(CFLAGS) -c string.c
-
--#dos_d.s: chain.S lilo.h first.lis
--# $(CPP) $(PCONFIG) $(GO) chain.S -DDOS_D -o dos_d.s
--
--dump.s: dump.S lilo.h first.lis
-- $(CPP) $(PCONFIG) `./lilo -X` dump.S -DDOS_D -o dump.s \
-- -DGO=0x`sed '/go/s/^.*go 0 \(....\) A.*$$/\1/p;d' first.lis`
--
--xxx.s: chain.S lilo.h
-- $(CPP) chain.S -DXXX -o xxx.s
--
--first.o first.lis: first.s
-- $(AS86) -w -o first.o -l first.lis first.s
--
--second.lis: second.s
-- $(AS86) -w -l second.lis second.s
-+lilo: $(OBJS)
-+ $(CC) -o lilo $(LDFLAGS) $(OBJS)
-
- install: all
- if [ ! -d $$ROOT$(SBIN_DIR) ]; then mkdir $$ROOT$(SBIN_DIR); fi
-@@ -118,13 +97,9 @@
- mkdir $$ROOT$(USRSBIN_DIR); fi
- if [ -f $$ROOT$(BOOT_DIR)/boot.b ]; then \
- mv $$ROOT$(BOOT_DIR)/boot.b $$ROOT$(BOOT_DIR)/boot.old; fi
-- if [ -f $$ROOT$(BOOT_DIR)/chain.b ]; then \
-- mv $$ROOT$(BOOT_DIR)/chain.b $$ROOT$(BOOT_DIR)/chain.old; fi
-- if [ -f $$ROOT$(BOOT_DIR)/os2_d.b ]; then \
-- mv $$ROOT$(BOOT_DIR)/os2_d.b $$ROOT$(BOOT_DIR)/os2_d.old; fi
-- cp boot.b chain.b os2_d.b $$ROOT$(BOOT_DIR)
-+ cp boot.b $$ROOT$(BOOT_DIR)
- cp lilo $$ROOT$(SBIN_DIR)
-- strip $$ROOT$(SBIN_DIR)/lilo
-+ $(STRIP) $$ROOT$(SBIN_DIR)/lilo
- cp keytab-lilo.pl $$ROOT$(USRSBIN_DIR)
- @if [ -e $$ROOT/etc/lilo/install ]; then echo; \
- echo -n "$$ROOT/etc/lilo/install is obsolete. LILO is now ";\
-@@ -142,11 +117,8 @@
- && mv ../lilo ../lilo-`cat VERSION`
-
- clean:
-- rm -f *.o *.img *.lis first.s second.s chain.s \
-- os2_d.s dump.s tmp_make first.b second.b
--
--spotless: clean
-- rm -f lilo activate boot.b chain.b os2_d.b dump.b dparam.com
-+ rm -f *.o *.exe *.bin tmp_make
-+ rm -f lilo boot.b
-
- ### Dependencies
- activate.o : activate.c
-diff -ruN lilo.orig/chain.S lilo/chain.S
---- lilo.orig/chain.S Thu Oct 15 05:14:25 1998
-+++ lilo/chain.S Thu Jan 1 09:00:00 1970
-@@ -1,255 +0,0 @@
--/* chain.S - LILO boot chainer */
--
--/* Copyright 1992-1998 Werner Almesberger. See file COPYING for details. */
--
--
--#define LILO_ASM
--#include "lilo.h"
--
--
-- .text
--
-- .globl _main
-- .org 0
--
--_main: jmp start
--
-- .org 6
--
-- .ascii "LILO"
-- .word STAGE_CHAIN
-- .word VERSION
--
--offset: .word 0
--drive: .byte 0
-- .byte 0 ! head, always zero
--
--hint: .word drvmap ! pointer to drive map
--
--ptable: .blkw 0x20 ! partition table to preload
--
--start: cli ! set SS:SP to 0:7C00
-- xor ax,ax
-- mov ss,ax
-- mov ax,#0x7c00
-- mov sp,ax
-- sti
-- mov ax,#SETUPSEG ! move boot sector to default location
-- mov ds,ax
-- xor ax,ax
-- mov es,ax
-- mov cx,#256
--mtmp = SETUPSECS-1 ! broken math ...
-- mov si,#mtmp*512
-- mov di,#BOOTSEG*16
-- rep
-- movsw
--#ifdef DOS_D
--dos4: seg es
-- mov byte ptr BOOTSEG*16+0x24,#0x81
--#endif
-- mov cx,#0x20 ! move partition table
-- mov si,#ptable
-- mov di,#PART_TABLE
-- rep
-- movsw
-- ! mess with the partition table
--#if defined(LCF_REWRITE_TABLE) || defined(LCF_READONLY)
-- mov si,#prtmap ! get partition table change rules
--prtclp: lodsw ! bios == 0 indicates end
-- or al,al
-- jz pmend ! at end -> quit
-- cmp al,cache ! already in cache ?
-- je incache ! yes -> no loading required
-- push ax ! save table data
-- call flush ! flush the cache
-- pop ax
-- push ax
-- mov cache,al ! remember drive in cache
-- cmp al,drive ! boot drive ?
-- jne noc ! no -> load into scratch area
-- xor ax,ax ! load at 0000:0600
-- mov bx,#PARTS_LOAD
-- jmp loadit
--noc: mov ax,ds
-- mov bx,#PARTS_SCR ! scratch area
--loadit: mov es,ax ! set up pointers and remember them
-- mov ces,ax
-- mov cbx,bx
-- mov ax,#0x201 ! load partition table, one sector
-- mov dx,cache ! drive from cache (DH = 0)
-- mov cx,#1
-- int 0x13 ! load it
-- jc wrfail ! error -> abort
-- pop ax ! get BIOS and offset
--incache:les bx,cbx ! load pointer
-- add bx,#PART_TABLE_OFFSET ! move to partition table
-- add bl,ah ! offset is always in [0x1be,0x1fd]
-- lodsw ! see what we need to do
-- seg es ! match ?
-- cmp byte ptr (bx),al
-- jne nocng ! no -> do not change
-- seg es ! change
-- mov byte ptr (bx),ah
-- mov byte ptr dirty,#1 ! mark as dirty
--nocng: br prtclp ! next one
--
--flush: test byte ptr dirty,#1 ! dirty ?
-- jz noflush ! no -> do not write
-- mov ax,#0x301 ! write one sector
-- mov dx,cache ! get the drive
-- or dl,dl ! nothing cached ?
-- jz noflush ! no -> do not flush
-- les bx,cbx ! reload pointer
-- int 0x13 ! write ...
-- jc wrfail ! argl
--noflush:ret
--pmend: call flush ! flush table
-- br nopp ! and proceed
--wrfail: mov si,#failmsg ! complain
-- call say
-- mov ax,#FIRSTSEG ! try to restart LILO
-- jmpi #GO,FIRSTSEG
--
--cache: .byte 0 ! drive, 0 means not cached
-- .byte 0 ! head, always 0
--cbx: .blkw 1
--ces: .blkw 1
--dirty: .byte 0
--
--#endif
--
--nopp:
-- mov ax,drvmap ! need to install mapper ?
-- or ax,ax
-- jz noimap ! no -> go on
-- call swap13
--noimap:
--
-- mov si,offset ! DS:SI and ES:SI point to the partition
-- add si,#PART_TABLE
-- mov dx,drive ! initialize DX (drive and head)
-- xor ax,ax ! set DS and ES to zero
--#ifdef XXX
-- mov ax,ds
-- mov es,ax
-- mov si,#lilosig
-- mov bx,#cmd
-- mov dl,#0xfe
--#else
-- mov ds,ax
-- mov es,ax
--#endif
-- mov bp,#0 ! might help some boot problems
-- mov ax,#0xaa55 ! boot signature (just in case ...)
-- jmpi #BOOTSEG*16,0 ! start boot sector
--
--#ifdef XXX
--lilosig:.ascii "LILO"
--cmd: .ascii "98"
-- .byte 0
--#endif
--
--#if defined(LCF_REWRITE_TABLE)
--
--! Display a NUL-terminated string on the console
--
--say: lodsb ! get byte
-- or al,al ! NUL ?
-- jz aret ! yes -> done
-- mov ah,#14 ! display, tty-style
-- xor bh,bh
-- int 0x10
-- jmp say ! next one
--aret: ret ! done
--
--failmsg:.ascii "Rewrite error."
-- .byte 13,10,0
--
--#endif
--
--swap13: seg es ! allocate 1 kB
-- dec word ptr [0x413]
-- int 0x12 ! get start segment
-- mov cl,#6
-- shl ax,cl
-- cli ! disable interrupts
-- xor bx,bx ! zero a few registers
-- mov di,bx
-- seg es ! change offset
-- xchg bx,[0x4c]
-- mov old13of,bx
-- mov bx,ax ! change segment
-- seg es
-- xchg bx,[0x4e]
-- mov old13sg,bx
-- mov es,ax ! move drive swapper
-- mov si,#new13
-- mov cx,#new13end-new13
-- rep
-- movsb
-- sti ! enable interrupts
-- ret ! done
--
--new13: push ax ! save AX (contains function code in AH)
-- push bp ! need BP to mess with stack
-- mov bp,sp
-- ! Stack layout:
-- !
-- ! +8 INT flags
-- ! +6 INT CS
-- ! +4 INT IP
-- ! +2 AX
-- ! BP+0 BP
-- pushf ! push flags (to act like interrupt)
-- push si
-- mov si,#drvmap-new13
--mapfl: seg cs ! get next entry
-- lodsw
-- or ax,ax ! at end ?
-- jz nomap ! yes -> do not map
-- cmp dl,al ! match ?
-- jne mapfl ! no -> continue
-- mov dl,ah ! map drive
--nomap: pop si ! restore SI
-- mov 8(bp),ax ! overwrite old flags (to remember mapping)
-- mov ax,2(bp) ! restore AX
-- mov bp,(bp) ! restore BP
-- .byte 0x9a ! CALL FAR
--old13of:.word 0
--old13sg:.word 0
-- push bp ! save BP again
-- mov bp,sp
-- ! New stack layout:
-- !
-- ! +10 mapping (was flags)
-- ! +8 INT CS
-- ! +6 INT IP
-- ! +4 AX
-- ! +2 obsolete BP
-- ! BP+0 BP
-- xchg ax,4(bp) ! save AX and get command
-- pushf ! fix driver number, if necessary
-- cmp ah,#8 ! do not fix
-- je done13
-- cmp ah,#0x15 ! do not fix
-- je done13
-- mov ax,10(bp) ! no mapping ?
-- or ax,ax
-- jz done13
-- mov dl,al ! fix mapping
--done13: mov ax,4(bp) ! restore AX
-- pop 10(bp) ! restore flags
-- pop bp ! get BP
-- add sp,#4 ! fix SP
-- iret ! done
--
--drvmap: .blkw DRVMAP_SIZE+1
--
--new13end:
--
--#if defined(LCF_REWRITE_TABLE)
--prtmap: .blkw PRTMAP_SIZE*2+1 ! only first word of last entry is read
--#endif
--
--theend:
-diff -ruN lilo.orig/chain.old.S lilo/chain.old.S
---- lilo.orig/chain.old.S Wed Jun 18 16:42:15 1997
-+++ lilo/chain.old.S Thu Jan 1 09:00:00 1970
-@@ -1,260 +0,0 @@
--/* chain.S - LILO boot chainer */
--
--/* Copyright 1992-1997 Werner Almesberger. See file COPYING for details. */
--
--
--#define LILO_ASM
--#include "lilo.h"
--
--
-- .text
--
-- .globl _main
-- .org 0
--
--_main: jmp start
--
-- .org 2
--
-- .ascii "LILO"
-- .word STAGE_CHAIN
-- .word VERSION
--
--offset: .word 0
--drive: .byte 0
-- .byte 0 ! head, always zero
--
--start: cli ! set SS:SP to 0:7C00
-- xor ax,ax
-- mov ss,ax
-- mov ax,#0x7c00
-- mov sp,ax
-- sti
-- mov ax,#SETUPSEG ! move boot sector to default location
-- mov ds,ax
-- xor ax,ax
-- mov es,ax
-- mov cx,#256
-- mov si,#512
-- mov di,#BOOTSEG*16
-- rep
-- movsw
-- push bx ! save secret message
--#ifdef DOS_D
--#if 0
-- seg es
-- cmp byte ptr BOOTSEG*16+0x26,#0x29
-- je dos4
-- mov bx,#baddos ! complain
-- call say
-- mov ax,#FIRSTSEG ! restart LILO
-- jmpi #GO,FIRSTSEG
--#endif
--dos4: seg es
-- mov byte ptr BOOTSEG*16+0x24,#0x81
--#endif
-- mov cx,#0x20 ! move partition table
-- mov si,#PART_TABLE_OFFSET
-- mov di,#PART_TABLE
-- rep
-- movsw
--#if defined(SWAP_HD) || defined(SWAP_FD)
-- call swap13
--#endif
-- ! table entry
-- pop bx ! get secret message (active partition)
--#ifdef LCF_REWRITE_TABLE
-- or bl,bl ! none set ?
-- jz tonopp ! yes -> do not patch
--br tonopp
-- cmp bx,#0x81 ! valid code ?
-- jb towrfail ! no -> abort
-- cmp bx,#0x84
-- jna wrokay ! yes -> continue
--towrfail:br wrfail
--tonopp: br nopp
--wrokay: push bx ! save BX
-- xor ax,ax ! ES becomes 0
-- mov es,ax
-- mov ax,#0x201 ! load partition table, one sector
-- mov dx,#0x80 ! first drive
-- mov cx,#1
-- mov bx,#PARTS_LOAD
-- int 0x13 ! load it
-- jc wrfail ! error -> abort
-- mov cx,#4 ! process all four entries
-- mov bx,#PART_TABLE
--ptchpt: seg es ! clear all active flags
-- mov byte ptr (bx),#0
--#if defined(LCF_FIX_TYPE) && defined(LCF_HIDE_DOS)
-- seg es
-- mov al,(bx+4) ! get partition type
-- cmp al,#PART_DOS12 ! hidden ?
-- je hideme ! no -> hide it
-- cmp al,#PART_DOS16
-- je hideme
-- cmp al,#PART_DOS32
-- jne nonrel ! already hidden -> continue
--hideme: add al,#HIDDEN_OFF ! write back corrected value
-- seg es
-- mov (bx+4),al
--#endif
--nonrel: add bx,#16 ! next entry
-- loop ptchpt
-- pop bx ! compute active flag position
-- dec bx
-- shl bl,1
-- shl bx,1
-- shl bx,1
-- shl bx,1
-- cmp bx,offset ! right ?
-- jne wrfail ! no -> abort
-- seg es ! set active flag
-- mov byte ptr (bx+PART_TABLE),#0x80
--#ifdef LCF_FIX_TYPE
-- seg es ! is this a
-- mov al,byte ptr (bx+PART_TABLE+4)
-- cmp al,#PART_HDOS12 ! hidden ?
-- je unhideme ! yes -> unhide it
-- cmp al,#PART_HDOS16
-- je unhideme
-- cmp al,#PART_HDOS32
-- jne nounhid ! not hidden -> continue
--unhideme:sub al,#HIDDEN_OFF ! write back corrected value
-- seg es
-- mov (bx+PART_TABLE+4),al
--#endif
--nounhid:mov ax,#0x301 ! save it (restore all registers for
-- mov dx,#0x80 ! paranoia)
-- mov cx,#1
-- mov bx,#0x600
-- int 0x13 ! write ...
-- jc wrfail ! argl
-- mov bx,#passmsg ! confirm modification
-- call say
-- jmp nopp
--wrfail: mov bx,#failmsg ! complain
-- call say
-- mov ax,#FIRSTSEG ! restart LILO
-- jmpi #GO,FIRSTSEG
--#endif
--nopp: mov si,offset ! DS:SI and ES:SI point to the partition
-- add si,#PART_TABLE
-- mov dx,drive ! initialize DX (drive and head)
-- xor ax,ax ! set DS and ES to zero
--#ifdef XXX
-- mov ax,ds
-- mov es,ax
-- mov si,#lilosig
-- mov bx,#cmd
-- mov dl,#0xfe
--#else
-- mov ds,ax
-- mov es,ax
--#endif
-- mov bp,#0 ! might help some boot problems
-- mov ax,#0xaa55 ! boot signature (just in case ...)
-- jmpi #BOOTSEG*16,0 ! start boot sector
--
--#ifdef XXX
--lilosig:.ascii "LILO"
--cmd: .ascii "98"
-- .byte 0
--#endif
--
--#if defined(DOS_D) || defined(LCF_REWRITE_TABLE)
--
--! Display a NUL-terminated string on the console
--
--say: mov al,(bx) ! get byte
-- or al,al ! NUL ?
-- jz aret ! yes -> done
-- push bx ! save pointer
-- mov ah,#14 ! display, tty-style
-- xor bh,bh
-- int 0x10
-- pop bx
-- inc bx ! next one
-- jmp say
--aret: ret ! done
--
--#ifdef DOS_D
--baddos: .ascii "Need DOS version 4 or newer."
-- .byte 13,10,0
--#endif
--
--failmsg:.ascii "Rewrite error."
-- .byte 13,10,0
--
--passmsg:.ascii "Rewrote the partition table."
-- .byte 13,10,0
--
--#endif
--
--#if defined(SWAP_HD) || defined(SWAP_FD)
--
--swap13: seg es ! allocate 1 kB
-- dec word ptr [0x413]
-- int 0x12 ! get start segment
-- mov cl,#6
-- shl ax,cl
-- cli ! disable interrupts
-- xor bx,bx ! zero a few registers
-- mov di,bx
-- seg es ! change offset
-- xchg bx,[0x4c]
-- mov old13of,bx
-- mov bx,ax ! change segment
-- seg es
-- xchg bx,[0x4e]
-- mov old13sg,bx
-- mov es,ax ! move drive swapper
-- mov si,#new13
-- mov cx,#new13end-new13
-- rep
-- movsb
-- sti ! enable interrupts
-- ret ! done
--
--new13: seg cs ! save function code
-- mov fcode-new13,ah
-- test dl,#0x80 ! hard disk drive ?
--#ifdef SWAP_FD
-- jnz noswap ! yes -> go on
--#else
-- jz noswap ! no -> go on
--#endif
-- xor dl,#1 ! swap drive 0 and 1
--noswap: pushf
-- .byte 0x9a ! CALL FAR
--old13of:.word 0
--old13sg:.word 0
-- pushf ! fix driver number, if necessary
-- seg cs
-- cmp byte ptr fcode-new13,#8 ! do not fix
-- je done13
-- seg cs
-- cmp byte ptr fcode-new13,#0x15 ! do not fix
-- je done13
-- test dl,#0x80 ! hard disk drive ?
--#ifdef SWAP_FD
-- jnz done13 ! yes -> go on
--#else
-- jz done13 ! no -> go on
--#endif
-- xor dl,#1 ! fix it
--done13: seg cs
-- mov tmpbx-new13,bx ! restore flags
-- mov bx,sp
-- seg ss
-- pop 6(bx)
-- seg cs
-- mov bx,tmpbx-new13
-- iret ! done
--new13end:
--fcode: .byte 0 ! function code
--tmpbx: .word 0
--
--#endif
--
--theend:
-diff -ruN lilo.orig/defs.h lilo/defs.h
---- lilo.orig/defs.h Thu Jan 1 09:00:00 1970
-+++ lilo/defs.h Thu Dec 7 16:17:10 2000
-@@ -0,0 +1,2 @@
-+extern void *memcpy (void *__dest, const void *__src, unsigned int __n);
-+extern int strlen (__const char *__s);
-diff -ruN lilo.orig/dump.S lilo/dump.S
---- lilo.orig/dump.S Wed Jun 18 16:42:22 1997
-+++ lilo/dump.S Thu Jan 1 09:00:00 1970
-@@ -1,131 +0,0 @@
--/* dump.S - LILO register dumper */
--
--/* Copyright 1995-1997 Werner Almesberger. See file COPYING for details. */
--
--
--#define LILO_ASM
--#include "lilo.h"
--
--
-- .text
--
-- .globl _main
-- .org 0
--
--_main: push sp ! push all registers
-- push ss
-- pushf
-- push es
-- push ds
-- push cs
-- push bp
-- push di
-- push si
-- push dx
-- push cx
-- push bx
-- push ax
-- mov ax,#BOOTSEG ! let DS point to where we really are
-- mov ds,ax
-- mov bx,#msgs ! set up loop
--l: call say ! output message
-- cmp byte ptr (bx),#0 ! at end ?
-- je back ! yes -> back to LILO
-- pop ax ! get next data word
-- push bx
-- call wout ! output data word
-- pop bx
-- jmp l ! next round
--
--#if 0
--back: mov ax,#FIRSTSEG
-- mov ds,ax
-- mov word ptr (CODE_START_1),#CODE_START_1+8
-- mov word ptr (CODE_START_1+2),#FIRSTSEG
-- mov word ptr (CODE_START_1+4),#CODE_START_1+12
-- mov byte ptr (CODE_START_1+6),#0xfe
-- mov es,ax ! adjust segments
-- mov ax,#BOOTSEG
-- mov ds,ax
-- mov word ptr (10),#0xffff ! no timeout
-- mov si,#haltnow ! copy string data
-- mov di,#CODE_START_1+8
-- mov cx,#6
-- rep
-- movsb
-- mov ax,#FIRSTSEG ! restart LILO
-- jmpi #GO,FIRSTSEG
--#else
--back: hlt ! stay here
-- jmp back
--#endif
--
--! Display a NUL-terminated string on the console
--
--say: mov al,(bx) ! get byte
-- inc bx ! move pointer
-- or al,al ! NUL ?
-- jz aret ! yes -> done
-- push bx ! save pointer
-- mov ah,#14 ! display, tty-style
-- xor bh,bh
-- int 0x10
-- pop bx
-- jmp say ! next one
--
--wout: push ax ! display one word
-- mov al,ah
-- call bout
-- pop ax
--bout: push ax ! display one byte
-- shr al,#4
-- call nout
-- pop ax
--nout: and al,#15 ! display one nibble
-- add al,#48
-- cmp al,#58
-- jb nokay
-- add al,#7
--nokay: xor bh,bh ! display on screen
-- mov ah,#14
-- int 0x10
--aret: ret
--
--msgs: .byte 13,10
-- .ascii "Register dump:"
-- .byte 13,10,10
-- .ascii "AX="
-- .byte 0
-- .ascii " BX="
-- .byte 0
-- .ascii " CX="
-- .byte 0
-- .ascii " DX="
-- .byte 0,13,10
-- .ascii "SI="
-- .byte 0
-- .ascii " DI="
-- .byte 0
-- .ascii " BP="
-- .byte 0,13,10
-- .ascii "CS="
-- .byte 0
-- .ascii " DS="
-- .byte 0
-- .ascii " ES="
-- .byte 0,13,10
-- .ascii "F="
-- .byte 0,13,10
-- .ascii "SS:SP="
-- .byte 0
-- .ascii ":"
-- .byte 0,13,10,10
--#if 0
-- .ascii "Restarting LILO ..."
--#else
-- .ascii "System halted."
--#endif
-- .byte 13,10,10,0,0
--
--haltnow:.ascii "LILO" ! prevent automatic reboot
-- .byte 0
-diff -ruN lilo.orig/first.S lilo/first.S
---- lilo.orig/first.S Sat Dec 5 08:20:12 1998
-+++ lilo/first.S Thu Dec 7 16:17:10 2000
-@@ -1,226 +1,257 @@
--/* first.S - LILO first stage boot loader */
--
--/* Copyright 1992-1998 Werner Almesberger. See file COPYING for details. */
--
--
--#define LILO_ASM
--#include "lilo.h"
--
--#ifndef LCF_NO1STDIAG
--#define CYL_CHECK
--#endif
--
--
-- .text
--
-- .globl _main
--
-- .org 0
--
--_main: cli ! NT 4 blows up if this is missing
-- jmp start
--
-- .org 6
--
--! Boot device parameters. They are set by the installer.
--
-+/* $Id: first.S,v 1.16 2000/11/26 07:11:58 gniibe Exp $
-+ *
-+ * Primary boot loader
-+ *
-+ * lilo/arch/sh/first.S
-+ *
-+ * Copyright (C) 2000 Niibe Yutaka
-+ *
-+ * This file is subject to the terms and conditions of the GNU General
-+ * Public License.
-+ *
-+ */
-+
-+/*
-+ * NOTE: Keep this code "position independent", so that this works well
-+ * among machines with different memory map.
-+ *
-+ * Some machine starts its memmory at 0x08000000 (Area2),
-+ * while others starts at 0x0c000000 (Area3).
-+ */
-+
-+/*
-+ * Memory map:
-+ * [ First Loader ] 512
-+ * [ Stack ] 4096-512
-+ * [ Second Loader ] 4KB
-+ * [ Reserved ] 4KB
-+ * [ MAP load area ] 512
-+ * [ Descriptor table 1/2 ] 512
-+ * [ Descriptor table 2/2 ] 512
-+ * [ Default Command Line ] 512
-+ * [ Keyboard Translation ] 512
-+ * [ Greeting Message ] 512
-+ * [ Reserved ]
-+ * [ Reserved ]
-+ *
-+ */
-+ .global start
-+start:
-+ bra real_start
-+ .byte 3 ! This becomes "mov r0, r12" with next "l"
-+ !
-+ .ascii "lba" ! special marker for LBA32
-+ !
- .ascii "LILO"
-- .word STAGE_FIRST
-- .word VERSION
-+ .word 1
-+#if 1
-+ /* EDIT HERE ! */
-+ ! Depends LILOs version
-+ .word 20
-+#else
-+ /* v--- Major Version */
-+ .word 4*256 + 21
-+ ! /* ^--- Minor Version*/
-+#endif
-
-+/* x86 LILO parameters (Not used for SuperH... yet) */
- timeout:.word 0 ! input timeout
- delay: .word 0 ! boot delay
- port: .byte 0 ! COM port (0 = unused, 1 = COM1, etc.)
- sparam: .byte 0 ! serial port parameters (0 = unused)
-
--tstamp: .long 0 ! timestamp
-+/* Timestamp (Filled by LILO command) */
-+tstamp: .long 0
-
--d1_cx: .word 0 ! first descriptor sector address
-+/* First descripter sector (Filled by LILO command) */
-+d1_cx: .word 0
- d1_dx: .word 0
--d1_al: .byte 0 ! (unused)
-+d1_al: .byte 0
-
--d2_cx: .word 0 ! second descriptor sector address
-+/* Second descripter sector (Filled by LILO command) */
-+d2_cx: .word 0
- d2_dx: .word 0
--d2_al: .byte 0 ! (unused)
-+d2_al: .byte 0
-
--dc_cx: .word 0 ! default command-line sector address
-+/* Default command-line sector (Filled by LILO command) */
-+dc_cx: .word 0
- dc_dx: .word 0
--dc_al: .byte 0 ! (unused)
-+dc_al: .byte 0
-
-+/* Prompt? (Filled by LILO command) */
- prompt: .byte 0 ! indicates whether to always enter prompt
- ! (also used as alignment byte)
-
-+/* Greeting message length & sector (Filled by LILO command) */
- ms_len: .word 0 ! initial greeting message
- ms_cx: .word 0
- ms_dx: .word 0
--ms_al: .byte 0 ! (unused)
-+ms_al: .byte 0
-
-+/* Second descripter sector (Filled by LILO command) */
- kt_cx: .word 0 ! keyboard translation table
- kt_dx: .word 0
- kt_al: .byte 0
-
- d_addr: ! second stage sector addresses
-
-- .org CODE_START_1
--
--ext_si: .word 0 ! external interface
--ext_es: .word 0
--ext_bx: .word 0
--ext_dl: .byte 0
--
--start: mov ax,#BOOTSEG ! set DS
-- mov ds,ax
-- mov ext_es,es ! copy possible external parameters
-- mov ext_si,si
-- mov ext_bx,bx
-- mov ext_dl,dl
-- mov ax,#FIRSTSEG ! beam us up ...
-- mov es,ax
-- mov cx,#256
-- sub si,si
-- sub di,di
-- cld
-- rep
-- movsw
-- jmpi go,FIRSTSEG
--
--go: cli ! no interrupts
-- mov ds,ax ! AX is already set
-- mov es,ax ! (ES may be wrong when restarting)
-- mov sp,#STACK ! set the stack
-- mov ax,#STACKSEG
-- mov ss,ax
-- sti ! now it is safe
--
-- mov al,#0x0d ! gimme a CR ...
-- call display
-- mov al,#0x0a ! ... an LF ...
-- call display
-- mov al,#0x4c ! ... an 'L' ...
-- call display
--
--lagain: mov si,#d_addr ! ready to load the second stage loader
-- mov bx,#SECOND
-- cld
--sload: lodsw ! get CX
-- mov cx,ax
-- lodsw ! get DX
-- mov dx,ax
-- or ax,cx ! at EOF ?
-- jz done ! yes -> start it
-- inc si ! skip the length byte
-- call cread
-- jc error ! error -> start over again
-- add bx,#512 ! next sector
-- jmp sload
--error:
--#ifndef LCF_NO1STDIAG
-- push ax ! display a space
-- mov al,#32
-- call display
-- pop ax
-- mov al,ah ! display error code
-- call bout
--#endif
-- xor ax,ax ! reset the FDC
-- mov dl,al
-- int 0x13
-- jmp lagain ! redo from start
--done: mov al,#0x49 ! display an 'I'
-- call display
-- jmpi 0,SECONDSEG ! start the second stage loader
--
--#ifndef LCF_NO1STDIAG
--bout: push ax ! display one byte
-- shr al,#4
-- call nout
-- pop ax
--nout: and al,#15 ! display one nibble
-- add al,#48
-- cmp al,#58
-- jb nokay
-- add al,#7
--nokay: ! fall through
--#endif
--
--display:xor bh,bh ! display on screen
-- mov ah,#14
-- int 0x10
-- ret
--
--linerr: pop dx ! discard stack contents
-- pop cx
-- pop bx
-- ret ! (carry is already set)
--
--cread: test dl,#LINEAR_FLAG ! linear address ?
-- jz readsect ! no -> go on
-- and dl,#0xff-LINEAR_FLAG ! remove flag
--
--!
--! Translate the linear address into a sector/track/cylinder address
--!
-- push bx ! BX is used as scratch
-- push cx ! LSW
-- push dx ! MSW with drive
-- mov ah,#8 ! get drive geometry (do not clobber ES:DI)
-- int 0x13
-- jc linerr ! error -> quit
-- mov al,dh ! AL <- #heads-1
-- pop dx ! get MSW
-- mov t_drive,dl ! save drive
-- mov dl,dh ! linear address (high) into DX
-- xor dh,dh
--#ifdef CYL_CHECK
-- push cx ! compute #cyls-1
-- xchg ch,cl
-- rol ch,1
-- rol ch,1
-- and ch,#3
-- mov n_cyl,cx ! save #cyls-1
-- pop cx
--#endif
-- and cx,#0x3f ! CX <- #secs
-- mul cl ! AX <- #secs/cyl
-- add ax,cx
-- xchg ax,bx
-- pop ax ! linear address (low) into AX
-- div bx ! DX <- cylinder, AX <- remaining secs
-- xchg ax,dx
-- div cl ! AL <- track, AH <- sector
-- inc ah
-- mov t_sector,ah
-- xchg ax,dx ! AX <- cylinder, DL <- track
-- mov dh,dl ! set up DX (head:drive)
-- mov dl,t_drive
--#ifdef CYL_CHECK
-- cmp ax,n_cyl ! valid cylinder number ?
-- ja linerr3 ! no -> error
--#endif
-- xchg ah,al ! build cylinder number
-- ror al,1
-- ror al,1
-- or al,t_sector
-- mov cx,ax
-- pop bx ! restore BX
--readsect:
-- mov ax,#0x201 ! read one sector
-- int 0x13
-- ret ! quit, possibly with errors
--
--#ifdef CYL_CHECK
--linerr3:pop bx ! pop BX and linear address
-- xor ax,ax ! zero indicates internal error
-- stc ! error
-- ret
--
--n_cyl: .word 0 ! temporary space
--#endif
--t_drive:.byte 0
--t_sector:.byte 0
--
--
--/* Here are at least 66 bytes of free space. This is reserved for the
-- partition table and the boot signature. */
-+ .long 0xffffffff
-+ .long 0xffffffff
-+ .long 0xffffffff
-+ .long 0xffffffff
-+ .long 0xffffffff
-+ .long 0xffffffff
-+ .long 0xffffffff
-+ .long 0xffffffff
-+ .long 0xffffffff
-+ .long 0xffffffff
-+ .long 0xffffffff
-+
-+ .word 0xffff
-+
-+ .align 2
-+real_start:
-+ /* Get base pointer, to be position independent */
-+ mova next, r0
-+ mov #0x02, r1
-+ shll8 r1
-+ sub r1, r0
-+ mov r0, r12 ! Base pointer
-+ !
-+ mov #0x10, r1
-+ shll8 r1
-+ mov r12, r15
-+ add r1, r15 ! Setup stack pointer
-+ !
-+ mov #0x10, r13 ! buffer number
-+ !
-+ /* Enable cache */
-+ mov #6, r0 ! Cache "on"
-+ mov #0, r4
-+ trapa #0x3f
-+ !
-+ /* Output message "L" */
-+ mova message, r0
-+ mov r0, r4
-+ mov #1, r5
-+ mov #0, r0 ! Serial Output
-+ trapa #0x3f
-+ !
-+ /* Load second stage loader */
-+ mov #52, r11 ! #52: desc# of second stage loader
-+loop: mov r11, r4
-+ bsr load_sector_address ! get r4 (=dev) and r5 (=lba)
-+ add r12, r4 ! desc# --> address of descriptor
-+ bt done
-+ !
-+ mov r13, r6
-+ shll8 r6
-+ bsr read_a_sector
-+ add r12, r6 ! buffer number -> buffer address
-+ !
-+ add #2, r13 ! buffer # += 2
-+ bra loop
-+ add #5, r11 ! next desc# is +5
-+
-+done:
-+ /* Flush cache */
-+ mov #6, r0 ! Cache "on"
-+ mov #0, r4
-+ trapa #0x3f
-+
-+ /* Jump to the second loader */
-+ mov #0x10, r0
-+ shll8 r0
-+ add r12, r0 ! Get the address into r0
-+ jmp @r0
-+ mov r12, r4 ! First argument is base pointer
-+
-+ .align 2
-+message:
-+ .string "L"
-+
-+ .align 2
-+/*
-+ * LOAD_SECTOR_ADDRESS:
-+ * Read the sector descripter (5-byte tuple), and translate
-+ * it as device number and lba. Set T flag if its NULL.
-+ *
-+ * INPUT: r4 (pointer to descripter (5-byte long, not aligned)
-+ * OUTPUT: r4 (DEVICE #), r5 (LBA) and T register (T when done)
-+ * Clobbers: r0, r1, r2, r3
-+ */
-+load_sector_address:
-+ mov.b @r4+, r0
-+ extu.b r0, r0
-+ mov.b @r4+, r1
-+ extu.b r1, r1
-+ mov.b @r4+, r2
-+ extu.b r2, r2
-+ mov.b @r4+, r3
-+ extu.b r3, r3
-+ !
-+ shll8 r3
-+ or r3, r1
-+ shll8 r1
-+ or r0, r1
-+ mov r1, r5
-+ mov.b @r4, r0
-+ cmp/eq #0, r0
-+ bt 1f ! NULL (end of descriptor)
-+ !
-+ /* Check if its really LBA... */
-+ mov r2, r0
-+ and #0x0F, r0 ! Get device number
-+ mov #0xc0, r3
-+ extu.b r3, r3
-+ cmp/hi r2, r3
-+ bf 1f ! Unset T
-+ !
-+ /* Its not LBA!! */
-+ mova not_lba_message, r0
-+ mov r0, r4
-+ mov #36, r5
-+ mov #0, r0 ! Serial Output
-+ trapa #0x3f
-+ sett ! End of descriptor
-+ !
-+1: rts
-+ mov r0, r4 ! device number
-+
-+/*
-+ * READ a sector
-+ * INPUT: r4 (DEVICE #), r5 (LBA), r6 (BUFFER ADDRESS)
-+ * OUTPUT: r0 (RESULT)
-+ *
-+ * Invoke BIOS call READ_SECTORS with number_of_sectors=1.
-+ */
-+read_a_sector:
-+ mov #2, r0 ! READ SECTORS
-+ mov #1, r7 ! number of sectors
-+ trapa #0x3f
-+ !
-+ tst r0, r0
-+ bt 1f
-+ ! /* ERROR */
-+ mova read_error_message, r0
-+ mov r0, r4
-+ mov #19, r5
-+ mov #0, r0 ! Serial Output
-+ trapa #0x3f
-+ ! /* Go to the monitor */
-+ mov #0, r0
-+ jmp @r0
-+ nop
-+ !
-+1: rts
-+ nop
-+
-+ .align 2
-+not_lba_message:
-+ .string "ERROR: Sector address is not in LBA\n"
-+ .align 2
-+read_error_message:
-+ .string "ERROR: Sector read\n"
-
--theend:
-+ .align 9
-+next:
---- lilo.orig/second.c Thu Jan 1 09:00:00 1970
-+++ lilo/second.c Thu Dec 7 21:03:56 2000
-@@ -0,0 +1,411 @@
-+/* $Id: second.c,v 1.22 2000/11/26 07:11:16 gniibe Exp $
-+ *
-+ * Secondary boot loader
-+ *
-+ * lilo/arch/sh/second.c
-+ *
-+ * Copyright (C) 2000 Niibe Yutaka
-+ *
-+ * This file is subject to the terms and conditions of the GNU General
-+ * Public License.
-+ *
-+ */
-+
-+#include "defs.h"
-+
-+static void put_string (unsigned char *);
-+static int get_sector_address (unsigned long, int *, unsigned long *);
-+static int load_sectors (unsigned long, unsigned long);
-+static int read_sectors (int, unsigned long, unsigned char *, int);
-+static int load_sectors_with_maps (int, int, unsigned long *);
-+
-+static int machine_type (void);
-+static int serial_type (void);
-+static int memory_size (void);
-+static int io_base (void);
-+static void cache_flush (void);
-+
-+static const char hexchars[] = "0123456789abcdef";
-+#define digits hexchars /* 10base is same for 16base (up to 10) */
-+static inline char highhex (int x) { return hexchars[(x >> 4) & 0xf]; }
-+static inline char lowhex (int x) { return hexchars[x & 0xf]; }
-+static void printouthex (int);
-+
-+static unsigned long base_pointer = 0; /* Avoid BSS */
-+static unsigned long kernel_image = 0; /* Avoid BSS */
-+
-+/* Sector descriptor */
-+#define SD_DESCR1 24
-+#define SD_DESCR2 29
-+#define SD_DEFCMD 34
-+/* 39 prompt (byte) */
-+/* 40 length (word) */
-+#define SD_MSG 42
-+#define SD_KBDTBL 47
-+
-+static inline char *string_set (char *dest, const char *str)
-+{
-+ int len = strlen (str);
-+ memcpy (dest, str, len);
-+ return dest + len;
-+}
-+
-+void
-+start (unsigned long base)
-+{
-+ base_pointer = base;
-+
-+ put_string ("I");
-+ load_sectors (SD_DESCR1, 0x3200);
-+ load_sectors (SD_DESCR2, 0x3400);
-+ put_string ("L");
-+ /* XXX: checksum */
-+
-+ load_sectors (SD_DEFCMD, 0x3600);
-+ load_sectors (SD_KBDTBL, 0x3800);
-+ put_string ("O ");
-+
-+#if 0
-+ load_sectors (SD_MSG, 0x3a00);
-+#endif
-+ /* XXX: delay, key check... */
-+ /* XXX: list up images */
-+ /* XXX: check signature */
-+ /* Input command line */
-+ /* XXX: Is there default command line? Use it! */
-+ put_string ("boot: ");
-+ put_string ("first-image\n"); /* XXX: should handle input commandline... */
-+
-+ /* Structure of descriptor
-+ [ checksum 2byte ]
-+ [ DESCR_SIZE:52-byte
-+ (image-name (16-byte)
-+ passwd (16-byte)
-+ rd_size (4-byte)
-+ initrd (5-byte sector desc)
-+ start (5-byte sector desc)
-+ start_page (16-bit)
-+ flags (16-bit)
-+ vga_mode (16-bit)
-+ )
-+ ] * 19
-+ */
-+
-+ put_string ("Loading ");
-+ put_string ((char *)(base_pointer+0x3200+2)); /* Image name */
-+
-+ kernel_image = base_pointer + 0x10000 - 0x400;
-+ {
-+ int desc = 0x3200+2+16+16+4+5; /* kernel image */
-+
-+ /* Skip two sectors: Fallback command line and options */
-+ desc = load_sectors_with_maps (desc, 0, &kernel_image);
-+ put_string (".");
-+
-+ while (desc != 0)
-+ {
-+ desc = load_sectors_with_maps (desc, 0, &kernel_image);
-+ put_string (".");
-+ }
-+ }
-+ put_string ("done.\n");
-+
-+#if 0
-+ {
-+ int i;
-+
-+ put_string ("DUMP: ");
-+ for (i=0; i<16; i++)
-+ printouthex (*(unsigned char *)(base_pointer+0x10000+i));
-+ put_string ("\n");
-+ }
-+#endif
-+
-+ /* XXX: kernel paramerter setting */
-+ {
-+ unsigned long parm = base_pointer - 0x200000 + 0x1000;
-+ char *cmdline = (char *)(parm+256);
-+ int mem_size;
-+ unsigned char *p;
-+
-+ *(long *)parm = 1; /* Read only mount? */
-+ *(long *)(parm+4) = 0; /* RAMDISK Flags */
-+ *(long *)(parm+8) = 0x0301; /* Root device: XXX should get from cls.. */
-+ *(long *)(parm+12) = 1; /* Loader type (LILO = 1) */
-+ *(long *)(parm+16) = 0; /* Initrd start */
-+ *(long *)(parm+20) = 0; /* Initrd size */
-+ *(long *)(parm+24) = 0; /* Not defined yet */
-+
-+ /* XXX: Should take the line from command line sector... */
-+#define DC_MAGIC 0xf4f2 /* magic number of default cmd. line sector */
-+ p = (unsigned char *)(base_pointer+0x3600);
-+ if(p[0] == (DC_MAGIC & 0xff) && p[1] == (DC_MAGIC >> 8))
-+ cmdline = string_set(cmdline, p+2);
-+ cmdline = string_set(cmdline, (char *)(base_pointer + 0x10000 - 0x200));
-+
-+#if 0
-+ /* Query to BIOS and build the command line string */
-+ /* Build string "mem=XXM" */
-+ mem_size = memory_size ();
-+ mem_size >>= 20; /* In Mega-byte */
-+ cmdline = string_set (cmdline, "mem=");
-+ if (mem_size >= 100)
-+ {
-+ *cmdline++ = digits[mem_size/100];
-+ mem_size = mem_size % 100;
-+ }
-+ if (mem_size >= 10)
-+ {
-+ *cmdline++ = digits[mem_size/10];
-+ mem_size = mem_size % 10;
-+ }
-+ *cmdline++ = digits[mem_size];
-+ *cmdline++ = 'M';
-+ *cmdline++ = ' ';
-+
-+ switch (machine_type ())
-+ {
-+ case 0: /* Unknown board */
-+ { /* Build string "sh_mv=unknown,0xXXXXXX,1" */
-+ unsigned int io = io_base ();
-+ int b31_24, b23_16, b15_08, b07_00;
-+
-+ b31_24 = (io>>24)&0xff;
-+ b23_16 = (io>>16)&0xff;
-+ b15_08 = (io>>8)&0xff;
-+ b07_00 = (io>>0)&0xff;
-+
-+ cmdline = string_set (cmdline, "sh_mv=unknown,0x");
-+ *cmdline++ = highhex (b31_24); *cmdline++ = lowhex (b31_24);
-+ *cmdline++ = highhex (b23_16); *cmdline++ = lowhex (b23_16);
-+ *cmdline++ = highhex (b15_08); *cmdline++ = lowhex (b15_08);
-+ *cmdline++ = highhex (b07_00); *cmdline++ = lowhex (b07_00);
-+ cmdline = string_set (cmdline, ",1 ");
-+ break;
-+ }
-+
-+ case 1:
-+ cmdline = string_set (cmdline, "sh_mv=CqREEK ");
-+ break;
-+
-+ case 3:
-+ cmdline = string_set (cmdline, "sh_mv=SolutionEngine ");
-+ break;
-+ }
-+
-+ if (serial_type () == 0)
-+ cmdline = string_set (cmdline, "console=ttySC0,115200");
-+ else
-+ cmdline = string_set (cmdline, "console=ttySC1,115200");
-+#endif
-+
-+ *cmdline = '\0'; /* Terminate the string */
-+ }
-+
-+ cache_flush ();
-+ asm volatile ("jmp @r0; nop"
-+ : /* no output */
-+ : "z" (base_pointer + 0x10000));
-+}
-+
-+static int
-+load_sectors_with_maps (int desc, int offset, unsigned long *buf_p)
-+{
-+ int dev;
-+ unsigned long lba;
-+ int i, count;
-+
-+ /* Load the map at 0x3000 */
-+ if (load_sectors (desc, 0x3000) < 0)
-+ return 0;
-+
-+ for (i = offset*5; i<505; i+=5)
-+ {
-+ if ((count = get_sector_address (0x3000+i, &dev, &lba)) == 0)
-+ return 0;
-+
-+ read_sectors (dev, lba, (unsigned char *)*buf_p, count);
-+ *buf_p += count*512;
-+ }
-+
-+ /* There's next map */
-+ return 0x3000+505;
-+}
-+
-+static int
-+machine_type (void)
-+{
-+ register long __sc0 __asm__ ("r0") = 3; /* FEATURE QUERY */
-+
-+ asm volatile ("trapa #0x3F"
-+ : "=z" (__sc0)
-+ : "0" (__sc0)
-+ : "memory");
-+
-+ return (__sc0 >> 8);
-+}
-+
-+static int
-+serial_type (void)
-+{
-+ register long __sc0 __asm__ ("r0") = 3; /* FEATURE QUERY */
-+
-+ asm volatile ("trapa #0x3F"
-+ : "=z" (__sc0)
-+ : "0" (__sc0)
-+ : "memory");
-+
-+ return (__sc0 & 0x07);
-+}
-+
-+static int
-+memory_size (void)
-+{
-+ register long __sc0 __asm__ ("r0") = 4; /* MEMORY SIZE */
-+
-+ asm volatile ("trapa #0x3F"
-+ : "=z" (__sc0)
-+ : "0" (__sc0)
-+ : "memory");
-+
-+ return (__sc0);
-+}
-+
-+static int
-+io_base (void)
-+{
-+ register long __sc0 __asm__ ("r0") = 5; /* IO BASE */
-+
-+ asm volatile ("trapa #0x3F"
-+ : "=z" (__sc0)
-+ : "0" (__sc0)
-+ : "memory");
-+
-+ return (__sc0);
-+}
-+
-+static void
-+cache_flush (void)
-+{
-+ register long __sc0 __asm__ ("r0") = 6; /* CACHE_CONTROL */
-+ register long __sc4 __asm__ ("r4") = 0; /* ENABLE */
-+
-+ asm volatile ("trapa #0x3F"
-+ : "=z" (__sc0)
-+ : "0" (__sc0), "r" (__sc4)
-+ : "memory");
-+}
-+
-+static void inline
-+put_string_1 (unsigned char *str, long len)
-+{
-+ register long __sc0 __asm__ ("r0") = 0; /* OUTPUT */
-+ register long __sc4 __asm__ ("r4") = (long) str;
-+ register long __sc5 __asm__ ("r5") = (long) len; /* For New BIOS */
-+
-+ asm volatile ("trapa #0x3F"
-+ : "=z" (__sc0)
-+ : "0" (__sc0), "r" (__sc4), "r" (__sc5)
-+ : "memory");
-+}
-+
-+static void
-+put_string (unsigned char *str)
-+{
-+ int len = strlen (str);
-+ put_string_1 (str, len);
-+}
-+
-+static int
-+read_sectors (int dev, unsigned long lba, unsigned char *buf, int count)
-+{
-+ register long __sc0 __asm__ ("r0") = 2; /* READ SECTORS */
-+ register long __sc4 __asm__ ("r4") = (long) dev;
-+ register long __sc5 __asm__ ("r5") = (long) lba;
-+ register long __sc6 __asm__ ("r6") = (long) buf;
-+ register long __sc7 __asm__ ("r7") = (long) count;
-+
-+ asm volatile ("trapa #0x3F"
-+ : "=z" (__sc0)
-+ : "0" (__sc0), "r" (__sc4), "r" (__sc5),
-+ "r" (__sc6), "r" (__sc7)
-+ : "memory");
-+
-+ if (__sc0 < 0)
-+ put_string ("ERROR: Sector read\n");
-+
-+ return __sc0;
-+}
-+
-+static int
-+get_sector_address (unsigned long sector_desc, int *devp, unsigned long *lbap)
-+{
-+ unsigned long s;
-+ unsigned char *p = (unsigned char *)(sector_desc+base_pointer);
-+ int len;
-+
-+ /* Number of sectors */
-+ len = (int)p[4];
-+ if (len == 0)
-+ return 0;
-+
-+ /* p[2]: drive number */
-+ if ((int)p[2] < 0xc0)
-+ /* XXX: should return error */
-+ put_string ("ERROR: Sector address is not in LBA\n");
-+
-+ *devp = (int)p[2] & 0x0f;
-+
-+ s = p[0] + (p[1]<<8) + (p[3]<<16);
-+
-+ *lbap = s;
-+
-+#if 0
-+ {
-+ unsigned long lba = *lbap;
-+
-+ put_string ("DEV= ");
-+ printouthex ((*devp)&0xff);
-+ put_string ("\n");
-+ put_string ("LBA= ");
-+ printouthex ((lba>>24)&0xff);
-+ printouthex ((lba>>16)&0xff);
-+ printouthex ((lba>>8)&0xff);
-+ printouthex (lba&0xff);
-+ put_string ("\n");
-+ }
-+#endif
-+
-+ return len;
-+}
-+
-+static int
-+load_sectors (unsigned long sector_desc, unsigned long mem)
-+{
-+ int dev;
-+ unsigned long lba;
-+ int count;
-+ unsigned char *buf = (unsigned char *)(mem+base_pointer);
-+
-+ count = get_sector_address (sector_desc, &dev, &lba);
-+
-+ if (count)
-+ return read_sectors (dev, lba, buf, count);
-+
-+ return -1;
-+}
-+
-+#if 0
-+static void
-+printouthex(int x)
-+{
-+ char z[4];
-+
-+ z[0] = highhex (x);
-+ z[1] = lowhex (x);
-+ z[2] = ' ';
-+ z[3] = '\0';
-+
-+ put_string (z);
-+}
-+#endif
-diff -ruN lilo.orig/second.lds lilo/second.lds
---- lilo.orig/second.lds Thu Jan 1 09:00:00 1970
-+++ lilo/second.lds Fri Dec 8 11:13:20 2000
-@@ -0,0 +1,212 @@
-+OUTPUT_FORMAT("elf32-sh-linux", "elf32-sh-linux", "elf32-sh-linux")
-+OUTPUT_ARCH(sh)
-+ENTRY(start)
-+SECTIONS
-+{
-+ /* Read-only sections, merged into text segment: */
-+ . = 0x400000 + SIZEOF_HEADERS;
-+ .interp : { *(.interp) }
-+ .hash : { *(.hash) }
-+ .dynsym : { *(.dynsym) }
-+ .dynstr : { *(.dynstr) }
-+ .gnu.version : { *(.gnu.version) }
-+ .gnu.version_d : { *(.gnu.version_d) }
-+ .gnu.version_r : { *(.gnu.version_r) }
-+ .rel.init : { *(.rel.init) }
-+ .rela.init : { *(.rela.init) }
-+ .rel.text :
-+ {
-+ *(.rel.text)
-+ *(.rel.text.*)
-+ *(.rel.gnu.linkonce.t*)
-+ }
-+ .rela.text :
-+ {
-+ *(.rela.text)
-+ *(.rela.text.*)
-+ *(.rela.gnu.linkonce.t*)
-+ }
-+ .rel.fini : { *(.rel.fini) }
-+ .rela.fini : { *(.rela.fini) }
-+ .rel.rodata :
-+ {
-+ *(.rel.rodata)
-+ *(.rel.rodata.*)
-+ *(.rel.gnu.linkonce.r*)
-+ }
-+ .rela.rodata :
-+ {
-+ *(.rela.rodata)
-+ *(.rela.rodata.*)
-+ *(.rela.gnu.linkonce.r*)
-+ }
-+ .rel.data :
-+ {
-+ *(.rel.data)
-+ *(.rel.data.*)
-+ *(.rel.gnu.linkonce.d*)
-+ }
-+ .rela.data :
-+ {
-+ *(.rela.data)
-+ *(.rela.data.*)
-+ *(.rela.gnu.linkonce.d*)
-+ }
-+ .rel.ctors : { *(.rel.ctors) }
-+ .rela.ctors : { *(.rela.ctors) }
-+ .rel.dtors : { *(.rel.dtors) }
-+ .rela.dtors : { *(.rela.dtors) }
-+ .rel.got : { *(.rel.got) }
-+ .rela.got : { *(.rela.got) }
-+ .rel.sdata :
-+ {
-+ *(.rel.sdata)
-+ *(.rel.sdata.*)
-+ *(.rel.gnu.linkonce.s*)
-+ }
-+ .rela.sdata :
-+ {
-+ *(.rela.sdata)
-+ *(.rela.sdata.*)
-+ *(.rela.gnu.linkonce.s*)
-+ }
-+ .rel.sbss : { *(.rel.sbss) }
-+ .rela.sbss : { *(.rela.sbss) }
-+ .rel.bss : { *(.rel.bss) }
-+ .rela.bss : { *(.rela.bss) }
-+ .rel.plt : { *(.rel.plt) }
-+ .rela.plt : { *(.rela.plt) }
-+ .init :
-+ {
-+ KEEP (*(.init))
-+ } =0
-+ .plt : { *(.plt) }
-+ .text :
-+ {
-+ *(.text)
-+ *(.text.*)
-+ *(.stub)
-+ /* .gnu.warning sections are handled specially by elf32.em. */
-+ *(.gnu.warning)
-+ *(.gnu.linkonce.t*)
-+ } =0
-+ _etext = .;
-+ PROVIDE (etext = .);
-+ .fini :
-+ {
-+ KEEP (*(.fini))
-+ } =0
-+ .rodata : { *(.rodata) *(.rodata.*) *(.gnu.linkonce.r*) }
-+ .rodata1 : { *(.rodata1) }
-+ /* Adjust the address for the data segment. We want to adjust up to
-+ the same address within the page on the next page up. */
-+/* . = ALIGN(0x10000) + (. & (0x10000 - 1)); */
-+ .data :
-+ {
-+ __data_start = . ;
-+ *(.data)
-+ *(.data.*)
-+ *(.gnu.linkonce.d*)
-+ SORT(CONSTRUCTORS)
-+ }
-+ .data1 : { *(.data1) }
-+ .eh_frame : { *(.eh_frame) }
-+ .gcc_except_table : { *(.gcc_except_table) }
-+ .note.ABI-tag : { *(.note.ABI-tag) }
-+ .ctors :
-+ {
-+ /* gcc uses crtbegin.o to find the start of
-+ the constructors, so we make sure it is
-+ first. Because this is a wildcard, it
-+ doesn't matter if the user does not
-+ actually link against crtbegin.o; the
-+ linker won't look for a file to match a
-+ wildcard. The wildcard also means that it
-+ doesn't matter which directory crtbegin.o
-+ is in. */
-+ KEEP (*crtbegin.o(.ctors))
-+ /* We don't want to include the .ctor section from
-+ from the crtend.o file until after the sorted ctors.
-+ The .ctor section from the crtend file contains the
-+ end of ctors marker and it must be last */
-+ KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors))
-+ KEEP (*(SORT(.ctors.*)))
-+ KEEP (*(.ctors))
-+ }
-+ .dtors :
-+ {
-+ KEEP (*crtbegin.o(.dtors))
-+ KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors))
-+ KEEP (*(SORT(.dtors.*)))
-+ KEEP (*(.dtors))
-+ }
-+ .got : { *(.got.plt) *(.got) }
-+ .dynamic : { *(.dynamic) }
-+ /* We want the small data sections together, so single-instruction offsets
-+ can access them all, and initialized data all before uninitialized, so
-+ we can shorten the on-disk segment size. */
-+ .sdata :
-+ {
-+ *(.sdata)
-+ *(.sdata.*)
-+ *(.gnu.linkonce.s.*)
-+ }
-+ _edata = .;
-+ PROVIDE (edata = .);
-+ __bss_start = .;
-+ .sbss :
-+ {
-+ *(.dynsbss)
-+ *(.sbss)
-+ *(.sbss.*)
-+ *(.scommon)
-+ }
-+ .bss :
-+ {
-+ *(.dynbss)
-+ *(.bss)
-+ *(.bss.*)
-+ *(COMMON)
-+ /* Align here to ensure that the .bss section occupies space up to
-+ _end. Align after .bss to ensure correct alignment even if the
-+ .bss section disappears because there are no input sections. */
-+ . = ALIGN(32 / 8);
-+ }
-+ . = ALIGN(32 / 8);
-+ _end = .;
-+ PROVIDE (end = .);
-+ /* Stabs debugging sections. */
-+ .stab 0 : { *(.stab) }
-+ .stabstr 0 : { *(.stabstr) }
-+ .stab.excl 0 : { *(.stab.excl) }
-+ .stab.exclstr 0 : { *(.stab.exclstr) }
-+ .stab.index 0 : { *(.stab.index) }
-+ .stab.indexstr 0 : { *(.stab.indexstr) }
-+ .comment 0 : { *(.comment) }
-+ /* DWARF debug sections.
-+ Symbols in the DWARF debugging sections are relative to the beginning
-+ of the section so we begin them at 0. */
-+ /* DWARF 1 */
-+ .debug 0 : { *(.debug) }
-+ .line 0 : { *(.line) }
-+ /* GNU DWARF 1 extensions */
-+ .debug_srcinfo 0 : { *(.debug_srcinfo) }
-+ .debug_sfnames 0 : { *(.debug_sfnames) }
-+ /* DWARF 1.1 and DWARF 2 */
-+ .debug_aranges 0 : { *(.debug_aranges) }
-+ .debug_pubnames 0 : { *(.debug_pubnames) }
-+ /* DWARF 2 */
-+ .debug_info 0 : { *(.debug_info) }
-+ .debug_abbrev 0 : { *(.debug_abbrev) }
-+ .debug_line 0 : { *(.debug_line) }
-+ .debug_frame 0 : { *(.debug_frame) }
-+ .debug_str 0 : { *(.debug_str) }
-+ .debug_loc 0 : { *(.debug_loc) }
-+ .debug_macinfo 0 : { *(.debug_macinfo) }
-+ /* SGI/MIPS DWARF 2 extensions */
-+ .debug_weaknames 0 : { *(.debug_weaknames) }
-+ .debug_funcnames 0 : { *(.debug_funcnames) }
-+ .debug_typenames 0 : { *(.debug_typenames) }
-+ .debug_varnames 0 : { *(.debug_varnames) }
-+ /* These must appear regardless of . */
-+}
-diff -ruN lilo.orig/string.c lilo/string.c
---- lilo.orig/string.c Thu Jan 1 09:00:00 1970
-+++ lilo/string.c Thu Dec 7 16:17:10 2000
-@@ -0,0 +1,22 @@
-+#include <stddef.h>
-+
-+/* Implementation taken from Linux kernel (linux/lib/string.c) */
-+
-+size_t strlen(const char * s)
-+{
-+ const char *sc;
-+
-+ for (sc = s; *sc != '\0'; ++sc)
-+ /* nothing */;
-+ return sc - s;
-+}
-+
-+void * memcpy(void * dest,const void *src,size_t count)
-+{
-+ char *tmp = (char *) dest, *s = (char *) src;
-+
-+ while (count--)
-+ *tmp++ = *s++;
-+
-+ return dest;
-+}