Browse Source

* initialize fpu so sigfpe is finally generated for fpu errors

peter 27 years ago
parent
commit
d24ead1dd6
6 changed files with 305 additions and 607 deletions
  1. 43 386
      rtl/dos/go32v2/v2prt0.as
  2. 68 65
      rtl/linux/i386/cprt1.as
  3. 51 41
      rtl/linux/i386/gprt0.as
  4. 58 49
      rtl/linux/i386/gprt1.as
  5. 38 28
      rtl/linux/i386/prt0.as
  6. 47 38
      rtl/linux/i386/prt1.as

+ 43 - 386
rtl/dos/go32v2/v2prt0.as

@@ -11,9 +11,9 @@
  *   ss:sp      our stack (ss to be freed)
  *   ss:sp      our stack (ss to be freed)
  *   <others>   All unspecified registers have unspecified values in them.
  *   <others>   All unspecified registers have unspecified values in them.
 \*****************************************************************************/
 \*****************************************************************************/
-/* modified by Pierre Muller to become the prt0.s for FPK Pascal */
+/* modified by Pierre Muller to become the prt0.s for FPC Pascal */
 
 
-        .file "v2prt0.s"
+        .file "v2prt0.as"
 
 
 /* #include "stubinfo.h" */
 /* #include "stubinfo.h" */
  STUBINFO = 0
  STUBINFO = 0
@@ -43,26 +43,19 @@
         .comm   ___djgpp_selector_limit, 4
         .comm   ___djgpp_selector_limit, 4
         .comm   ___djgpp_stack_limit, 4
         .comm   ___djgpp_stack_limit, 4
         .lcomm  sel_buf, 8
         .lcomm  sel_buf, 8
+
 /* ___djgpp_ds_alias defined in go32/exceptn.s */
 /* ___djgpp_ds_alias defined in go32/exceptn.s */
 /* inserted at the end of this file  */
 /* inserted at the end of this file  */
 /* we use a local copy that will be copied to exceptn.s */
 /* we use a local copy that will be copied to exceptn.s */
-   .globl ___v2prt0_ds_alias
+        .globl ___v2prt0_ds_alias
 ___v2prt0_ds_alias:
 ___v2prt0_ds_alias:
-   .long  0
-/*        .comm   ___djgpp_ds_alias, 4  must be in locked code */
-/* undef MULTIBLOCK */
-/*  MULTIBLOCK = 0 does not work */
-/* Win95 sometimes gives a block at an address lower than the base
-address of _djgpp => big troubles
- That is why I removed the multiblocks
- Pierre Muller */
-        .data
+        .long  0
+
+.data
 
 
-/* .ifdef MULTIBLOCK needed anyhow */
 ___djgpp_memory_handle_pointer:
 ___djgpp_memory_handle_pointer:
         .long   ___djgpp_memory_handle_list+8           /* Next free, first for stub */
         .long   ___djgpp_memory_handle_list+8           /* Next free, first for stub */
         .comm   ___djgpp_memory_handle_list, 2048       /* Enough for 256 handles */
         .comm   ___djgpp_memory_handle_list, 2048       /* Enough for 256 handles */
-/* .endif */
 
 
 sbrk16_first_byte:
 sbrk16_first_byte:
 .include "sbrk16.ah"
 .include "sbrk16.ah"
@@ -82,31 +75,17 @@ exit16_last_byte:
 /* hook_387_emulator:
 /* hook_387_emulator:
         .long   ___emu387_load_hook */
         .long   ___emu387_load_hook */
 
 
-/* this pulls in the ident string, generated in .. */
-/*      .long   ___libc_ident_string */
-
 /* this is for when main comes from a library */
 /* this is for when main comes from a library */
         .long   _main
         .long   _main
 
 
-        .text
+
+.text
 
 
         .globl  start
         .globl  start
 start:
 start:
-
         pushl   %ds                     /* set %es same as %ds */
         pushl   %ds                     /* set %es same as %ds */
         popl    %es                     /* push/pop 4 bytes shorter than ax */
         popl    %es                     /* push/pop 4 bytes shorter than ax */
 
 
-.if 0 /* we do this in the stub now */
-        movl    $edata, %edi            /* set all BSS bytes to zero */
-        movl    $end, %ecx
-        subl    %edi, %ecx
-        xorl    %eax, %eax              /* Zero fill value */
-        shrl    $2, %ecx                /* div 4 Longwords not bytes */
-        cld
-        rep
-        stosl
-.endif
-
 /* Enable NULL pointer protection if DPMI supports it */
 /* Enable NULL pointer protection if DPMI supports it */
         testb   $0x1, __crt0_startup_flags+1            /* include/crt0.h */
         testb   $0x1, __crt0_startup_flags+1            /* include/crt0.h */
         jnz     1f
         jnz     1f
@@ -129,6 +108,7 @@ start:
         jnc     ds_alias_ok
         jnc     ds_alias_ok
         movb    $0x4c, %ah
         movb    $0x4c, %ah
         int     $0x21
         int     $0x21
+
 ds_alias_ok:
 ds_alias_ok:
         movw    %ax, ___v2prt0_ds_alias
         movw    %ax, ___v2prt0_ds_alias
         movl    %eax, %ebx
         movl    %eax, %ebx
@@ -157,10 +137,6 @@ ds_alias_ok:
         jz      2f
         jz      2f
         andb    $0x7f, __crt0_startup_flags             /* clear it if failure */
         andb    $0x7f, __crt0_startup_flags             /* clear it if failure */
 2:
 2:
-.ifdef MULTIBLOCK
-        testb   $0x8, __crt0_startup_flags+1            /* include/crt0.h */
-        jz      8f
-.endif
 /* Allocate some DOS memory and copy our sbrk helper into it. */
 /* Allocate some DOS memory and copy our sbrk helper into it. */
         movl    $sbrk16_first_byte, %esi
         movl    $sbrk16_first_byte, %esi
         movzwl  8(%esi), %ebx
         movzwl  8(%esi), %ebx
@@ -170,6 +146,7 @@ ds_alias_ok:
         jnc     dos_alloc_ok
         jnc     dos_alloc_ok
         movb    $0x4c, %ah
         movb    $0x4c, %ah
         int     $0x21
         int     $0x21
+
 dos_alloc_ok:
 dos_alloc_ok:
         movw    %cs, 2(%esi)
         movw    %cs, 2(%esi)
 /* store API information */
 /* store API information */
