Hi,

Samuel Thibault, le Tue 19 Sep 2006 15:03:47 +0200, a écrit :
> I put a (really) rough patch on
> http://dept-info.labri.fr/~thibault/tmp/patch-yasm

I updated this patch. It should apply fine to debian's current yasm.
With it I was able to recompile my good old .COM programs, quite neat :)

The attached patch is the loadlin modifications that are currently
needed: there are 4 macros which will probably difficult to handle, but
they effect can be easily be performed by hand.

The "size" operator will probably be difficult to implement, since yasm
has no notion of the size and type of a label. But as the patch shows,
it is easy to replace them.

What remains is making the omf output work correctly (with org
directives), and the structure stuff.  Yes, I consider implementing
structures anyway. Patching loadlin would be quite tedious, it will
be needed on the long run anyway, and I already have collected the clues
on how to do it, so...

I hope to do this relatively sharply.

Samuel
diff -ur loadlin-1.6c.really1.6c/debian/changelog 
loadlin-1.6c.really1.6c-mine/debian/changelog
--- loadlin-1.6c.really1.6c/debian/changelog    2006-10-08 16:07:43.000000000 
+0200
+++ loadlin-1.6c.really1.6c-mine/debian/changelog       2006-05-03 
02:53:09.000000000 +0200
@@ -1,3 +1,9 @@
+loadlin (1.6c.really1.6c-1yasm) unstable; urgency=low
+
+  * Build loadlin.exe with yasm. (closes: #356055)
+
+ -- Samuel Thibault <[EMAIL PROTECTED]>  Mon,  8 Aug 2005 12:20:59 +0200
+
 loadlin (1.6c.really1.6c-1) unstable; urgency=low
 
   * New upstream version: 1.6c; really for this time
diff -ur loadlin-1.6c.really1.6c/debian/control 
loadlin-1.6c.really1.6c-mine/debian/control
--- loadlin-1.6c.really1.6c/debian/control      2006-10-08 16:07:43.000000000 
+0200
+++ loadlin-1.6c.really1.6c-mine/debian/control 2006-05-03 02:53:09.000000000 
+0200
@@ -2,6 +2,7 @@
 Section: admin
 Priority: optional
 Maintainer: LENART Janos <[EMAIL PROTECTED]>
+Build-Depends: hexdump yasm
 Standards-Version: 3.6.2.1
 
 Package: loadlin
Seulement dans loadlin-1.6c.really1.6c-mine/debian: patch-srclinux
diff -ur loadlin-1.6c.really1.6c/debian/rules 
loadlin-1.6c.really1.6c-mine/debian/rules
--- loadlin-1.6c.really1.6c/debian/rules        2006-10-08 16:07:43.000000000 
+0200
+++ loadlin-1.6c.really1.6c-mine/debian/rules   2006-10-08 23:31:06.000000000 
+0200
@@ -15,7 +15,13 @@
 
 package=loadlin
 
-build:
+loadlin.exe:
+       tar -x -z -C src/ -f src/srclinux.tgz
+       patch -p0 < debian/patch-srclinux
+       make -C src/srclinux
+       tasm src/loadlin.asm loadlin.exe 
+
+build: loadlin.exe
        $(checkdir)
        tar xvfz initrd.tgz
        cd initrd && $(CC) -O2 -fomit-frame-pointer freeramdisk.c -o freeramdisk
@@ -23,6 +29,8 @@
 
 clean:
        $(checkdir)
+       -rm -rf src/srclinux
+       -rm loadlin.exe
        -rm loadlin.exe.gz
        -rm -f build
        -rm -rf initrd
Seulement dans loadlin-1.6c.really1.6c-mine/src: core
diff -ur loadlin-1.6c.really1.6c/src/loadlin.asm 
loadlin-1.6c.really1.6c-mine/src/loadlin.asm
--- loadlin-1.6c.really1.6c/src/loadlin.asm     2006-10-08 16:09:24.000000000 
+0200
+++ loadlin-1.6c.really1.6c-mine/src/loadlin.asm        2006-10-08 
21:14:39.000000000 +0200
@@ -607,31 +607,35 @@
 
 
 push_ macro r1,r2,r3,r4,r5,r6,r7,r8,rx
-           irp   parm,<&r1,&r2,&r3,&r4,&r5,&r6,&r7,&r8,&rx>
-             ifndef parm
-               exitm
-             endif
-             push parm
-           endm
+       XXX
+         ; irp   parm,<&r1,&r2,&r3,&r4,&r5,&r6,&r7,&r8,&rx>
+         ;    ifndef parm
+         ;      exitm
+         ;    endif
+         ;    push parm
+         ;  endm
          endm
 pop_  macro r1,r2,r3,r4,r5,r6,r7,r8
-           irp   parm,<&r8,&r7,&r6,&r5,&r4,&r3,&r2,&r1>
-             ifdef parm
-               pop parm
-             endif
-           endm
+       XXX
+         ;  irp   parm,<&r8,&r7,&r6,&r5,&r4,&r3,&r2,&r1>
+         ;    ifdef parm
+         ;      pop parm
+         ;    endif
+         ;  endm
          endm
 
 pushAD_struc macro prefix
-           irp   parm,<edi,esi,ebp,esp,ebx,edx,ecx,eax>
-             prefix&&parm  dd  ?
-           endm
+       XXX
+         ;  irp   parm,<edi,esi,ebp,esp,ebx,edx,ecx,eax>
+         ;    prefix&&parm  dd  ?
+         ;  endm
          endm
 
 pushA_struc macro prefix
-           irp   parm,<di,si,bp,sp,bx,dx,cx,ax>
-             prefix&&parm  dw  ?
-           endm
+       XXX
+         ;  irp   parm,<di,si,bp,sp,bx,dx,cx,ax>
+         ;    prefix&&parm  dw  ?
+         ;  endm
          endm
 
 
diff -ur loadlin-1.6c.really1.6c/src/loadlini.asm 
loadlin-1.6c.really1.6c-mine/src/loadlini.asm
--- loadlin-1.6c.really1.6c/src/loadlini.asm    1996-04-28 22:17:28.000000000 
+0200
+++ loadlin-1.6c.really1.6c-mine/src/loadlini.asm       2006-10-08 
19:44:38.000000000 +0200
@@ -407,7 +407,8 @@
         jz      @@not_found
 @@loop_entry:
         push    di
-        mov     cx,size aux_token
+        ;mov     cx,size aux_token
+        mov     cx,80
         call    name_compare
         jz      @@loop
         pop     ax     ; clean up stack
diff -ur loadlin-1.6c.really1.6c/src/loadlinj.asm 
loadlin-1.6c.really1.6c-mine/src/loadlinj.asm
--- loadlin-1.6c.really1.6c/src/loadlinj.asm    2005-08-08 12:19:06.000000000 
+0200
+++ loadlin-1.6c.really1.6c-mine/src/loadlinj.asm       2006-10-08 
23:32:42.000000000 +0200
@@ -84,7 +84,7 @@
 
 get_VCPI_interface proc near
           push    cs                  ;* buffer for server GDT entries
-          push    offset gdtvcpi_code ;*
+          push    dword ptr offset gdtvcpi_code ;*
           push    cs                  ;* buffer for server page0
           push    offset page0        ;*
           call    get_protected_mode_interface
@@ -154,7 +154,7 @@
           pop     di
           pop     si
           pop     bp
-          ret     returnpop
+          ret     8
 get_protected_mode_interface endp
 
 
@@ -166,7 +166,8 @@
           jc       @@ex_false
           mov      bx,ax
           mov      ax,4402h
-          mov      cx,size intv_buf
+          ;mov      cx,size intv_buf
+          mov      cx,128*4
           lea      dx,intv_buf
           DosInt
           pushf
@@ -392,7 +393,7 @@
           ; we now reset the intvector to bios-defaults
           push    cs
           pop     ds
-          cmp     cx,(size intv_buf)/4  ; have we REALBIOS
+          cmp     cx,128*4/4  ; have we REALBIOS
           jna     @@1     ; no
                           ; yes
                           ; restoring BIOSdata also
@@ -401,14 +402,14 @@
           lea     si,intv_buf
           cld
           rep movsd
-          cmp     cs:intv_size,(size intv_buf)  ; have we REALBIOS
+          cmp     cs:intv_size,128*4  ; have we REALBIOS
           jna     @@8      ; no
                            ; yes, restoring BIOSscratch also
           mov     di,09FC0h
           mov     es,di
           xor     di,di
           lea     si,bios_scratch
-          mov     cx,(size bios_scratch)/4
+          mov     cx,1024/4
           rep movsd
                            ; now reprogram the PICs (8259A)
                            ; (may be redirected by VCPI-client)
@@ -814,7 +815,7 @@
          cmp      intv_size,0
          jz       @@3_1_
          lea      dx,@@t6
-         cmp      intv_size,(size intv_buf)  ; have we REALBIOS
+         cmp      intv_size,128*4  ; have we REALBIOS
          jna      @@3_
          lea      dx,@@t6_
 @@3_:

Reply via email to