Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc/sys/rdos/crt0.S')
-rw-r--r--newlib/libc/sys/rdos/crt0.S406
1 files changed, 0 insertions, 406 deletions
diff --git a/newlib/libc/sys/rdos/crt0.S b/newlib/libc/sys/rdos/crt0.S
deleted file mode 100644
index efc3b1633..000000000
--- a/newlib/libc/sys/rdos/crt0.S
+++ /dev/null
@@ -1,406 +0,0 @@
-/*#######################################################################
-# RDOS operating system
-# Copyright (C) 1988-2006, Leif Ekblad
-#
-# This library is free software; you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License as published
-# by the Free Software Foundation; either version 2.1 of the License, or
-# (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-# The author of this program may be contacted at leif@rdos.net
-#
-# crt0.S
-# GCC startupcode for RDOS
-#
-##########################################################################*/
-
-#include "user.def"
-
- KEY_ENTRIES = 256
-
- .macro UserGate nr
- .byte 0x9A
- .long \nr
- .word 2
- .endm
-
- .data
- .align 8
-
-_key_section:
- .word 0
-
-_key_ref_arr:
- .long 0
-
-_key_dtor_arr:
- .long 0
-
- .text
- .align 4
-
-/*##########################################################################
-#
-# Name : _start
-#
-# Purpose....: GCC startup-code
-#
-##########################################################################*/
-
- .global _start
-
-_start:
- call get_impure_data_size
- movl %eax,%ecx
- UserGate allocate_app_mem_nr
-
- xorl %eax,%eax
- .byte 0x64
- movl %edx,(%eax)
- movl %edx,%edi
- rep
- stosb
- pushl %edx
-
- movl $(4 * KEY_ENTRIES),%eax
- movl %eax,%ecx
- UserGate allocate_app_mem_nr
- movl $4,%eax
- .byte 0x64
- movl %edx,(%eax)
- movl %edx,%edi
- xorl %eax,%eax
- rep
- stosb
-
- movl $(4 * KEY_ENTRIES),%eax
- movl %eax,%ecx
- UserGate allocate_app_mem_nr
- movl %edx,_key_ref_arr
- movl %edx,%edi
- xorl %eax,%eax
- rep
- stosb
-
- movl $(4 * KEY_ENTRIES),%eax
- movl %eax,%ecx
- UserGate allocate_app_mem_nr
- movl %edx,_key_dtor_arr
- movl %edx,%edi
- xorl %eax,%eax
- rep
- stosb
-
- UserGate create_user_section_nr
- movw %bx,_key_section
-
- call __init_rdos
- add $4, %esp
-
- movl $0x1000,%eax
- UserGate allocate_app_mem_nr
-
- pushl %edx
- UserGate get_cmd_line_nr
-
- xorl %ecx,%ecx
- xorb %ah,%ah
-
-arg_loop:
- movl %edi,(%edx)
- addl $4,%edx
- movb (%edi),%al
- orb %al,%al
- je arg_done
-
-arg_scan:
- movb (%edi),%al
- orb %al,%al
- je next_arg
-
- cmpb $0x22,%al
- jne arg_no_quote
-
- xorb $1,%ah
- jmp arg_scan_next
-
-arg_no_quote:
- orb %ah,%ah
- jnz arg_scan_next
-
- cmpb $0x20,%al
- je next_arg
-
- cmpb $0x8,%al
- je next_arg
-
-arg_scan_next:
- incl %edi
- jmp arg_scan
-
-next_arg:
- incl %ecx
-
-to_next_arg:
- orb %al,%al
- je arg_done
-
- xorb %al,%al
- movb %al,(%edi)
- incl %edi
- movb (%edi),%al
- cmpb $0x20,%al
- je to_next_arg
-
- cmpb $0x8,%al
- je to_next_arg
-
- jmp arg_loop
-
-arg_done:
- int $3
- pushl %ecx
- call main
- add $8, %esp
-
- pushl %eax
- call exit
-
-/*##########################################################################
-#
-# Name : _exit
-#
-# Purpose....: GCC exit-code
-#
-##########################################################################*/
-
- .global _exit
-
-_exit:
- pushl %ebp
- movl %esp,%ebp
- movl 8(%ebp),%eax
- UserGate unload_exe_nr
-
-/*##########################################################################
-#
-# Name : __getreent
-#
-# Purpose....: ?
-#
-##########################################################################*/
-
- .global __getreent
-
-__getreent:
- xorl %eax,%eax
- .byte 0x64
- movl (%eax),%eax
- ret
-
-/*##########################################################################
-#
-# Name : __rdos_thread_key_create
-#
-# Purpose....: Emulate GCC pthread_key_create
-#
-# Parameters.: dtor
-#
-# Returns....: Key index
-#
-##########################################################################*/
-
- .global __rdos_thread_key_create
-
-__rdos_thread_key_create:
- int $3
- pushl %ebp
- movl %esp,%ebp
- pushl %ebx
- pushl %ecx
-
- mov _key_section,%bx
- UserGate enter_user_section_nr
-
- movl _key_ref_arr,%ebx
- movl KEY_ENTRIES,%ecx
-
-rtkc_scan_loop:
- movl (%ebx), %eax
- orl %eax, %eax
- jz rtkc_entry_found
-
- add $4, %ebx
- loop rtkc_scan_loop
-
- movl $-1, %eax
- jmp rtkc_leave
-
-rtkc_entry_found:
- movb $255,3(%ebx)
- subl _key_ref_arr,%ebx
- addl _key_dtor_arr,%ebx
- movl 8(%ebp),%eax
- movl %eax,(%ebx)
- subl _key_dtor_arr,%ebx
- movl %ebx,%eax
-
-rtkc_leave:
- mov _key_section, %bx
- UserGate leave_user_section_nr
-
- popl %ecx
- popl %ebx
- leave
- ret
-
-/*##########################################################################
-#
-# Name : __rdos_thread_key_delete
-#
-# Purpose....: Emulate GCC pthread_key_delete
-#
-# Parameters.: index
-#
-# Returns....: result
-#
-##########################################################################*/
-
- .global __rdos_thread_key_delete
-
-__rdos_thread_key_delete:
- int $3
- pushl %ebp
- movl %esp,%ebp
- pushl %ebx
-
- mov _key_section,%bx
- UserGate enter_user_section_nr
-
- movl 8(%ebp),%ebx
- testb $3,%bl
- jnz rtkd_fail
-
- cmpl $(4 * KEY_ENTRIES),%ebx
- jae rtkd_fail
-
- addl _key_ref_arr,%ebx
- movb $0,3(%ebx)
- mov (%ebx),%eax
- orl %eax,%eax
- jz rtkd_ok
-
- subl _key_ref_arr,%ebx
- movl $0,(%ebx)
- jmp rtkd_ok
-
-rtkd_fail:
- movl $1,%eax
- jmp rtkd_leave
-
-rtkd_ok:
- xorl %eax,%eax
-
-rtkd_leave:
- mov _key_section, %bx
- UserGate leave_user_section_nr
-
- popl %ebx
- leave
- ret
-
-/*##########################################################################
-#
-# Name : __rdos_thread_getspecific
-#
-# Purpose....: Emulate GCC pthread_getspecific
-#
-# Parameters.: index
-#
-# Returns....: value
-#
-##########################################################################*/
-
- .global __rdos_thread_getspecific
-
-__rdos_thread_getspecific:
- int $3
- pushl %ebp
- movl %esp,%ebp
- pushl %ebx
-
- movl 8(%ebp),%ebx
- testb $3,%bl
- jnz rtg_fail
-
- cmpl $(4 * KEY_ENTRIES),%ebx
- jae rtg_fail
-
- movl $4,%eax
- .byte 0x64
- movl (%eax),%eax
- addl %eax,%ebx
- movl (%ebx),%eax
- jmp rtg_done
-
-rtg_fail:
- xorl %eax,%eax
-
-rtg_done:
- popl %ebx
- leave
- ret
-
-/*##########################################################################
-#
-# Name : __rdos_thread_setspecific
-#
-# Purpose....: Emulate GCC pthread_setspecific
-#
-# Parameters.: index
-# value
-#
-##########################################################################*/
-
- .global __rdos_thread_setspecific
-
-__rdos_thread_setspecific:
- int $3
- pushl %ebp
- movl %esp,%ebp
- pushl %ebx
- pushl %ecx
-
- movl 8(%ebp),%ebx
- testb $3,%bl
- jnz rts_fail
-
- cmpl $(4 * KEY_ENTRIES),%ebx
- jae rts_fail
-
- movl $4,%eax
- .byte 0x64
- movl (%eax),%eax
- addl %eax,%ebx
-
- movl 12(%ebp),%eax
- movl %eax,(%ebx)
- xorl %eax,%eax
- jmp rts_done
-
-rts_fail:
- movl $1,%eax
-
-rts_done:
- popl %ebx
- leave
- ret