@@ -208,21 +185,6 @@ dos_alloc_ok:
         movw    $0x000c, %ax                    /* set descriptor */
         movw    $0x000c, %ax                    /* set descriptor */
         movl    $sel_buf, %edi
         movl    $sel_buf, %edi
         int     $0x31
         int     $0x31
-.ifdef MULTIBLOCK
-8:      movl    $___djgpp_memory_handle_list+8, %edi
-        movl    %edi, ___djgpp_memory_handle_pointer
-        xorl    %eax, %eax
-9:      cmpl    %eax, (%edi)
-        je      10f
-        mov     %eax, (%edi)
-        addl    $4, %edi
-        jmp     9b
-10:     movw    %cs, %bx
-        movw    $0x0006,%ax
-        int     $0x31
-        movl    %edx,___djgpp_base_address
-        movw    %cx,___djgpp_base_address+2
-.endif  /* MULTIBLOCK */
 
 
 /* Initialize the brk/sbrk variables */
 /* Initialize the brk/sbrk variables */
 
 
@@ -279,25 +241,6 @@ use_stubinfo_stack_size:
         movl    %eax,__stkbottom               /* for stack checks */
         movl    %eax,__stkbottom               /* for stack checks */
         movl    %eax,U_SYSTEM_STACKBOTTOM
         movl    %eax,U_SYSTEM_STACKBOTTOM
 
 
-.ifdef LOCK_BOTTOM_STACK
-/* test lock one page at bottom of stack to be sure that there is            */
-/* not stack overflow, as the minimal size is 128 ko 4ko less is not much !! */
-        testb   $0x1, __crt0_startup_flags+1            /* include/crt0.h */
-        jnz     101f /* just to be sure it is not used */
-        movl    %eax, %ebx                      /* Offset __djgpp_stack_limit in mem block */
-   addl $0xfff,%ebx
-   andl $0xfffff000,%ebx    /* page align it */
-        movw    $0x507, %ax
-.ifdef MULTIBLOCK
-        movl    ___djgpp_memory_handle_pointer-8, %esi /* last memory block */
-.else /* not MULTIBLOCK */
-        movl    ___djgpp_memory_handle_list, %esi /* last memory block */
-.endif
-        movl    $1, %ecx                        /* Set one page */
-        movl    $zero, %edx
-        int     $0x31                   /* Make first stack page page uncommitted */
-101:
-.endif /* LOCK_BOTTOM_STACK */
         movl    ___djgpp_stack_limit,%eax       /* Bottom of stack */
         movl    ___djgpp_stack_limit,%eax       /* Bottom of stack */
         addl    __stklen, %eax
         addl    __stklen, %eax
         movw    %ds, %dx                /* set stack */
         movw    %ds, %dx                /* set stack */
@@ -305,27 +248,6 @@ use_stubinfo_stack_size:
         movl    %eax, %esp
         movl    %eax, %esp
 
 
         xorl    %ebp, %ebp
         xorl    %ebp, %ebp
-.if 0                                           /* done in crt1.c */
-        .byte 0x64 /* fs: */                    /* set up _go32_info_block structure */
-        movzwl  STUBINFO_MINKEEP, %eax
-        movl    %eax, U_SYSTEM_GO32_INFO_BLOCK+16       /* .size_of_transfer_buffer */
-        .byte 0x64 /* fs: */
-        movzwl  STUBINFO_DS_SEGMENT, %eax
-        shll    $4, %eax
-        movl    %eax, U_SYSTEM_GO32_INFO_BLOCK+12       /* .linear_address_of_transfer_buffer */
-        xorl    %eax, %eax
-        movl    $1, %ecx
-        int     $0x31
-        jc      no_selector
-        movw    %ax, U_SYSTEM_GO32_INFO_BLOCK+26        /* .selector_for_linear_memory */
-        movl    %eax, %ebx
-        movl    $8, %eax
-        movl    $0x0f, %ecx
-        movw    $0xffff, %dx
-        int     $0x31                           /* Set limit 1Mb */
-no_selector:
-.endif
-
         call    ___prt1_startup         /* run program */
         call    ___prt1_startup         /* run program */
         jmp     exit
         jmp     exit
 
 
@@ -363,10 +285,6 @@ exit:
         cli                             /* Just in case they didn't unhook ints */
         cli                             /* Just in case they didn't unhook ints */
         FREESEL U_SYSTEM_GO32_INFO_BLOCK+26     /* selector for linear memory */
         FREESEL U_SYSTEM_GO32_INFO_BLOCK+26     /* selector for linear memory */
         FREESEL ___v2prt0_ds_alias      /* DS alias for rmcb exceptions */
         FREESEL ___v2prt0_ds_alias      /* DS alias for rmcb exceptions */
-.ifdef MULTIBLOCK
-        testb   $0x8, __crt0_startup_flags+1            /* include/crt0.h */
-        jz      9f
-.endif
         FREESEL sbrk16_api_seg          /* sbrk cs */
         FREESEL sbrk16_api_seg          /* sbrk cs */
         movw    sbrk16_first_byte+6,%dx /* selector for allocated DOS mem */
         movw    sbrk16_first_byte+6,%dx /* selector for allocated DOS mem */
         movw    $0x101, %ax
         movw    $0x101, %ax
@@ -390,17 +308,6 @@ exit:
         movw    %ax,%ss
         movw    %ax,%ss
         movl    $0x400,%esp             /* Transfer buffer >= 1024 bytes */
         movl    $0x400,%esp             /* Transfer buffer >= 1024 bytes */
 
 
-.ifdef MULTIBLOCK
-        movl    ___djgpp_memory_handle_pointer, %ebx
-        jmp     7f
-6:      subl    $8, %ebx
-        movl    (%ebx), %edi
-        movw    2(%ebx), %si
-        movw    $0x502, %ax
-        int     $0x31
-7:      cmpl    $___djgpp_memory_handle_list+8, %ebx
-        jne     6b
-.endif /* MULTIBLOCK */
         xorl    %ebp, %ebp                              /* V1.10 bug fix */
         xorl    %ebp, %ebp                              /* V1.10 bug fix */
         movl    ___djgpp_memory_handle_list, %edi
         movl    ___djgpp_memory_handle_list, %edi
         movl    ___djgpp_memory_handle_list+2, %esi     /* Skip word prefixes */
         movl    ___djgpp_memory_handle_list+2, %esi     /* Skip word prefixes */
@@ -436,14 +343,6 @@ lock_memory:
 13:     ret     $4                      /* Pop the argument */
 13:     ret     $4                      /* Pop the argument */
 
 
 
 
