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:
Bart Oldeman 2004-04-06 16:29:27 +00:00
parent 8e80462093
commit 8ea4701226
3 changed files with 40 additions and 33 deletions

View File

@ -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);

View File

@ -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

View File

@ -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 */