mirror of
https://github.com/FDOS/kernel.git
synced 2025-07-29 00:34:10 +02:00
Preserve bx and cx for WATCOMC in asmsupt.asm as well. Saves another
200 bytes. git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@840 6ac86273-5f31-0410-b378-82cca8765d1b
This commit is contained in:
parent
8e80462093
commit
8ea4701226
@ -106,6 +106,8 @@ pascal_setup:
|
||||
push bp ; Standard C entry
|
||||
mov bp,sp
|
||||
%ifdef WATCOM
|
||||
push bx
|
||||
push cx
|
||||
push es
|
||||
%endif
|
||||
push si
|
||||
@ -240,19 +242,24 @@ MEMSET:
|
||||
|
||||
;*****
|
||||
pascal_return:
|
||||
pop ds
|
||||
lds di, [bp] ; return address in es, saved bp in di
|
||||
mov bh, 0
|
||||
add bp, bx ; point bp to "as if there were 0 args"
|
||||
mov [bp+2], ds ; put return address at first arg
|
||||
mov [bp], di ; saved bp below that one
|
||||
|
||||
pop ds
|
||||
pop di
|
||||
pop si
|
||||
%ifdef WATCOM
|
||||
pop es
|
||||
pop cx
|
||||
pop bx
|
||||
%endif
|
||||
mov sp,bp
|
||||
pop bp
|
||||
ret
|
||||
|
||||
pop cx
|
||||
sub bh,bh
|
||||
add sp,bx
|
||||
jmp cx
|
||||
|
||||
;*****************************************************************
|
||||
|
||||
; fstrcpy (void FAR*dest, void FAR *src);
|
||||
|
@ -62,16 +62,16 @@ size_t ASMPASCAL fstrlen(const char FAR *s);
|
||||
#ifdef __WATCOMC__
|
||||
/* dx and es not used or clobbered for all asmsupt.asm functions except
|
||||
(f)memchr/(f)strchr (which preserve es) */
|
||||
#pragma aux (pascal) pascal_abc modify exact [ax bx cx]
|
||||
#pragma aux (pascal_abc) init_memset
|
||||
#pragma aux (pascal_abc) init_fmemset
|
||||
#pragma aux (pascal_abc) init_memcpy
|
||||
#pragma aux (pascal_abc) init_fmemcpy
|
||||
#pragma aux (pascal_abc) init_memcmp modify nomemory
|
||||
#pragma aux (pascal_abc) init_fmemcmp modify nomemory
|
||||
#pragma aux (pascal_abc) init_strcpy
|
||||
#pragma aux (pascal_abc) init_strlen modify nomemory
|
||||
#pragma aux (pascal_abc) init_fstrlen modify nomemory
|
||||
#pragma aux (pascal) pascal_ax modify exact [ax]
|
||||
#pragma aux (pascal_ax) init_memset
|
||||
#pragma aux (pascal_ax) init_fmemset
|
||||
#pragma aux (pascal_ax) init_memcpy
|
||||
#pragma aux (pascal_ax) init_fmemcpy
|
||||
#pragma aux (pascal_ax) init_memcmp modify nomemory
|
||||
#pragma aux (pascal_ax) init_fmemcmp modify nomemory
|
||||
#pragma aux (pascal_ax) init_strcpy
|
||||
#pragma aux (pascal_ax) init_strlen modify nomemory
|
||||
#pragma aux (pascal_ax) init_fstrlen modify nomemory
|
||||
#endif
|
||||
|
||||
#undef LINESIZE
|
||||
|
@ -314,23 +314,23 @@ int /*ASMCFUNC*/ ASMPASCAL memcmp(const void *m1, const void *m2, size_t n);
|
||||
int /*ASMCFUNC*/ ASMPASCAL fmemcmp(const void FAR *m1, const void FAR *m2, size_t n);
|
||||
|
||||
#ifdef __WATCOMC__
|
||||
/* dx and es not used or clobbered for all asmsupt.asm functions except
|
||||
(f)memchr/(f)strchr (which preserve es) */
|
||||
#pragma aux (pascal) pascal_abc modify exact [ax bx cx]
|
||||
#pragma aux (pascal_abc) fmemcpy
|
||||
#pragma aux (pascal_abc) memcpy
|
||||
#pragma aux (pascal_abc) fmemset
|
||||
#pragma aux (pascal_abc) memset
|
||||
#pragma aux (pascal_abc) fmemcmp modify nomemory
|
||||
#pragma aux (pascal_abc) memcmp modify nomemory
|
||||
#pragma aux (pascal_abc) fstrcpy
|
||||
#pragma aux (pascal_abc) strcpy
|
||||
#pragma aux (pascal_abc) fstrlen modify nomemory
|
||||
#pragma aux (pascal_abc) strlen modify nomemory
|
||||
#pragma aux (pascal) memchr modify exact [ax bx cx dx]
|
||||
#pragma aux (pascal) fmemchr modify exact [ax bx cx dx]
|
||||
#pragma aux (pascal) strchr modify exact [ax bx cx dx]
|
||||
#pragma aux (pascal) fstrchr modify exact [ax bx cx dx]
|
||||
/* bx, cx, dx and es not used or clobbered for all asmsupt.asm functions except
|
||||
(f)memchr/(f)strchr (which clobber dx) */
|
||||
#pragma aux (pascal) pascal_ax modify exact [ax]
|
||||
#pragma aux (pascal_ax) fmemcpy
|
||||
#pragma aux (pascal_ax) memcpy
|
||||
#pragma aux (pascal_ax) fmemset
|
||||
#pragma aux (pascal_ax) memset
|
||||
#pragma aux (pascal_ax) fmemcmp modify nomemory
|
||||
#pragma aux (pascal_ax) memcmp modify nomemory
|
||||
#pragma aux (pascal_ax) fstrcpy
|
||||
#pragma aux (pascal_ax) strcpy
|
||||
#pragma aux (pascal_ax) fstrlen modify nomemory
|
||||
#pragma aux (pascal_ax) strlen modify nomemory
|
||||
#pragma aux (pascal) memchr modify exact [ax dx] nomemory
|
||||
#pragma aux (pascal) fmemchr modify exact [ax dx] nomemory
|
||||
#pragma aux (pascal) strchr modify exact [ax dx] nomemory
|
||||
#pragma aux (pascal) fstrchr modify exact [ax dx] nomemory
|
||||
#endif
|
||||
|
||||
/* sysclk.c */
|
||||
|
Loading…
x
Reference in New Issue
Block a user