/programs/develop/libraries/menuetlibc/stub/Makefile |
---|
0,0 → 1,18 |
include $(MENUETDEV)/osrules.mak |
.SUFFIXES: .asm; |
OBJS = crt0.o |
all: $(OBJS) |
ifdef ON_WINDOWS |
crt0.o: crt0_$(STUBFMT).asm |
fasm crt0_$(STUBFMT).asm crt0.o |
else |
crt0.o: crt0_$(STUBFMT)_nounderscores.asm |
fasm crt0_$(STUBFMT)_nounderscores.asm crt0.o |
endif |
clean: |
$(RM) $(OBJS) |
/programs/develop/libraries/menuetlibc/stub/crt0_coff.asm |
---|
0,0 → 1,58 |
CATCH_NULL_CALL = 0 |
format MS COFF |
section '.text' code readable executable |
public start |
;EXTRN _edata |
EXTRN ___menuet__app_param_area |
EXTRN ___menuet__app_path_area |
EXTRN ___crt1_startup |
start: |
public ___menuet__app_header |
public ___menuet__memsize |
section '.A' code readable executable |
___menuet__app_header: |
db 'MENUET01' |
dd 0x01 |
if CATCH_NULL_CALL |
dd do_start |
else |
dd ___crt1_startup |
end if |
; dd _edata |
dd 0 |
___menuet__memsize: |
dd 0x400000 |
dd app_stack |
dd ___menuet__app_param_area |
dd ___menuet__app_path_area |
if CATCH_NULL_CALL |
do_start: |
mov byte [0], 0xE9 |
mov dword [1], _libc_null_call-5 |
call ___crt1_startup |
; Handle exit if __crt1_startup returns (shouldn't happen) |
mov eax,-1 |
int 0x40 |
end if |
if CATCH_NULL_CALL |
EXTRN ___libc_null_call |
_libc_null_call: |
push eax |
push ebx |
push ecx |
push edx |
push esi |
push edi |
push ebp |
call ___libc_null_call |
mov eax,-1 |
int 0x40 |
end if |
section '.bss' readable writeable |
rd 0x20000 |
app_stack: |
/programs/develop/libraries/menuetlibc/stub/crt0_elf.asm |
---|
0,0 → 1,56 |
CATCH_NULL_CALL = 0 |
format ELF |
section '.text' executable |
public start |
EXTRN _edata |
EXTRN ___menuet__app_param_area |
EXTRN ___menuet__app_path_area |
EXTRN ___crt1_startup |
start: |
public ___menuet__app_header |
public ___menuet__memsize |
___menuet__app_header: |
db 'MENUET01' |
dd 0x01 |
if CATCH_NULL_CALL |
dd do_start |
else |
dd ___crt1_startup |
end if |
dd _edata |
___menuet__memsize: |
dd 0x400000 |
dd app_stack |
dd ___menuet__app_param_area |
dd ___menuet__app_path_area |
if CATCH_NULL_CALL |
do_start: |
mov byte [0], 0xE9 |
mov dword [1], _libc_null_call-5 |
call ___crt1_startup |
; Handle exit if __crt1_startup returns (shouldn't happen) |
mov eax,-1 |
int 0x40 |
end if |
if CATCH_NULL_CALL |
EXTRN ___libc_null_call |
_libc_null_call: |
push eax |
push ebx |
push ecx |
push edx |
push esi |
push edi |
push ebp |
call ___libc_null_call |
mov eax,-1 |
int 0x40 |
end if |
section '.bss' writeable |
rd 0x20000 |
app_stack: |
/programs/develop/libraries/menuetlibc/stub/crt0_elf_nounderscores.asm |
---|
0,0 → 1,56 |
CATCH_NULL_CALL = 0 |
format ELF |
section '.text' executable |
public start |
EXTRN edata |
EXTRN __menuet__app_param_area |
EXTRN __menuet__app_path_area |
EXTRN __crt1_startup |
start: |
public __menuet__app_header |
public __menuet__memsize |
__menuet__app_header: |
db 'MENUET01' |
dd 0x01 |
if CATCH_NULL_CALL |
dd do_start |
else |
dd __crt1_startup |
end if |
dd edata |
__menuet__memsize: |
dd 0x400000 |
dd app_stack |
dd __menuet__app_param_area |
dd __menuet__app_path_area |
if CATCH_NULL_CALL |
do_start: |
mov byte [0], 0xE9 |
mov dword [1], _libc_null_call-5 |
call __crt1_startup |
; Handle exit if __crt1_startup returns (shouldn't happen) |
mov eax,-1 |
int 0x40 |
end if |
if CATCH_NULL_CALL |
EXTRN __libc_null_call |
_libc_null_call: |
push eax |
push ebx |
push ecx |
push edx |
push esi |
push edi |
push ebp |
call __libc_null_call |
mov eax,-1 |
int 0x40 |
end if |
section '.bss' writeable |
rd 4096*4 |
app_stack: |