-.if 0
-brk_hook_ret:
-        ret
-        .globl ___sbrk_brk_hook
-___sbrk_brk_hook:
-        .long   brk_hook_ret
-.endif
-
         .global ___sbrk
         .global ___sbrk
         .align  2
         .align  2
 ___sbrk:
 ___sbrk:
@@ -451,7 +350,7 @@ ___sbrk:
         movl    4(%esp), %ecx                   /* Increment size */
         movl    4(%esp), %ecx                   /* Increment size */
         addl    %ecx, %eax
         addl    %ecx, %eax
         jnc     brk_common
         jnc     brk_common
-        /* Carry is only set if a negative increment or wrap happens.  Negative
+        /* Carry is only set if a negative increment or wrap happens. Negative
            increment is semi-OK, wrap (only for multiple zone sbrk) isn't. */
            increment is semi-OK, wrap (only for multiple zone sbrk) isn't. */
         test    $0x80000000, %ecx               /* Clears carry */
         test    $0x80000000, %ecx               /* Clears carry */
         jnz     brk_common
         jnz     brk_common
@@ -477,10 +376,6 @@ brk_common:
         cmpl    __what_size_dpmi_thinks_we_are, %eax            /* don't bother shrinking */
         cmpl    __what_size_dpmi_thinks_we_are, %eax            /* don't bother shrinking */
         jbe     brk_nochange
         jbe     brk_nochange
 
 
-.ifdef MULTIBLOCK
-        testb   $0x8, __crt0_startup_flags+1            /* include/crt0.h */
-        jz      10f
-.endif
         addl    $0x0000ffff, %eax                               /* round up to 64K block */
         addl    $0x0000ffff, %eax                               /* round up to 64K block */
         andl    $0xffff0000, %eax
         andl    $0xffff0000, %eax
         push    %eax                                            /* size - save for later */
         push    %eax                                            /* size - save for later */
@@ -521,54 +416,6 @@ brk_common:
         call    lock_memory
         call    lock_memory
 
 
         decl    %edx                                            /* limit now, not size */
         decl    %edx                                            /* limit now, not size */
-.ifdef MULTIBLOCK
-        jmp     5f
-/* Current allocation not large enough, get another block */
-10:     movl    %ecx, %eax                                      /* Add amt */
-        pushl   %eax                                            /* Save orig */
-        addl    $0x0000ffff, %eax                               /* round up to 64K block */
-        andl    $0xffff0000, %eax
-        movl    %eax, %edx                                      /* Save size */
-        movl    %eax, %ecx
-        movl    %eax, %ebx
-        shrl    $16, %ebx                                       /* BX:CX size */
-        movw    $0x501,%ax
-        int     $0x31
-        popl    %eax                                            /* Orig size */
-        jc      brk_error
-
-        pushl   %edx                                            /* Size */
-        call    lock_memory
-
-        pushw   %bx
-        pushw   %cx
-        popl    %ecx                                            /* Linear address */
-        /* What if the new base address is lower than __djgpp_base_address !!!   */
-        subl    ___djgpp_base_address, %ecx                     /* New dpmi size */
-        cmpl    %ecx, __what_size_dpmi_thinks_we_are            /* Back to back ? */
-        je      4f
-        movl    %ecx, __what_size_dpmi_thinks_we_are
-        movl    %ecx, __what_we_return_to_app_as_old_size
-4:
-        movl    __what_we_return_to_app_as_old_size, %ebx       /* Base for new block */
-        addl    %ebx, %eax                                      /* Final address */
-        movl    %eax, __what_size_app_thinks_it_is
-/* Note - save adjusted memory base and memory handle SI:DI here */
-        movl    ___djgpp_memory_handle_pointer, %ebx
-        movl    %edi, (%ebx)
-        movw    %si, 2(%ebx)
-        movl    %ecx, 4(%ebx)
-        addl    $8, %ebx
-        cmpl    $___djgpp_memory_handle_list+2040, %ebx         /* At end? */
-        je      11f
-        movl    %ebx, ___djgpp_memory_handle_pointer            /* Only if not at end */
-11:
-        addl    %ecx, %edx                                      /* Final address */
-        decl    %edx                                            /* Limit to end */
-/* If we get a block at a lower address we must skip the limit change */
-        cmpl    ___djgpp_selector_limit, %edx
-        jbe     12f
-.endif
 5:      movl    %edx, ___djgpp_selector_limit
 5:      movl    %edx, ___djgpp_selector_limit
         orw     $0x0fff, %dx                                    /* low bits set */
         orw     $0x0fff, %dx                                    /* low bits set */
         movw    $0x0008, %ax                                    /* reset CS limit */
         movw    $0x0008, %ax                                    /* reset CS limit */
@@ -615,14 +462,6 @@ no_deadbeef:
 no_fill_sbrk_memory:
 no_fill_sbrk_memory:
         movl    %edx, __what_size_dpmi_thinks_we_are
         movl    %edx, __what_size_dpmi_thinks_we_are
 
 
-.if 0                                           /* No purpose */
-        pushl   ___djgpp_memory_handle_list
-        pushl   ___djgpp_base_address
-        movl    ___sbrk_brk_hook, %eax
-        call    %eax
-        addl    $8, %esp
-.endif
-
 brk_nochange:                                   /* successful return */
 brk_nochange:                                   /* successful return */
         movl    __what_we_return_to_app_as_old_size, %eax
         movl    __what_we_return_to_app_as_old_size, %eax
         jmp     brk_return
         jmp     brk_return
@@ -638,14 +477,6 @@ brk_return:
         popl    %esi
         popl    %esi
         ret
         ret
 
 
-        .globl  __crt0_init_mcount
-__crt0_init_mcount:
-.ifdef IN_GCRT0
-        jmp     __mcount_init
-.else
-        ret
-.endif
-
 /* From here on this are parts of crt1.c converted to assembler
 /* From here on this are parts of crt1.c converted to assembler
 and without any call to libc, so that it works without anything else
 and without any call to libc, so that it works without anything else
 additions made by Pierre Muller*/
 additions made by Pierre Muller*/
@@ -675,7 +506,7 @@ additions made by Pierre Muller*/
 /*        .globl ___dpmi_allocate_ldt_descriptors */
 /*        .globl ___dpmi_allocate_ldt_descriptors */
 /* using pascal convention => not usabel by C code */
 /* using pascal convention => not usabel by C code */
 ___dpmi_allocate_ldt_descriptors:
 ___dpmi_allocate_ldt_descriptors:
