From 8b5b161083adb14cbc2443b72bfced96ede0fedc Mon Sep 17 00:00:00 2001 From: Przemyslaw Czerpak Date: Thu, 25 Mar 2010 23:12:28 +0000 Subject: [PATCH] 2010-03-26 00:12 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl) * harbour/src/vm/hvmall.c * harbour/include/hbstack.h * reactivated for tests inline ASM code which can be used to access HVM stack pointer in MT HVM builds. It can be enabled in 32bit desktop windows Harbour builds by setting HB_ASM_TLS build time macro. --- harbour/ChangeLog | 7 +++++++ harbour/include/hbstack.h | 13 ++++++++++--- harbour/src/vm/hvmall.c | 2 +- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index e6a0b9741a..7f3086d363 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,6 +17,13 @@ past entries belonging to author(s): Viktor Szakats. */ +2010-03-26 00:12 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl) + * harbour/src/vm/hvmall.c + * harbour/include/hbstack.h + * reactivated for tests inline ASM code which can be used to access + HVM stack pointer in MT HVM builds. It can be enabled in 32bit + desktop windows Harbour builds by setting HB_ASM_TLS build time macro. + 2010-03-25 23:19 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) ! bin/postinst.bat Fixed to not make unnecessary hbmk2 calls and warnings for diff --git a/harbour/include/hbstack.h b/harbour/include/hbstack.h index a372958ba3..5852894644 100644 --- a/harbour/include/hbstack.h +++ b/harbour/include/hbstack.h @@ -203,7 +203,11 @@ typedef struct extern HB_TLS_KEY hb_stack_key; # endif # if defined( __BORLANDC__ ) && defined( HB_STACK_PRELOAD ) && \ - !defined( HB_OS_WIN_64 ) && !defined( HB_OS_WIN_CE ) && 0 + !defined( HB_OS_WIN_64 ) && !defined( HB_OS_WIN_CE ) && \ + defined( HB_ASM_TLS ) +# if defined( HB_STACK_LOCAL_MACROS ) + static HB_TLS_KEY hb_stack_key; +# endif static __inline void * hb_stack_ptr_from_tls( void ) { /* mov ecx,hb_stack_key */ @@ -216,8 +220,11 @@ typedef struct return (void*) _EAX; } # define hb_stack_ptr_get() hb_stack_ptr_from_tls() -# elif defined( __MINGW32__ ) && \ - !defined( HB_OS_WIN_64 ) && !defined( HB_OS_WIN_CE ) && 0 +# elif defined( __MINGW32__ ) && defined( HB_ASM_TLS ) && \ + !defined( HB_OS_WIN_64 ) && !defined( HB_OS_WIN_CE ) +# if defined( HB_STACK_LOCAL_MACROS ) + static HB_TLS_KEY hb_stack_key; +# endif static __inline__ __attribute__ ((pure, malloc)) void * hb_stack_ptr_from_tls( void ) { void * p; diff --git a/harbour/src/vm/hvmall.c b/harbour/src/vm/hvmall.c index 16108664aa..2bf8d42146 100644 --- a/harbour/src/vm/hvmall.c +++ b/harbour/src/vm/hvmall.c @@ -92,7 +92,7 @@ # else static HB_TLS_ATTR PHB_STACK hb_stack_ptr = NULL; # endif -# else +# else if !defined( hb_stack_ptr_get ) static HB_TLS_KEY hb_stack_key; # endif # else