diff options
author | eban <eban@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-08-30 08:16:36 +0000 |
---|---|---|
committer | eban <eban@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-08-30 08:16:36 +0000 |
commit | 5b3ed19660ef4d9ea87265416a199e7dc7e940c1 (patch) | |
tree | e65318b873fad386f44634cf154c4e680e61fe6f | |
parent | db3e830f84913877677bb53c4434c7ca5007fdf2 (diff) | |
download | ruby-5b3ed19660ef4d9ea87265416a199e7dc7e940c1.tar.gz |
eban
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@915 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | ext/Win32API/Win32API.c | 31 |
2 files changed, 35 insertions, 0 deletions
@@ -1,3 +1,7 @@ +Wed Aug 30 17:09:14 2000 WATANABE Hirofumi <eban@os.rim.or.jp> + + * ext/Win32API/Win32API.c (Win32API_initialize): AlphaNT support. + Wed Aug 30 14:19:07 2000 Yukihiro Matsumoto <matz@ruby-lang.org> * parse.y (node_assign): should support NODE_CVASGN2 too. diff --git a/ext/Win32API/Win32API.c b/ext/Win32API/Win32API.c index 6558e38278..dcfdd7caab 100644 --- a/ext/Win32API/Win32API.c +++ b/ext/Win32API/Win32API.c @@ -8,6 +8,17 @@ #include <stdio.h> #endif +#if defined(_MSC_VER) +#if defined(_M_ALPHA) +#ifdef __cplusplus +extern "C" { long __asm(char *,...); }; +#else +long __asm(char *,...); +#endif +#pragma intrinsic(__asm) +#endif +#endif + #define _T_VOID 0 #define _T_NUMBER 1 #define _T_POINTER 2 @@ -190,10 +201,20 @@ Win32API_Call(argc, argv, obj) case _T_INTEGER: lParam = NUM2ULONG(rb_ary_entry(args, i)); #if defined(_MSC_VER) || defined(__LCC__) +#if defined(_M_IX86) _asm { mov eax, lParam push eax } +#elif defined(_M_ALPHA) + __asm( + "ldl r0, 0(%0);" + "stq r0, -(sp);" + , lParam + ); +#else +#error +#endif #elif defined __GNUC__ asm volatile ("pushl %0" :: "g" (lParam)); #else @@ -212,10 +233,20 @@ Win32API_Call(argc, argv, obj) pParam = RSTRING(str)->ptr; } #if defined(_MSC_VER) || defined(__LCC__) +#if defined(_M_IX86) _asm { mov eax, pParam push eax } +#elif defined(_M_ALPHA) + __asm( + "ldl r0, 0(%0);" + "stq r0, -(sp);" + , pParam + ); +#else +#error +#endif #elif defined __GNUC__ asm volatile ("pushl %0" :: "g" (pParam)); #else |