-   pushl %ebp; movl %esp,%ebp
+        pushl %ebp; movl %esp,%ebp
 
 
         movl    8(%ebp), %ecx
         movl    8(%ebp), %ecx
         movl $0x0000, %eax
         movl $0x0000, %eax
@@ -802,7 +633,6 @@ _setup_screens:
         movw %dx, %gs
         movw %dx, %gs
         .byte 0x65
         .byte 0x65
         movw (%ecx),%ax
         movw (%ecx),%ax
-
 /NO_APP
 /NO_APP
         cmpw $64896,%ax
         cmpw $64896,%ax
         jne .L26
         jne .L26
@@ -830,6 +660,7 @@ _setup_screens:
         movl $720896,U_SYSTEM_GO32_INFO_BLOCK+8
         movl $720896,U_SYSTEM_GO32_INFO_BLOCK+8
         leave
         leave
         ret
         ret
+
         .align 2
         .align 2
         .globl _setup_go32_info_block
         .globl _setup_go32_info_block
 _setup_go32_info_block:
 _setup_go32_info_block:
@@ -866,7 +697,7 @@ _setup_go32_info_block:
         call copy_to_c_go32_info_block
         call copy_to_c_go32_info_block
         leave
         leave
         ret
         ret
-        
+
 copy_to_c_go32_info_block:
 copy_to_c_go32_info_block:
         leal U_SYSTEM_GO32_INFO_BLOCK,%esi
         leal U_SYSTEM_GO32_INFO_BLOCK,%esi
         leal __go32_info_block,%edi
         leal __go32_info_block,%edi
@@ -874,18 +705,19 @@ copy_to_c_go32_info_block:
         rep
         rep
         movsl
         movsl
         ret
         ret
+
 .data
 .data
-/* __go32_info_block for C programs */
+        /* fpu codeword */
+___fpucw:
+        .long   0x1332
+        /* __go32_info_block for C programs */
         .align 2
         .align 2
         .globl __go32_info_block
         .globl __go32_info_block
 .comm   __go32_info_block,40
 .comm   __go32_info_block,40
-        .globl ___PROXY
-___PROXY:
-        .ascii " !proxy\0"
-        .globl ___PROXY_LEN
-        .align 2
-___PROXY_LEN:
-        .long 7
+
+/*
+  -- prt1_startup --
+*/
 .text
 .text
         .align 2
         .align 2
         .globl ___prt1_startup
         .globl ___prt1_startup
@@ -898,42 +730,24 @@ ___prt1_startup:
         call _setup_core_selector
         call _setup_core_selector
         call _setup_screens
         call _setup_screens
         call _setup_go32_info_block
         call _setup_go32_info_block
-/*      call ___djgpp_exception_setup
-        call _setup_ENVPment */
         incl ___environ_changed
         incl ___environ_changed
-/*      pushl $0
-        call __use_lfn
-        addl $4,%esp
-        call ___crt0_setup_arguments
-        movl ___crt0_argv,%eax
-        testl %eax,%eax
-        je .L55
-        movl (%eax),%ebx
-        jmp .L56
-        .align 2,0x90
-.L55:
-        movl U_SYSTEM_DOS_ARGV0,%ebx
-.L56:
-        pushl %ebx
-        call ___crt0_load_ENVPment_file
-        pushl $0
-        call __use_lfn
-        pushl %ebx
-        call __npxsetup
-        call __crt0_init_mcount
-        call ___main     */
-        pushl U_SYSTEM_ENVP
-        pushl ___crt0_argv
-        pushl ___crt0_argc
-        call _pascal_start
-        pushl %eax
+
+        finit                   /* initialize fpu */
+        fwait
+        fldcw   ___fpucw
+
+        pushl   U_SYSTEM_ENVP
+        pushl   ___crt0_argv
+        pushl   ___crt0_argc
+        call    _pascal_start
+        pushl   %eax
 /*      call _exit changed to */
 /*      call _exit changed to */
-   call exit
+        call    exit
         .align 2,0x90
         .align 2,0x90
 /* .comm U_SYSTEM_DOS_ARGV0,4 */
 /* .comm U_SYSTEM_DOS_ARGV0,4 */
-.comm ___dos_argv0,4
-.comm ___crt0_argc,4
-.comm ___crt0_argv,4
+        .comm ___dos_argv0,4
+        .comm ___crt0_argc,4
+        .comm ___crt0_argv,4
         .globl ___environ_changed
         .globl ___environ_changed
 ___environ_changed:
 ___environ_changed:
         .long  0
         .long  0
@@ -949,165 +763,6 @@ _swap_out:
         .global _v2prt0_exceptions_on
         .global _v2prt0_exceptions_on
 _v2prt0_exceptions_on:
 _v2prt0_exceptions_on:
         .long  0
         .long  0
