# HG changeset patch # User Pascal Bellard # Date 1345973609 -7200 # Node ID e76c37f7bfe60564e27112bfcd6565e99201d836 # Parent 1d5a6d3ed1f5167f02e1da88a065d705cb562f69 memtest: optionnal linux header (disabled) diff -r 1d5a6d3ed1f5 -r e76c37f7bfe6 memtest/stuff/pack --- a/memtest/stuff/pack Sun Aug 26 00:28:25 2012 +0200 +++ b/memtest/stuff/pack Sun Aug 26 11:33:29 2012 +0200 @@ -1,9 +1,12 @@ #!/bin/sh if [ "$1" == "--build" ]; then + bin=${2:-unpack.bin} cat >> $0 <$2 uudecode | gunzip >>$2 - setup="$( echo $(od -j 497 -N 1 -dAn $1))" + setup="$(echo $(od -j 497 -N 1 -dAn $1))" syssize="$(echo $(od -j 500 -N 2 -dAn $1))" dd if=$1 bs=512 count=$setup skip=1 | compress >>$2 dd if=$1 bs=16 count=$syssize skip=$((32*(1+$setup))) | compress >>$2 size=$(stat -c %s $2) - store $((($size-512)/16)) $2 520 2 + store $((($size-512)/16)) $2 XXX 2 store $((($size-2560)/16)) $2 500 2 store 4 $2 497 1 } diff -r 1d5a6d3ed1f5 -r e76c37f7bfe6 memtest/stuff/unlzma.S --- a/memtest/stuff/unlzma.S Sun Aug 26 00:28:25 2012 +0200 +++ b/memtest/stuff/unlzma.S Sun Aug 26 11:33:29 2012 +0200 @@ -447,7 +447,6 @@ cmp $4+1, AX jb lzd21 mov $3+1, AX - //??movb $3+1, %al lzd21: @@ -514,7 +513,7 @@ // } while (--numDirectBits != 0); - cmp $4+1, CX + cmpb $4+1, %cl loopne lzd23z // prob = p + Align /* 802 */; numDirectBits = kNumAlignBits /*4*/; @@ -726,7 +725,7 @@ call RC_NORMALIZE // kill %ax, update %si - pushal // FIXME pushaw? + pushal xchg AX, DI add DI, DI // short * @@ -779,7 +778,7 @@ sarw $5, %ax addw %ax, (BP, DI) popf - popal // FIXME popaw? + popal sbb AX, AX // } diff -r 1d5a6d3ed1f5 -r e76c37f7bfe6 memtest/stuff/unpack.S --- a/memtest/stuff/unpack.S Sun Aug 26 00:28:25 2012 +0200 +++ b/memtest/stuff/unpack.S Sun Aug 26 11:33:29 2012 +0200 @@ -3,6 +3,7 @@ #define SETUP 4 #define CHANGE_STACK 1 +#define LINUX_HEADER 0 .text .code16 @@ -10,6 +11,22 @@ .globl _start _start: +#if LINUX_HEADER + jmp start2 + .ascii "HdrS" // 202 magic + .word 0x200 // 206 version 2.00 + .long 0 // 208 realmode_swtch + .word SYSTEM/16 // 20C start_sys_seg + .word 0 // 20E kernel_version + .byte 0 // 210 type_of_loader + .byte 0 // 211 loadflags + .word 0 // 212 setup_move_size + .long SYSTEM // 214 code32_start + .long 0 // 218 ramdisk_image + .long 0 // 21C ramdisk_size + .long 0 // 220 bootsect_kludge +start2: +#endif pushf pushw %cs call getip