mirror of
https://github.com/FDOS/kernel.git
synced 2025-07-31 01:34:19 +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
|
push bp ; Standard C entry
|
||||||
mov bp,sp
|
mov bp,sp
|
||||||
%ifdef WATCOM
|
%ifdef WATCOM
|
||||||
|
push bx
|
||||||
|
push cx
|
||||||
push es
|
push es
|
||||||
%endif
|
%endif
|
||||||
push si
|
push si
|
||||||
@ -240,19 +242,24 @@ MEMSET:
|
|||||||
|
|
||||||
;*****
|
;*****
|
||||||
pascal_return:
|
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 di
|
||||||
pop si
|
pop si
|
||||||
%ifdef WATCOM
|
%ifdef WATCOM
|
||||||
pop es
|
pop es
|
||||||
|
pop cx
|
||||||
|
pop bx
|
||||||
%endif
|
%endif
|
||||||
|
mov sp,bp
|
||||||
pop bp
|
pop bp
|
||||||
|
ret
|
||||||
|
|
||||||
pop cx
|
|
||||||
sub bh,bh
|
|
||||||
add sp,bx
|
|
||||||
jmp cx
|
|
||||||
|
|
||||||
;*****************************************************************
|
;*****************************************************************
|
||||||
|
|
||||||
; fstrcpy (void FAR*dest, void FAR *src);
|
; fstrcpy (void FAR*dest, void FAR *src);
|
||||||
|
@ -62,16 +62,16 @@ size_t ASMPASCAL fstrlen(const char FAR *s);
|
|||||||
#ifdef __WATCOMC__
|
#ifdef __WATCOMC__
|
||||||
/* dx and es not used or clobbered for all asmsupt.asm functions except
|
/* dx and es not used or clobbered for all asmsupt.asm functions except
|
||||||
(f)memchr/(f)strchr (which preserve es) */
|
(f)memchr/(f)strchr (which preserve es) */
|
||||||
#pragma aux (pascal) pascal_abc modify exact [ax bx cx]
|
#pragma aux (pascal) pascal_ax modify exact [ax]
|
||||||
#pragma aux (pascal_abc) init_memset
|
#pragma aux (pascal_ax) init_memset
|
||||||
#pragma aux (pascal_abc) init_fmemset
|
#pragma aux (pascal_ax) init_fmemset
|
||||||
#pragma aux (pascal_abc) init_memcpy
|
#pragma aux (pascal_ax) init_memcpy
|
||||||
#pragma aux (pascal_abc) init_fmemcpy
|
#pragma aux (pascal_ax) init_fmemcpy
|
||||||
#pragma aux (pascal_abc) init_memcmp modify nomemory
|
#pragma aux (pascal_ax) init_memcmp modify nomemory
|
||||||
#pragma aux (pascal_abc) init_fmemcmp modify nomemory
|
#pragma aux (pascal_ax) init_fmemcmp modify nomemory
|
||||||
#pragma aux (pascal_abc) init_strcpy
|
#pragma aux (pascal_ax) init_strcpy
|
||||||
#pragma aux (pascal_abc) init_strlen modify nomemory
|
#pragma aux (pascal_ax) init_strlen modify nomemory
|
||||||
#pragma aux (pascal_abc) init_fstrlen modify nomemory
|
#pragma aux (pascal_ax) init_fstrlen modify nomemory
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#undef LINESIZE
|
#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);
|
int /*ASMCFUNC*/ ASMPASCAL fmemcmp(const void FAR *m1, const void FAR *m2, size_t n);
|
||||||
|
|
||||||
#ifdef __WATCOMC__
|
#ifdef __WATCOMC__
|
||||||
/* dx and es not used or clobbered for all asmsupt.asm functions except
|
/* bx, cx, dx and es not used or clobbered for all asmsupt.asm functions except
|
||||||
(f)memchr/(f)strchr (which preserve es) */
|
(f)memchr/(f)strchr (which clobber dx) */
|
||||||
#pragma aux (pascal) pascal_abc modify exact [ax bx cx]
|
#pragma aux (pascal) pascal_ax modify exact [ax]
|
||||||
#pragma aux (pascal_abc) fmemcpy
|
#pragma aux (pascal_ax) fmemcpy
|
||||||
#pragma aux (pascal_abc) memcpy
|
#pragma aux (pascal_ax) memcpy
|
||||||
#pragma aux (pascal_abc) fmemset
|
#pragma aux (pascal_ax) fmemset
|
||||||
#pragma aux (pascal_abc) memset
|
#pragma aux (pascal_ax) memset
|
||||||
#pragma aux (pascal_abc) fmemcmp modify nomemory
|
#pragma aux (pascal_ax) fmemcmp modify nomemory
|
||||||
#pragma aux (pascal_abc) memcmp modify nomemory
|
#pragma aux (pascal_ax) memcmp modify nomemory
|
||||||
#pragma aux (pascal_abc) fstrcpy
|
#pragma aux (pascal_ax) fstrcpy
|
||||||
#pragma aux (pascal_abc) strcpy
|
#pragma aux (pascal_ax) strcpy
|
||||||
#pragma aux (pascal_abc) fstrlen modify nomemory
|
#pragma aux (pascal_ax) fstrlen modify nomemory
|
||||||
#pragma aux (pascal_abc) strlen modify nomemory
|
#pragma aux (pascal_ax) strlen modify nomemory
|
||||||
#pragma aux (pascal) memchr modify exact [ax bx cx dx]
|
#pragma aux (pascal) memchr modify exact [ax dx] nomemory
|
||||||
#pragma aux (pascal) fmemchr modify exact [ax bx cx dx]
|
#pragma aux (pascal) fmemchr modify exact [ax dx] nomemory
|
||||||
#pragma aux (pascal) strchr modify exact [ax bx cx dx]
|
#pragma aux (pascal) strchr modify exact [ax dx] nomemory
|
||||||
#pragma aux (pascal) fstrchr modify exact [ax bx cx dx]
|
#pragma aux (pascal) fstrchr modify exact [ax dx] nomemory
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* sysclk.c */
|
/* sysclk.c */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user