-/*.comm __crt0_startup_flags,4
- .comm U_SYSTEM_ENVP,4 */
-
-.ifdef test_go32v1
-#
-#  Called as start(argc, argv, envp)
-#
-#  gs:edx points to prog_info structure.  All other registers are OBSOLETE
-#  but included for backwards compatibility
-#
-
-        .text
-        .globl  old_start
-old_start:
-        popl    %ebx
-        popl    %eax
-        movl    %eax,__hard_master
-        movl    %esi,___pid
-        movl    %edi,___transfer_buffer
-        movl    %ebx,_ScreenPrimary
-        movl    %ebp,_ScreenSecondary
-
-        cmpl    $0, %edx
-        je      Lcopy_none
-        movw    %gs,%cx
-        movw    %ds,%ax
-        cmpw    %cx,%ax
-        je      Lcopy_none
-
-        movl    %gs:(%edx), %ecx
-        cmpl    U_SYSTEM_GO32_INFO_BLOCK, %ecx
-        jbe     Lcopy_less
-        movl    U_SYSTEM_GO32_INFO_BLOCK, %ecx
-Lcopy_less:
-        movl    $U_SYSTEM_GO32_INFO_BLOCK, %edi
-        addl    $3, %ecx
-        andl    $0xfffffffc, %ecx
-        movl    %ecx, (%edi)
-        addl    $4, %edi
-        addl    $4, %edx
-        subl    $4, %ecx
-Lcopy_more:
-        movl    %gs:(%edx), %eax
-        movl    %eax, (%edi)
-        addl    $4, %edx
-        addl    $4, %edi
-        subl    $4, %ecx
-        jnz     Lcopy_more
-
-        movl    U_SYSTEM_GO32_INFO_BLOCK+4, %eax
-        movl    %eax, _ScreenPrimary
-        movl    U_SYSTEM_GO32_INFO_BLOCK+8, %eax
-        movl    %eax, _ScreenSecondary
-        movl    U_SYSTEM_GO32_INFO_BLOCK+12, %eax
-        movl    %eax, ___transfer_buffer
-        movl    U_SYSTEM_GO32_INFO_BLOCK+20, %eax
-        movl    %eax, ___pid
-        movl    U_SYSTEM_GO32_INFO_BLOCK+24, %eax
-        movl    %eax, __hard_master
-
-        jmp     Lcopy_done
-
-Lcopy_none:
-        movl    %ebx,U_SYSTEM_GO32_INFO_BLOCK+4
-        movl    %ebp,U_SYSTEM_GO32_INFO_BLOCK+8
-        movl    %edi,U_SYSTEM_GO32_INFO_BLOCK+12
-        movl    $4096,U_SYSTEM_GO32_INFO_BLOCK+16
-        movl    %esi,U_SYSTEM_GO32_INFO_BLOCK+20
-        movl    %eax,U_SYSTEM_GO32_INFO_BLOCK+24
-        movl    $28, U_SYSTEM_GO32_INFO_BLOCK
-Lcopy_done:
-
-        movw    U_SYSTEM_GO32_INFO_BLOCK+36,%ax
-        movw    %ax,_run_mode
-        cmpw    $4,%ax
-        jne     CanOnlyRunDPMI
-        call    Correct_tbaddress
-LtbaddressOK:
-        movw    U_SYSTEM_GO32_INFO_BLOCK+26,%ax
-        movw    %ax,_core_selector
-        /*  core selector in %fs */
-        movw    %ax,%fs
-        xorl    %esi,%esi
-        xorl    %edi,%edi
-        xorl    %ebp,%ebp
-        xorl    %ebx,%ebx
-
-        movl    %esp,%ebx
-        movl    $0x0,%ebp
-        movl    %esp,%ebx
-        movl    8(%ebx),%eax
-        movl    %eax,U_SYSTEM_ENVP
-        movl    4(%ebx),%eax
-        movl    %eax,_args
-        movl    (%ebx),%eax
-        movl    %eax,_argc
-
-        call    PASCALMAIN
-
-
-exit_again:
-        movl    $0x4c00,%eax
-        int     $0x21
-        jmp     exit_again
-
-        ret
-
-Correct_tbaddress:
-        movl    ___transfer_buffer,%eax
-        addl    $1,%eax
-        andl    $0xFFFFF,%eax
-        movl    %eax,___transfer_buffer
-        movl    %eax,U_SYSTEM_GO32_INFO_BLOCK+12
-        ret
-CanOnlyRunDPMI:
-        movl    $0x4c01,%eax
-        int     $0x21
-        jmp     exit_again
-
-        .ascii  "Can only run in DPMI "
-
-/*      .data
-        .globl _argc
-_argc:
-        .long   0
-        .globl  _args
-_args:
-        .long   0
-        .globl  _run_mode
-_run_mode:
-        .word   0
-        .globl  _core_selector
-_core_selector:
-        .word   0
-        .globl  _ENVP
-_ENVP:
-        .long   0 */
-
-        .globl  ___pid
-___pid:
-        .long   42
-
-        .globl  ___transfer_buffer
-___transfer_buffer:
-        .long   0
-
-        .globl  _ScreenSecondary
-_ScreenSecondary:
-        .long   0
-
-        .globl  __hard_master
-        .globl  __hard_slave
-        .globl  __core_select
-__hard_master:
-        .byte   0
-__hard_slave:
-        .byte   0
-
-.endif /* test_go32v1 */
 
 
 /* this was the prt0.s from the go32v1 version */
 /* this was the prt0.s from the go32v1 version */
 //
 //
@@ -1167,7 +822,7 @@ _environ:
 /* in assembler                                     */
 /* in assembler                                     */
 /* Copyright (C) 1996 DJ Delorie, see COPYING.DJ for details */
 /* Copyright (C) 1996 DJ Delorie, see COPYING.DJ for details */
 /* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */
 /* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */
-/* adapted to assembler for FPK by Pierre Muller             */
+/* adapted to assembler for FPC by Pierre Muller             */
 
 
 /* Global variables */
 /* Global variables */
 
 
@@ -1193,7 +848,10 @@ __dos_ds:
 
 
 /*
 /*
   $Log$
   $Log$
-  Revision 1.3  1998-08-19 10:56:35  pierre
+  Revision 1.4  1998-10-14 21:28:45  peter
+    * initialize fpu so sigfpe is finally generated for fpu errors
+
+  Revision 1.3  1998/08/19 10:56:35  pierre
     + added some special code for C interface
     + added some special code for C interface
       to avoid loading of crt1.o or dpmiexcp.o from the libc.a
       to avoid loading of crt1.o or dpmiexcp.o from the libc.a
 
 
@@ -1201,6 +859,5 @@ __dos_ds:
     * go32v1, go32v2 recompiles with the new objects
     * go32v1, go32v2 recompiles with the new objects
     * remake3 works again with go32v2
     * remake3 works again with go32v2
     - removed some "optimizes" from daniel which were wrong
     - removed some "optimizes" from daniel which were wrong
-
 */
 */
 
 

+ 68 - 65
rtl/linux/i386/cprt1.as

@@ -16,84 +16,87 @@
 # Linux ELF startup code for Free Pascal
 # Linux ELF startup code for Free Pascal
 #
 #
 
 
-	.file	"prt1.as"
-	.text
-	.globl	_start
-	.type	_start,@function
+        .file   "prt1.as"
+        .text
+        .globl  _start
+        .type   _start,@function
 _start:
 _start:
