Changeset 12153 in vbox
- Timestamp:
- Sep 5, 2008 8:16:01 PM (16 years ago)
- svn:sync-xref-src-repo-rev:
- 36119
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/iprt/asm.h
r12092 r12153 2276 2276 : "=m" (*pu8), 2277 2277 "=q" (u8) /* =r - busted on g++ (GCC) 3.4.4 20050721 (Red Hat 3.4.4-2) */ 2278 : "1" (u8)); 2278 : "1" (u8), 2279 "m" (*pu8)); 2279 2280 # else 2280 2281 __asm … … 2344 2345 : "=m" (*pu16), 2345 2346 "=r" (u16) 2346 : "1" (u16)); 2347 : "1" (u16), 2348 "m" (*pu16)); 2347 2349 # else 2348 2350 __asm … … 2395 2397 : "=m" (*pu32), 2396 2398 "=r" (u32) 2397 : "1" (u32)); 2399 : "1" (u32), 2400 "m" (*pu32)); 2398 2401 2399 2402 # elif RT_INLINE_ASM_USES_INTRIN … … 2454 2457 : "=m" (*pu64), 2455 2458 "=r" (u64) 2456 : "1" (u64)); 2459 : "1" (u64), 2460 "m" (pu64)); 2457 2461 # else 2458 2462 __asm … … 2480 2484 "m" ( u32EBX ), 2481 2485 "c" ( (uint32_t)(u64 >> 32) ), 2482 "S" (pu64) ); 2486 "S" (pu64), 2487 "m" (*pu64)); 2483 2488 # else /* !PIC */ 2484 2489 __asm__ __volatile__("1:\n\t" … … 2489 2494 : "0" (*pu64), 2490 2495 "b" ( (uint32_t)u64 ), 2491 "c" ( (uint32_t)(u64 >> 32) )); 2496 "c" ( (uint32_t)(u64 >> 32) ), 2497 "m" (*pu64)); 2492 2498 # endif 2493 2499 # else … … 2684 2690 "=a" (u32Old) 2685 2691 : "r" (u32New), 2686 "2" (u32Old)); 2692 "2" (u32Old), 2693 "m" (*pu32)); 2687 2694 return (bool)u8Ret; 2688 2695 … … 2759 2766 "=a" (u64Old) 2760 2767 : "r" (u64New), 2761 "2" (u64Old)); 2768 "2" (u64Old), 2769 "m" (*pu64)); 2762 2770 return (bool)u8Ret; 2763 2771 # else … … 2791 2799 "m" ( u32EBX ), 2792 2800 "c" ( (uint32_t)(u64New >> 32) ), 2793 "S" (pu64) ); 2801 "S" (pu64), 2802 "m" (*pu64)); 2794 2803 # else /* !PIC */ 2795 2804 uint32_t u32Spill; … … 2802 2811 : "A" (u64Old), 2803 2812 "b" ( (uint32_t)u64New ), 2804 "c" ( (uint32_t)(u64New >> 32) )); 2813 "c" ( (uint32_t)(u64New >> 32) ), 2814 "m" (*pu64)); 2805 2815 # endif 2806 2816 return (bool)u32Ret; … … 2928 2938 "=a" (*pu32Old) 2929 2939 : "r" (u32New), 2930 "a" (u32Old)); 2940 "a" (u32Old), 2941 "m" (*pu32)); 2931 2942 return (bool)u8Ret; 2932 2943 … … 3011 3022 "=a" (*pu64Old) 3012 3023 : "r" (u64New), 3013 "a" (u64Old)); 3024 "a" (u64Old), 3025 "m" (*pu64)); 3014 3026 return (bool)u8Ret; 3015 3027 # else … … 3195 3207 : "=r" (u32), 3196 3208 "=m" (*pu32) 3197 : "0" (u32) 3209 : "0" (u32), 3210 "m" (*pu32) 3198 3211 : "memory"); 3199 3212 return u32; … … 3250 3263 : "=r" (u32), 3251 3264 "=m" (*pu32) 3252 : "0" (1) 3265 : "0" (1), 3266 "m" (*pu32) 3253 3267 : "memory"); 3254 3268 return u32+1; … … 3304 3318 : "=r" (u32), 3305 3319 "=m" (*pu32) 3306 : "0" (-1) 3320 : "0" (-1), 3321 "m" (*pu32) 3307 3322 : "memory"); 3308 3323 return u32-1; … … 3355 3370 __asm__ __volatile__("lock; orl %1, %0\n\t" 3356 3371 : "=m" (*pu32) 3357 : "ir" (u32)); 3372 : "ir" (u32), 3373 "m" (*pu32)); 3358 3374 # else 3359 3375 __asm … … 3402 3418 __asm__ __volatile__("lock; andl %1, %0\n\t" 3403 3419 : "=m" (*pu32) 3404 : "ir" (u32)); 3420 : "ir" (u32), 3421 "m" (*pu32)); 3405 3422 # else 3406 3423 __asm … … 3666 3683 "m" (u32EBX), 3667 3684 "c" (0), 3668 "S" (pu64)); 3685 "S" (pu64), 3686 "m" (*pu64)); 3669 3687 # else /* !PIC */ 3670 3688 __asm__ __volatile__("lock; cmpxchg8b %1\n\t" … … 3673 3691 : "0" (0), 3674 3692 "b" (0), 3675 "c" (0)); 3693 "c" (0), 3694 "m" (*pu64)); 3676 3695 # endif 3677 3696 # else … … 3738 3757 "m" (u32EBX), 3739 3758 "c" (0), 3740 "S" (pu64)); 3759 "S" (pu64), 3760 "m" (*pu64)); 3741 3761 # else /* !PIC */ 3742 3762 __asm__ __volatile__("cmpxchg8b %1\n\t" … … 3745 3765 : "0" (0), 3746 3766 "b" (0), 3747 "c" (0)); 3767 "c" (0), 3768 "m" (*pu64)); 3748 3769 # endif 3749 3770 # else … … 4900 4921 __asm__ __volatile__ ("btsl %1, %0" 4901 4922 : "=m" (*(volatile long *)pvBitmap) 4902 : "Ir" (iBit) 4923 : "Ir" (iBit), 4924 "m" (*(volatile long *)pvBitmap) 4903 4925 : "memory"); 4904 4926 # else … … 4936 4958 __asm__ __volatile__ ("lock; btsl %1, %0" 4937 4959 : "=m" (*(volatile long *)pvBitmap) 4938 : "Ir" (iBit) 4960 : "Ir" (iBit), 4961 "m" (*(volatile long *)pvBitmap) 4939 4962 : "memory"); 4940 4963 # else … … 4973 4996 __asm__ __volatile__ ("btrl %1, %0" 4974 4997 : "=m" (*(volatile long *)pvBitmap) 4975 : "Ir" (iBit) 4998 : "Ir" (iBit), 4999 "m" (*(volatile long *)pvBitmap) 4976 5000 : "memory"); 4977 5001 # else … … 5008 5032 __asm__ __volatile__ ("lock; btrl %1, %0" 5009 5033 : "=m" (*(volatile long *)pvBitmap) 5010 : "Ir" (iBit) 5034 : "Ir" (iBit), 5035 "m" (*(volatile long *)pvBitmap) 5011 5036 : "memory"); 5012 5037 # else … … 5044 5069 __asm__ __volatile__ ("btcl %1, %0" 5045 5070 : "=m" (*(volatile long *)pvBitmap) 5046 : "Ir" (iBit) 5071 : "Ir" (iBit), 5072 "m" (*(volatile long *)pvBitmap) 5047 5073 : "memory"); 5048 5074 # else … … 5078 5104 __asm__ __volatile__ ("lock; btcl %1, %0" 5079 5105 : "=m" (*(volatile long *)pvBitmap) 5080 : "Ir" (iBit) 5106 : "Ir" (iBit), 5107 "m" (*(volatile long *)pvBitmap) 5081 5108 : "memory"); 5082 5109 # else … … 5121 5148 : "=q" (rc.u32), 5122 5149 "=m" (*(volatile long *)pvBitmap) 5123 : "Ir" (iBit) 5150 : "Ir" (iBit), 5151 "m" (*(volatile long *)pvBitmap) 5124 5152 : "memory"); 5125 5153 # else … … 5166 5194 : "=q" (rc.u32), 5167 5195 "=m" (*(volatile long *)pvBitmap) 5168 : "Ir" (iBit) 5196 : "Ir" (iBit), 5197 "m" (*(volatile long *)pvBitmap) 5169 5198 : "memory"); 5170 5199 # else … … 5212 5241 : "=q" (rc.u32), 5213 5242 "=m" (*(volatile long *)pvBitmap) 5214 : "Ir" (iBit) 5243 : "Ir" (iBit), 5244 "m" (*(volatile long *)pvBitmap) 5215 5245 : "memory"); 5216 5246 # else … … 5259 5289 : "=q" (rc.u32), 5260 5290 "=m" (*(volatile long *)pvBitmap) 5261 : "Ir" (iBit) 5291 : "Ir" (iBit), 5292 "m" (*(volatile long *)pvBitmap) 5262 5293 : "memory"); 5263 5294 # else … … 5305 5336 : "=q" (rc.u32), 5306 5337 "=m" (*(volatile long *)pvBitmap) 5307 : "Ir" (iBit) 5338 : "Ir" (iBit), 5339 "m" (*(volatile long *)pvBitmap) 5308 5340 : "memory"); 5309 5341 # else … … 5348 5380 : "=q" (rc.u32), 5349 5381 "=m" (*(volatile long *)pvBitmap) 5350 : "Ir" (iBit) 5382 : "Ir" (iBit), 5383 "m" (*(volatile long *)pvBitmap) 5351 5384 : "memory"); 5352 5385 # else
Note:
See TracChangeset
for help on using the changeset viewer.