Search
lxdream.org :: lxdream/src/xlat/x86/ia32abi.h :: diff
lxdream 0.9.1
released Jun 29
Download Now
filename src/xlat/x86/ia32abi.h
changeset 1146:76c5d1064262
prev1125:9dd5dee45db9
next1292:799fdd4f704a
author nkeynes
date Tue Nov 29 17:11:40 2011 +1000 (12 years ago)
permissions -rw-r--r--
last change Add support for block linking when the block target is fixed. Only a small
(~3% improvement) so far.
file annotate diff log raw
1.1 --- a/src/xlat/x86/ia32abi.h Mon Sep 13 10:13:42 2010 +1000
1.2 +++ b/src/xlat/x86/ia32abi.h Tue Nov 29 17:11:40 2011 +1000
1.3 @@ -44,6 +44,8 @@
1.4 }
1.5
1.6 #ifdef HAVE_FASTCALL
1.7 +#define CALL1_PTR_MIN_SIZE 7
1.8 +
1.9 static inline void CALL1_ptr_r32( void *ptr, int arg1 )
1.10 {
1.11 if( arg1 != REG_ARG1 ) {
1.12 @@ -85,7 +87,10 @@
1.13 #define CALL3_r32disp_r32_r32_r32(preg,disp,arg1,arg2,arg3) CALL2_r32disp_r32_r32(preg,disp,arg1,arg2)
1.14
1.15 #else
1.16 -static inline void CALL1_ptr( void *ptr, int arg1 )
1.17 +
1.18 +#define CALL1_PTR_MIN_SIZE (3+1+7+3)
1.19 +
1.20 +static inline void CALL1_ptr_r32( void *ptr, int arg1 )
1.21 {
1.22 SUBL_imms_r32( 12, REG_ESP );
1.23 PUSH_r32(arg1);
1.24 @@ -125,7 +130,7 @@
1.25 PUSH_r32(arg2);
1.26 PUSH_r32(arg1);
1.27 MOVL_rspdisp_r32( 16, REG_EAX );
1.28 - MOVL_r32_rspdisp( R_EAX, 8 );
1.29 + MOVL_r32_rspdisp( REG_EAX, 8 );
1.30 CALL_r32disp(preg,disp);
1.31 ADDL_imms_r32( 16, REG_ESP );
1.32 }
.