-	/* First locate the start of the environment variables */
-	popl	%ecx
-	movl	%esp,%ebx  		/* Points to the arguments */
-	movl	%ecx,%eax
-	incl	%eax
-	shll	$2,%eax
-	addl	%esp,%eax
-	andl	$0xfffffff8,%esp	/* Align stack */
+        /* First locate the start of the environment variables */
+        popl    %ecx
+        movl    %esp,%ebx               /* Points to the arguments */
+        movl    %ecx,%eax
+        incl    %eax
+        shll    $2,%eax
+        addl    %esp,%eax
+        andl    $0xfffffff8,%esp        /* Align stack */
 
 
-	movl	%eax,U_SYSLINUX_ENVP	/* Move the environment pointer */
-	movl	%ecx,U_SYSLINUX_ARGC	/* Move the argument counter    */
-	movl	%ebx,U_SYSLINUX_ARGV	/* Move the argument pointer	*/
+        movl    %eax,U_SYSLINUX_ENVP    /* Move the environment pointer */
+        movl    %ecx,U_SYSLINUX_ARGC    /* Move the argument counter    */
+        movl    %ebx,U_SYSLINUX_ARGV    /* Move the argument pointer    */
 
 
-	movl	%eax,__environ		/* libc environ */
+        movl    %eax,__environ          /* libc environ */
 
 
-	pushl	%eax
-	pushl	%ebx	
-	pushl	%ecx
-	
-	call	__libc_init		/* init libc */
-	movzwl	__fpu_control,%eax
-	pushl 	%eax
-	call 	__setfpucw
-	addl 	$4,%esp
-	pushl 	$_fini
-	call 	atexit
-	addl	$4,%esp
-	call 	_init
+        pushl   %eax
+        pushl   %ebx
+        pushl   %ecx
 
 
-	popl	%eax	
-	popl	%eax	
-	
-	call	PASCALMAIN		/* start the program */
-	
-	.globl _haltproc
-	.type _haltproc,@function
+        call    __libc_init             /* init libc */
+        movzwl  __fpu_control,%eax
+        pushl   %eax
+        call    __setfpucw
+        addl    $4,%esp
+        pushl   $_fini
+        call    atexit
+        addl    $4,%esp
+        call    _init
+
+        popl    %eax
+        popl    %eax
+
+        call    PASCALMAIN              /* start the program */
+
+        .globl _haltproc
+        .type _haltproc,@function
 _haltproc:
 _haltproc:
-	xorl	%ebx,%ebx		/* load and save exitcode */
-	movw	U_SYSLINUX_EXITCODE,%bx
-	pushl	%ebx
-	
-	call	exit			/* call libc exit, this will */
-					/* write the gmon.out */
-					
-	movl	$1,%eax			/* exit call */
-	popl	%ebx
-	int	$0x80
-	jmp	_haltproc
-	
+        xorl    %ebx,%ebx               /* load and save exitcode */
+        movw    U_SYSLINUX_EXITCODE,%bx
+        pushl   %ebx
+
+        call    exit                    /* call libc exit, this will */
+                                        /* write the gmon.out */
+
+        movl    $1,%eax                 /* exit call */
+        popl    %ebx
+        int     $0x80
+        jmp     _haltproc
+
 .data
 .data
-	.align	4
-	
-	.globl	___fpc_brk_addr		/* heap management */
-	.type	___fpc_brk_addr,@object
-	.size	___fpc_brk_addr,4
+        .align  4
+
+        .globl  ___fpc_brk_addr         /* heap management */
+        .type   ___fpc_brk_addr,@object
+        .size   ___fpc_brk_addr,4
 ___fpc_brk_addr:
 ___fpc_brk_addr:
-	.long	0
-	
-	.globl	__curbrk		/* necessary for libc */
-	.type	__curbrk,@object
-	.size	__curbrk,4
+        .long   0
+
+        .globl  __curbrk                /* necessary for libc */
+        .type   __curbrk,@object
+        .size   __curbrk,4
 __curbrk:
 __curbrk:
-	.long	0
-	
-	.globl 	__environ
-	.type 	__environ,@object
-	.size	__environ,4
+        .long   0
+
+        .globl  __environ
+        .type   __environ,@object
+        .size   __environ,4
 __environ:
 __environ:
-	.long 	0
+        .long   0
 
 
 #
 #
 # $Log$
 # $Log$
-# Revision 1.1  1998-08-12 19:16:09  peter
+# Revision 1.2  1998-10-14 21:28:46  peter
+#   * initialize fpu so sigfpe is finally generated for fpu errors
+#
+# Revision 1.1  1998/08/12 19:16:09  peter
 #   + loader including libc init and exit
 #   + loader including libc init and exit
 #
 #
 #
 #

+ 51 - 41
rtl/linux/i386/gprt0.as

@@ -17,59 +17,69 @@
 # Note: Needs linking with -lgmon and -lc
 # Note: Needs linking with -lgmon and -lc
 #
 #
 
 
-	.file "gprt0.as"
-	.text
-	.globl	__entry
+        .file "gprt0.as"
+        .text
+        .globl  __entry
 __entry:
 __entry:
-	movl	8(%esp),%eax		/* Move the environment pointer */
-	movl	4(%esp),%ebx		/* Move the argument pointer */
-	movl	(%esp),%ecx		/* Move the argument counter */
-	
-	movl	%eax,U_SYSLINUX_ENVP
-	movl	%ebx,U_SYSLINUX_ARGV
-	movl	%ecx,U_SYSLINUX_ARGC
+        movl    8(%esp),%eax            /* Move the environment pointer */
+        movl    4(%esp),%ebx            /* Move the argument pointer */
+        movl    (%esp),%ecx             /* Move the argument counter */
 
 
-	pushl	$_etext			/* Initialize gmon */
-	pushl	$_start
-	call	monstartup
-	addl	$8,%esp
-	pushl	$_mcleanup 
-	call	atexit
-	addl	$4,%esp
+        movl    %eax,U_SYSLINUX_ENVP
+        movl    %ebx,U_SYSLINUX_ARGV
+        movl    %ecx,U_SYSLINUX_ARGC
 
 
-	call	PASCALMAIN
+        finit                           /* initialize fpu */
+        fwait
+        fldcw   ___fpucw
 
 
-	.globl	_haltproc
-	.type	_haltproc,@function
+        pushl   $_etext                 /* Initialize gmon */
+        pushl   $_start
+        call    monstartup
+        addl    $8,%esp
+        pushl   $_mcleanup
+        call    atexit
+        addl    $4,%esp
+
+        call    PASCALMAIN
+
+        .globl  _haltproc
+        .type   _haltproc,@function
 _haltproc:
 _haltproc:
-	xorl	%ebx,%ebx		/* load and save exitcode */
-	movw	U_SYSLINUX_EXITCODE,%bx
-	pushl	%ebx
-	
-	call	exit			/* call libc exit, this will */
-					/* write the gmon.out */
-					
-	movl	$1,%eax			/* exit call */
-	popl	%ebx
-	int	$0x80
-	jmp	_haltproc
+        xorl    %ebx,%ebx               /* load and save exitcode */
+        movw    U_SYSLINUX_EXITCODE,%bx
+        pushl   %ebx
+
+        call    exit                    /* call libc exit, this will */
+                                        /* write the gmon.out */
+
+        movl    $1,%eax                 /* exit call */
+        popl    %ebx
+        int     $0x80
+        jmp     _haltproc
 
 
 .data
 .data
-	.align	4
-	.globl	___fpc_brk_addr		/* heap management */
-	.type	___fpc_brk_addr,@object
-	.size	___fpc_brk_addr,4
+        .align  4
+___fpucw:
+        .long   0x1332
+
+        .globl  ___fpc_brk_addr         /* heap management */
+        .type   ___fpc_brk_addr,@object
+        .size   ___fpc_brk_addr,4
 ___fpc_brk_addr:
 ___fpc_brk_addr:
-	
-	.globl	__curbrk		/* necessary for libc */
-	.type	__curbrk,@object
-	.size	__curbrk,4
+
+        .globl  __curbrk                /* necessary for libc */
+        .type   __curbrk,@object
+        .size   __curbrk,4
 __curbrk:
 __curbrk:
-	.long	0
+        .long   0
 
 
 #
 #
 # $Log$
 # $Log$
-# Revision 1.3  1998-08-08 14:42:09  peter
+# Revision 1.4  1998-10-14 21:28:47  peter
+#   * initialize fpu so sigfpe is finally generated for fpu errors
+#
+# Revision 1.3  1998/08/08 14:42:09  peter
 #   * added missing ___fpc_sbrk and logs
 #   * added missing ___fpc_sbrk and logs
 #
 #
 #
 #

+ 58 - 49
rtl/linux/i386/gprt1.as

@@ -17,67 +17,76 @@
 # Note: Needs linking with -lgmon and -lc
 # Note: Needs linking with -lgmon and -lc
 #
 #
 
 
-	.file	"gprt1.as"
-	.text
-	.globl _start
-	.type _start,@function
+        .file   "gprt1.as"
+        .text
+        .globl _start
+        .type _start,@function
 _start:
 _start:
-	/* First locate the start of the environment variables */
-	popl	%ecx
-	movl	%esp,%ebx  		/* Points to the arguments */
-	movl	%ecx,%eax
-	incl	%eax
-	shll	$2,%eax
-	addl	%esp,%eax
-	andl	$0xfffffff8,%esp	/* Align stack */
+        /* First locate the start of the environment variables */
+        popl    %ecx
+        movl    %esp,%ebx               /* Points to the arguments */
+        movl    %ecx,%eax
+        incl    %eax
+        shll    $2,%eax
+        addl    %esp,%eax
+        andl    $0xfffffff8,%esp        /* Align stack */
 
 
-	movl	%eax,U_SYSLINUX_ENVP	/* Move the environment pointer */
-	movl	%ecx,U_SYSLINUX_ARGC	/* Move the argument counter    */
-	movl	%ebx,U_SYSLINUX_ARGV	/* Move the argument pointer	*/
+        movl    %eax,U_SYSLINUX_ENVP    /* Move the environment pointer */
+        movl    %ecx,U_SYSLINUX_ARGC    /* Move the argument counter    */
+        movl    %ebx,U_SYSLINUX_ARGV    /* Move the argument pointer    */
 
 
-	pushl	$_etext			/* Initialize gmon */
-	pushl	$_start
-	call	monstartup
-	addl	$8,%esp
-	pushl	$_mcleanup 
-	call	atexit
-	addl	$4,%esp
-	
-	call	PASCALMAIN
+        finit                           /* initialize fpu */
+        fwait
+        fldcw   ___fpucw
 
 
-	.globl _haltproc
-	.type _haltproc,@function
+        pushl   $_etext                 /* Initialize gmon */
+        pushl   $_start
+        call    monstartup
+        addl    $8,%esp
+        pushl   $_mcleanup
+        call    atexit
+        addl    $4,%esp
+
+        call    PASCALMAIN
+
+        .globl _haltproc
+        .type _haltproc,@function
 _haltproc:
 _haltproc:
-	xorl	%ebx,%ebx		/* load and save exitcode */
-	movw	U_SYSLINUX_EXITCODE,%bx
-	pushl	%ebx
-	
-	call	exit			/* call libc exit, this will */
-					/* write the gmon.out */
-					
-	movl	$1,%eax			/* exit call */
-	popl	%ebx
-	int	$0x80
-	jmp	_haltproc
+        xorl    %ebx,%ebx               /* load and save exitcode */
+        movw    U_SYSLINUX_EXITCODE,%bx
+        pushl   %ebx
+
+        call    exit                    /* call libc exit, this will */
+                                        /* write the gmon.out */
+
+        movl    $1,%eax                 /* exit call */
+        popl    %ebx
+        int     $0x80
+        jmp     _haltproc
 
 
 .data
 .data
-	.align	4
-	
-	.globl	___fpc_brk_addr		/* heap management */
-	.type	___fpc_brk_addr,@object
-	.size	___fpc_brk_addr,4
+        .align  4
+___fpucw:
+        .long   0x1332
+
+        .globl  ___fpc_brk_addr         /* heap management */
+        .type   ___fpc_brk_addr,@object
+        .size   ___fpc_brk_addr,4
 ___fpc_brk_addr:
 ___fpc_brk_addr:
-	.long	0
-	
-	.globl	__curbrk		/* necessary for libc */
-	.type	__curbrk,@object
-	.size	__curbrk,4
+        .long   0
+
+        .globl  __curbrk                /* necessary for libc */
+        .type   __curbrk,@object
+        .size   __curbrk,4
 __curbrk:
 __curbrk:
-	.long	0
+        .long   0
 
 
 #
 #
 # $Log$
 # $Log$
-# Revision 1.3  1998-08-08 14:42:10  peter
+# Revision 1.4  1998-10-14 21:28:48  peter
+#   * initialize fpu so sigfpe is finally generated for fpu errors
+#
+# Revision 1.3  1998/08/08 14:42:10  peter
 #   * added missing ___fpc_sbrk and logs
 #   * added missing ___fpc_sbrk and logs
 #
 #
 #
 #

+ 38 - 28
rtl/linux/i386/prt0.as

@@ -16,40 +16,50 @@
 # Linux a.out startup code for Free Pascal
 # Linux a.out startup code for Free Pascal
 #
 #
 
 
-	.file "prt0.as"
-	.text
-	.globl	__entry
+        .file "prt0.as"
+        .text
+        .globl  __entry
 __entry:
 __entry:
-	movl	8(%esp),%eax		/* Move the environment pointer */
-	movl	4(%esp),%ebx		/* Move the argument pointer */
-	movl	(%esp),%ecx		/* Move the argument counter */
-	
-	movl	%eax,U_SYSLINUX_ENVP
-	movl	%ebx,U_SYSLINUX_ARGV
-	movl	%ecx,U_SYSLINUX_ARGC
-
-	call	PASCALMAIN
-
-	.globl	_haltproc
-	.type	_haltproc,@function
-_haltproc:	
-	movl	$1,%eax			/* exit call */
-	xorl	%ebx,%ebx
-	movw	U_SYSLINUX_EXITCODE,%bx
-	int	$0x80
-	jmp	_haltproc
-	
+        movl    8(%esp),%eax            /* Move the environment pointer */
+        movl    4(%esp),%ebx            /* Move the argument pointer */
+        movl    (%esp),%ecx             /* Move the argument counter */
+
+        movl    %eax,U_SYSLINUX_ENVP
+        movl    %ebx,U_SYSLINUX_ARGV
+        movl    %ecx,U_SYSLINUX_ARGC
+
+        finit                           /* initialize fpu */
+        fwait
+        fldcw   ___fpucw
+
+        call    PASCALMAIN
+
+        .globl  _haltproc
+        .type   _haltproc,@function
+_haltproc:
+        movl    $1,%eax                 /* exit call */
+        xorl    %ebx,%ebx
+        movw    U_SYSLINUX_EXITCODE,%bx
+        int     $0x80
+        jmp     _haltproc
+
 .data
 .data
-	.align	4
-	.globl	___fpc_brk_addr		/* heap management */
-	.type	___fpc_brk_addr,@object
-	.size	___fpc_brk_addr,4
+        .align  4
+___fpucw:
+        .long   0x1332
+
+        .globl  ___fpc_brk_addr         /* heap management */
+        .type   ___fpc_brk_addr,@object
+        .size   ___fpc_brk_addr,4
 ___fpc_brk_addr:
 ___fpc_brk_addr:
-	.long	0
+        .long   0
 
 
 #
 #
 # $Log$
 # $Log$
-# Revision 1.3  1998-08-08 14:42:11  peter
+# Revision 1.4  1998-10-14 21:28:49  peter
+#   * initialize fpu so sigfpe is finally generated for fpu errors
+#
+# Revision 1.3  1998/08/08 14:42:11  peter
 #   * added missing ___fpc_sbrk and logs
 #   * added missing ___fpc_sbrk and logs
 #
 #
 #
 #

+ 47 - 38
rtl/linux/i386/prt1.as

@@ -16,53 +16,62 @@
 # Linux ELF startup code for Free Pascal
 # Linux ELF startup code for Free Pascal
 #
 #
 
 
-	.file	"prt1.as"
-	.text
-	.globl	_start
-	.type	_start,@function
+        .file   "prt1.as"
+        .text
+        .globl  _start
+        .type   _start,@function
 _start:
 _start:
-	/* First locate the start of the environment variables */
-	popl	%ecx
-	movl	%esp,%ebx  		/* Points to the arguments */
-	movl	%ecx,%eax
-	incl	%eax
-	shll	$2,%eax
-	addl	%esp,%eax
-	andl	$0xfffffff8,%esp	/* Align stack */
+        /* First locate the start of the environment variables */
+        popl    %ecx
+        movl    %esp,%ebx               /* Points to the arguments */
+        movl    %ecx,%eax
+        incl    %eax
+        shll    $2,%eax
+        addl    %esp,%eax
+        andl    $0xfffffff8,%esp        /* Align stack */
 
 
-	movl	%eax,U_SYSLINUX_ENVP	/* Move the environment pointer */
-	movl	%ecx,U_SYSLINUX_ARGC	/* Move the argument counter    */
-	movl	%ebx,U_SYSLINUX_ARGV	/* Move the argument pointer	*/
+        movl    %eax,U_SYSLINUX_ENVP    /* Move the environment pointer */
+        movl    %ecx,U_SYSLINUX_ARGC    /* Move the argument counter    */
+        movl    %ebx,U_SYSLINUX_ARGV    /* Move the argument pointer    */
+
+        finit                           /* initialize fpu */
+        fwait
+        fldcw   ___fpucw
+
+        call    PASCALMAIN
+
+        .globl  _haltproc
+        .type   _haltproc,@function
+_haltproc:
+        movl    $1,%eax                 /* exit call */
+        xorl    %ebx,%ebx
+        movw    U_SYSLINUX_EXITCODE,%bx
+        int     $0x80
+        jmp     _haltproc
 
 
-	call	PASCALMAIN
-	
-	.globl	_haltproc
-	.type	_haltproc,@function
-_haltproc:	
-	movl	$1,%eax			/* exit call */
-	xorl	%ebx,%ebx
-	movw	U_SYSLINUX_EXITCODE,%bx
-	int	$0x80
-	jmp	_haltproc
-	
 .data
 .data
-	.align	4
-	
-	.globl	___fpc_brk_addr		/* heap management */
-	.type	___fpc_brk_addr,@object
-	.size	___fpc_brk_addr,4
+        .align  4
+___fpucw:
+        .long   0x1332
+
+        .globl  ___fpc_brk_addr         /* heap management */
+        .type   ___fpc_brk_addr,@object
+        .size   ___fpc_brk_addr,4
 ___fpc_brk_addr:
 ___fpc_brk_addr:
-	.long	0
-	
-	.globl	__curbrk		/* necessary for libc */
-	.type	__curbrk,@object
-	.size	__curbrk,4
+        .long   0
+
+        .globl  __curbrk                /* necessary for libc */
+        .type   __curbrk,@object
+        .size   __curbrk,4
 __curbrk:
 __curbrk:
-	.long	0
+        .long   0
 
 
 #
 #
 # $Log$
 # $Log$
-# Revision 1.3  1998-08-08 14:42:12  peter
+# Revision 1.4  1998-10-14 21:28:50  peter
+#   * initialize fpu so sigfpe is finally generated for fpu errors
+#
+# Revision 1.3  1998/08/08 14:42:12  peter
 #   * added missing ___fpc_sbrk and logs
 #   * added missing ___fpc_sbrk and logs
 #
 #
 #
 #