Changeset 3636 in vbox
- Timestamp:
- Jul 16, 2007 1:00:42 PM (18 years ago)
- svn:sync-xref-src-repo-rev:
- 22907
- Location:
- trunk/include/iprt
- Files:
-
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/iprt/asm.h
r3630 r3636 76 76 # pragma intrinsic(_InterlockedCompareExchange) 77 77 # pragma intrinsic(_InterlockedCompareExchange64) 78 # ifdef __AMD64__78 # ifdef RT_ARCH_AMD64 79 79 # pragma intrinsic(__stosq) 80 80 # pragma intrinsic(__readcr8) … … 103 103 * inline assmebly in their AMD64 compiler. 104 104 */ 105 #if defined(_MSC_VER) && defined( __AMD64__)105 #if defined(_MSC_VER) && defined(RT_ARCH_AMD64) 106 106 # define RT_INLINE_ASM_EXTERNAL 1 107 107 #else … … 174 174 __asm 175 175 { 176 # ifdef __AMD64__176 # ifdef RT_ARCH_AMD64 177 177 mov rax, [pIdtr] 178 178 sidt [rax] … … 201 201 __asm 202 202 { 203 # ifdef __AMD64__203 # ifdef RT_ARCH_AMD64 204 204 mov rax, [pIdtr] 205 205 lidt [rax] … … 228 228 __asm 229 229 { 230 # ifdef __AMD64__230 # ifdef RT_ARCH_AMD64 231 231 mov rax, [pGdtr] 232 232 sgdt [rax] … … 419 419 RTCCUINTREG uFlags; 420 420 # if RT_INLINE_ASM_GNU_STYLE 421 # ifdef __AMD64__421 # ifdef RT_ARCH_AMD64 422 422 __asm__ __volatile__("pushfq\n\t" 423 423 "popq %0\n\t" … … 431 431 __asm 432 432 { 433 # ifdef __AMD64__433 # ifdef RT_ARCH_AMD64 434 434 pushfq 435 435 pop [uFlags] … … 455 455 { 456 456 # if RT_INLINE_ASM_GNU_STYLE 457 # ifdef __AMD64__457 # ifdef RT_ARCH_AMD64 458 458 __asm__ __volatile__("pushq %0\n\t" 459 459 "popfq\n\t" … … 467 467 __asm 468 468 { 469 # ifdef __AMD64__469 # ifdef RT_ARCH_AMD64 470 470 push [uFlags] 471 471 popfq … … 526 526 { 527 527 # if RT_INLINE_ASM_GNU_STYLE 528 # ifdef __AMD64__528 # ifdef RT_ARCH_AMD64 529 529 RTCCUINTREG uRAX, uRBX, uRCX, uRDX; 530 530 __asm__ ("cpuid\n\t" … … 614 614 RTCCUINTREG xDX; 615 615 # if RT_INLINE_ASM_GNU_STYLE 616 # ifdef __AMD64__616 # ifdef RT_ARCH_AMD64 617 617 RTCCUINTREG uSpill; 618 618 __asm__ ("cpuid" … … 621 621 : "0" (uOperator) 622 622 : "rbx", "rcx"); 623 # elif (defined(PIC) || defined( __DARWIN__)) && defined(__i386__) /* darwin: PIC by default. */623 # elif (defined(PIC) || defined(RT_OS_DARWIN)) && defined(__i386__) /* darwin: PIC by default. */ 624 624 __asm__ ("push %%ebx\n\t" 625 625 "cpuid\n\t" … … 670 670 RTCCUINTREG xCX; 671 671 # if RT_INLINE_ASM_GNU_STYLE 672 # ifdef __AMD64__672 # ifdef RT_ARCH_AMD64 673 673 RTCCUINTREG uSpill; 674 674 __asm__ ("cpuid" … … 677 677 : "0" (uOperator) 678 678 : "rbx", "rdx"); 679 # elif (defined(PIC) || defined( __DARWIN__)) && defined(__i386__) /* darwin: 4.0.1 compiler option / bug? */679 # elif (defined(PIC) || defined(RT_OS_DARWIN)) && defined(__i386__) /* darwin: 4.0.1 compiler option / bug? */ 680 680 __asm__ ("push %%ebx\n\t" 681 681 "cpuid\n\t" … … 721 721 DECLINLINE(bool) ASMHasCpuId(void) 722 722 { 723 #ifdef __AMD64__723 #ifdef RT_ARCH_AMD64 724 724 return true; /* ASSUME that all amd64 compatible CPUs have cpuid. */ 725 #else /* ! __AMD64__*/725 #else /* !RT_ARCH_AMD64 */ 726 726 bool fRet = false; 727 727 # if RT_INLINE_ASM_GNU_STYLE … … 759 759 # endif 760 760 return fRet; 761 #endif /* ! __AMD64__*/761 #endif /* !RT_ARCH_AMD64 */ 762 762 } 763 763 … … 775 775 RTCCUINTREG xBX; 776 776 # if RT_INLINE_ASM_GNU_STYLE 777 # ifdef __AMD64__777 # ifdef RT_ARCH_AMD64 778 778 RTCCUINTREG uSpill; 779 779 __asm__ ("cpuid" … … 782 782 : "0" (1) 783 783 : "rcx", "rdx"); 784 # elif (defined(PIC) || defined( __DARWIN__)) && defined(__i386__)784 # elif (defined(PIC) || defined(RT_OS_DARWIN)) && defined(__i386__) 785 785 RTCCUINTREG uSpill; 786 786 __asm__ ("mov %%ebx,%1\n\t" … … 833 833 834 834 # elif RT_INLINE_ASM_GNU_STYLE 835 # ifdef __AMD64__835 # ifdef RT_ARCH_AMD64 836 836 __asm__ ("movq %%cr0, %0\t\n" : "=r" (uCR0)); 837 837 # else … … 841 841 __asm 842 842 { 843 # ifdef __AMD64__843 # ifdef RT_ARCH_AMD64 844 844 mov rax, cr0 845 845 mov [uCR0], rax … … 868 868 869 869 # elif RT_INLINE_ASM_GNU_STYLE 870 # ifdef __AMD64__870 # ifdef RT_ARCH_AMD64 871 871 __asm__ __volatile__("movq %0, %%cr0\n\t" :: "r" (uCR0)); 872 872 # else … … 876 876 __asm 877 877 { 878 # ifdef __AMD64__878 # ifdef RT_ARCH_AMD64 879 879 mov rax, [uCR0] 880 880 mov cr0, rax … … 903 903 904 904 # elif RT_INLINE_ASM_GNU_STYLE 905 # ifdef __AMD64__905 # ifdef RT_ARCH_AMD64 906 906 __asm__ ("movq %%cr2, %0\t\n" : "=r" (uCR2)); 907 907 # else … … 911 911 __asm 912 912 { 913 # ifdef __AMD64__913 # ifdef RT_ARCH_AMD64 914 914 mov rax, cr2 915 915 mov [uCR2], rax … … 935 935 { 936 936 # if RT_INLINE_ASM_GNU_STYLE 937 # ifdef __AMD64__937 # ifdef RT_ARCH_AMD64 938 938 __asm__ __volatile__("movq %0, %%cr2\n\t" :: "r" (uCR2)); 939 939 # else … … 943 943 __asm 944 944 { 945 # ifdef __AMD64__945 # ifdef RT_ARCH_AMD64 946 946 mov rax, [uCR2] 947 947 mov cr2, rax … … 970 970 971 971 # elif RT_INLINE_ASM_GNU_STYLE 972 # ifdef __AMD64__972 # ifdef RT_ARCH_AMD64 973 973 __asm__ ("movq %%cr3, %0\t\n" : "=r" (uCR3)); 974 974 # else … … 978 978 __asm 979 979 { 980 # ifdef __AMD64__980 # ifdef RT_ARCH_AMD64 981 981 mov rax, cr3 982 982 mov [uCR3], rax … … 1006 1006 1007 1007 # elif RT_INLINE_ASM_GNU_STYLE 1008 # ifdef __AMD64__1008 # ifdef RT_ARCH_AMD64 1009 1009 __asm__ __volatile__ ("movq %0, %%cr3\n\t" : : "r" (uCR3)); 1010 1010 # else … … 1014 1014 __asm 1015 1015 { 1016 # ifdef __AMD64__1016 # ifdef RT_ARCH_AMD64 1017 1017 mov rax, [uCR3] 1018 1018 mov cr3, rax … … 1040 1040 # elif RT_INLINE_ASM_GNU_STYLE 1041 1041 RTCCUINTREG u; 1042 # ifdef __AMD64__1042 # ifdef RT_ARCH_AMD64 1043 1043 __asm__ __volatile__ ("movq %%cr3, %0\n\t" 1044 1044 "movq %0, %%cr3\n\t" … … 1052 1052 __asm 1053 1053 { 1054 # ifdef __AMD64__1054 # ifdef RT_ARCH_AMD64 1055 1055 mov rax, cr3 1056 1056 mov cr3, rax … … 1079 1079 1080 1080 # elif RT_INLINE_ASM_GNU_STYLE 1081 # ifdef __AMD64__1081 # ifdef RT_ARCH_AMD64 1082 1082 __asm__ ("movq %%cr4, %0\t\n" : "=r" (uCR4)); 1083 1083 # else … … 1087 1087 __asm 1088 1088 { 1089 # ifdef __AMD64__1089 # ifdef RT_ARCH_AMD64 1090 1090 mov rax, cr4 1091 1091 mov [uCR4], rax … … 1120 1120 1121 1121 # elif RT_INLINE_ASM_GNU_STYLE 1122 # ifdef __AMD64__1122 # ifdef RT_ARCH_AMD64 1123 1123 __asm__ __volatile__ ("movq %0, %%cr4\n\t" : : "r" (uCR4)); 1124 1124 # else … … 1128 1128 __asm 1129 1129 { 1130 # ifdef __AMD64__1130 # ifdef RT_ARCH_AMD64 1131 1131 mov rax, [uCR4] 1132 1132 mov cr4, rax … … 1153 1153 DECLINLINE(RTCCUINTREG) ASMGetCR8(void) 1154 1154 { 1155 # ifdef __AMD64__1155 # ifdef RT_ARCH_AMD64 1156 1156 RTCCUINTREG uCR8; 1157 1157 # if RT_INLINE_ASM_USES_INTRIN … … 1168 1168 # endif 1169 1169 return uCR8; 1170 # else /* ! __AMD64__*/1170 # else /* !RT_ARCH_AMD64 */ 1171 1171 return 0; 1172 # endif /* ! __AMD64__*/1172 # endif /* !RT_ARCH_AMD64 */ 1173 1173 } 1174 1174 #endif … … 1223 1223 RTCCUINTREG xFlags; 1224 1224 # if RT_INLINE_ASM_GNU_STYLE 1225 # ifdef __AMD64__1225 # ifdef RT_ARCH_AMD64 1226 1226 __asm__ __volatile__("pushfq\n\t" 1227 1227 "cli\n\t" … … 1234 1234 : "=m" (xFlags)); 1235 1235 # endif 1236 # elif RT_INLINE_ASM_USES_INTRIN && !defined( __X86__)1236 # elif RT_INLINE_ASM_USES_INTRIN && !defined(RT_ARCH_X86) 1237 1237 xFlags = ASMGetFlags(); 1238 1238 _disable(); … … 1404 1404 RTCCUINTREG uDR7; 1405 1405 # if RT_INLINE_ASM_GNU_STYLE 1406 # ifdef __AMD64__1406 # ifdef RT_ARCH_AMD64 1407 1407 __asm__ ("movq %%dr7, %0\n\t" : "=r" (uDR7)); 1408 1408 # else … … 1412 1412 __asm 1413 1413 { 1414 # ifdef __AMD64__1414 # ifdef RT_ARCH_AMD64 1415 1415 mov rax, dr7 1416 1416 mov [uDR7], rax … … 1438 1438 RTCCUINTREG uDR6; 1439 1439 # if RT_INLINE_ASM_GNU_STYLE 1440 # ifdef __AMD64__1440 # ifdef RT_ARCH_AMD64 1441 1441 __asm__ ("movq %%dr6, %0\n\t" : "=r" (uDR6)); 1442 1442 # else … … 1446 1446 __asm 1447 1447 { 1448 # ifdef __AMD64__1448 # ifdef RT_ARCH_AMD64 1449 1449 mov rax, dr6 1450 1450 mov [uDR6], rax … … 1473 1473 # if RT_INLINE_ASM_GNU_STYLE 1474 1474 RTCCUINTREG uNewValue = 0xffff0ff0; /* 31-16 and 4-11 are 1's, 12 and 63-31 are zero. */ 1475 # ifdef __AMD64__1475 # ifdef RT_ARCH_AMD64 1476 1476 __asm__ ("movq %%dr6, %0\n\t" 1477 1477 "movq %1, %%dr6\n\t" … … 1487 1487 __asm 1488 1488 { 1489 # ifdef __AMD64__1489 # ifdef RT_ARCH_AMD64 1490 1490 mov rax, dr6 1491 1491 mov [uDR6], rax … … 1742 1742 __asm 1743 1743 { 1744 # ifdef __AMD64__1744 # ifdef RT_ARCH_AMD64 1745 1745 mov rdx, [pu8] 1746 1746 mov al, [u8] … … 1810 1810 __asm 1811 1811 { 1812 # ifdef __AMD64__1812 # ifdef RT_ARCH_AMD64 1813 1813 mov rdx, [pu16] 1814 1814 mov ax, [u16] … … 1865 1865 __asm 1866 1866 { 1867 # ifdef __AMD64__1867 # ifdef RT_ARCH_AMD64 1868 1868 mov rdx, [pu32] 1869 1869 mov eax, u32 … … 1908 1908 DECLINLINE(uint64_t) ASMAtomicXchgU64(volatile uint64_t *pu64, uint64_t u64) 1909 1909 { 1910 # if defined( __AMD64__)1910 # if defined(RT_ARCH_AMD64) 1911 1911 # if RT_INLINE_ASM_USES_INTRIN 1912 1912 u64 = _InterlockedExchange64((__int64 *)pu64, u64); … … 1926 1926 } 1927 1927 # endif 1928 # else /* ! __AMD64__*/1928 # else /* !RT_ARCH_AMD64 */ 1929 1929 # if RT_INLINE_ASM_GNU_STYLE 1930 # if defined(PIC) || defined( __DARWIN__) /* darwin: 4.0.1 compiler option / bug? */1930 # if defined(PIC) || defined(RT_OS_DARWIN) /* darwin: 4.0.1 compiler option / bug? */ 1931 1931 uint32_t u32 = (uint32_t)u64; 1932 1932 __asm__ __volatile__(/*"xchgl %%esi, %5\n\t"*/ … … 1968 1968 } 1969 1969 # endif 1970 # endif /* ! __AMD64__*/1970 # endif /* !RT_ARCH_AMD64 */ 1971 1971 return u64; 1972 1972 } … … 1987 1987 1988 1988 1989 #ifdef __AMD64__1989 #ifdef RT_ARCH_AMD64 1990 1990 /** 1991 1991 * Atomically Exchange an unsigned 128-bit value. … … 2045 2045 } 2046 2046 # endif 2047 #endif /* __AMD64__*/2047 #endif /* RT_ARCH_AMD64 */ 2048 2048 2049 2049 … … 2062 2062 { 2063 2063 uint64_t u64; 2064 # ifdef __AMD64__2064 # ifdef RT_ARCH_AMD64 2065 2065 # if RT_INLINE_ASM_GNU_STYLE 2066 2066 __asm__ __volatile__("movq %1, %0\n\t" … … 2075 2075 } 2076 2076 # endif 2077 # else /* ! __AMD64__*/2077 # else /* !RT_ARCH_AMD64 */ 2078 2078 # if RT_INLINE_ASM_GNU_STYLE 2079 # if defined(PIC) || defined( __DARWIN__) /* darwin: 4.0.1 compiler option / bug? */2079 # if defined(PIC) || defined(RT_OS_DARWIN) /* darwin: 4.0.1 compiler option / bug? */ 2080 2080 uint32_t u32EBX = 0; 2081 2081 __asm__ __volatile__("xchgl %%ebx, %3\n\t" … … 2109 2109 } 2110 2110 # endif 2111 # endif /* ! __AMD64__*/2111 # endif /* !RT_ARCH_AMD64 */ 2112 2112 return u64; 2113 2113 } … … 2200 2200 __asm 2201 2201 { 2202 # ifdef __AMD64__2202 # ifdef RT_ARCH_AMD64 2203 2203 mov rdx, [pu32] 2204 2204 # else … … 2207 2207 mov eax, [u32Old] 2208 2208 mov ecx, [u32New] 2209 # ifdef __AMD64__2209 # ifdef RT_ARCH_AMD64 2210 2210 lock cmpxchg [rdx], ecx 2211 2211 # else … … 2256 2256 return _InterlockedCompareExchange64((__int64 *)pu64, u64New, u64Old) == u64Old; 2257 2257 2258 # elif defined( __AMD64__)2258 # elif defined(RT_ARCH_AMD64) 2259 2259 # if RT_INLINE_ASM_GNU_STYLE 2260 2260 uint64_t u64Ret; … … 2280 2280 return fRet; 2281 2281 # endif 2282 # else /* ! __AMD64__*/2282 # else /* !RT_ARCH_AMD64 */ 2283 2283 uint32_t u32Ret; 2284 2284 # if RT_INLINE_ASM_GNU_STYLE 2285 # if defined(PIC) || defined( __DARWIN__) /* darwin: 4.0.1 compiler option / bug? */2285 # if defined(PIC) || defined(RT_OS_DARWIN) /* darwin: 4.0.1 compiler option / bug? */ 2286 2286 uint32_t u32 = (uint32_t)u64New; 2287 2287 uint32_t u32Spill; … … 2326 2326 return !!u32Ret; 2327 2327 # endif 2328 # endif /* ! __AMD64__*/2328 # endif /* !RT_ARCH_AMD64 */ 2329 2329 } 2330 2330 #endif … … 2419 2419 { 2420 2420 mov eax, 1 2421 # ifdef __AMD64__2421 # ifdef RT_ARCH_AMD64 2422 2422 mov rdx, [pu32] 2423 2423 lock xadd [rdx], eax … … 2473 2473 { 2474 2474 mov eax, -1 2475 # ifdef __AMD64__2475 # ifdef RT_ARCH_AMD64 2476 2476 mov rdx, [pu32] 2477 2477 lock xadd [rdx], eax … … 2523 2523 { 2524 2524 mov eax, [u32] 2525 # ifdef __AMD64__2525 # ifdef RT_ARCH_AMD64 2526 2526 mov rdx, [pu32] 2527 2527 lock or [rdx], eax … … 2570 2570 { 2571 2571 mov eax, [u32] 2572 # ifdef __AMD64__2572 # ifdef RT_ARCH_AMD64 2573 2573 mov rdx, [pu32] 2574 2574 lock and [rdx], eax … … 2614 2614 __asm 2615 2615 { 2616 # ifdef __AMD64__2616 # ifdef RT_ARCH_AMD64 2617 2617 mov rax, [pv] 2618 2618 invlpg [rax] … … 2644 2644 { 2645 2645 # if RT_INLINE_ASM_USES_INTRIN 2646 # ifdef __AMD64__2646 # ifdef RT_ARCH_AMD64 2647 2647 __stosq((unsigned __int64 *)pv, 0, /*PAGE_SIZE*/0x1000 / 8); 2648 2648 # else … … 2652 2652 # elif RT_INLINE_ASM_GNU_STYLE 2653 2653 RTUINTREG uDummy; 2654 # ifdef __AMD64__2654 # ifdef RT_ARCH_AMD64 2655 2655 __asm__ __volatile__ ("rep stosq" 2656 2656 : "=D" (pv), … … 2672 2672 __asm 2673 2673 { 2674 # ifdef __AMD64__2674 # ifdef RT_ARCH_AMD64 2675 2675 xor rax, rax 2676 2676 mov ecx, 0200h … … 2715 2715 { 2716 2716 xor eax, eax 2717 # ifdef __AMD64__2717 # ifdef RT_ARCH_AMD64 2718 2718 mov rcx, [cb] 2719 2719 shr rcx, 2 … … 2757 2757 __asm 2758 2758 { 2759 # ifdef __AMD64__2759 # ifdef RT_ARCH_AMD64 2760 2760 mov rcx, [cb] 2761 2761 shr rcx, 2 … … 2780 2780 * @returns u32F1 * u32F2. 2781 2781 */ 2782 #if RT_INLINE_ASM_EXTERNAL && !defined( __AMD64__)2782 #if RT_INLINE_ASM_EXTERNAL && !defined(RT_ARCH_AMD64) 2783 2783 DECLASM(uint64_t) ASMMult2xU32RetU64(uint32_t u32F1, uint32_t u32F2); 2784 2784 #else 2785 2785 DECLINLINE(uint64_t) ASMMult2xU32RetU64(uint32_t u32F1, uint32_t u32F2) 2786 2786 { 2787 # ifdef __AMD64__2787 # ifdef RT_ARCH_AMD64 2788 2788 return (uint64_t)u32F1 * u32F2; 2789 # else /* ! __AMD64__*/2789 # else /* !RT_ARCH_AMD64 */ 2790 2790 uint64_t u64; 2791 2791 # if RT_INLINE_ASM_GNU_STYLE … … 2804 2804 # endif 2805 2805 return u64; 2806 # endif /* ! __AMD64__*/2806 # endif /* !RT_ARCH_AMD64 */ 2807 2807 } 2808 2808 #endif … … 2814 2814 * @returns u32F1 * u32F2. 2815 2815 */ 2816 #if RT_INLINE_ASM_EXTERNAL && !defined( __AMD64__)2816 #if RT_INLINE_ASM_EXTERNAL && !defined(RT_ARCH_AMD64) 2817 2817 DECLASM(int64_t) ASMMult2xS32RetS64(int32_t i32F1, int32_t i32F2); 2818 2818 #else 2819 2819 DECLINLINE(int64_t) ASMMult2xS32RetS64(int32_t i32F1, int32_t i32F2) 2820 2820 { 2821 # ifdef __AMD64__2821 # ifdef RT_ARCH_AMD64 2822 2822 return (int64_t)i32F1 * i32F2; 2823 # else /* ! __AMD64__*/2823 # else /* !RT_ARCH_AMD64 */ 2824 2824 int64_t i64; 2825 2825 # if RT_INLINE_ASM_GNU_STYLE … … 2838 2838 # endif 2839 2839 return i64; 2840 # endif /* ! __AMD64__*/2840 # endif /* !RT_ARCH_AMD64 */ 2841 2841 } 2842 2842 #endif … … 2848 2848 * @returns u64 / u32. 2849 2849 */ 2850 #if RT_INLINE_ASM_EXTERNAL && !defined( __AMD64__)2850 #if RT_INLINE_ASM_EXTERNAL && !defined(RT_ARCH_AMD64) 2851 2851 DECLASM(uint32_t) ASMDivU64ByU32RetU32(uint64_t u64, uint32_t u32); 2852 2852 #else 2853 2853 DECLINLINE(uint32_t) ASMDivU64ByU32RetU32(uint64_t u64, uint32_t u32) 2854 2854 { 2855 # ifdef __AMD64__2855 # ifdef RT_ARCH_AMD64 2856 2856 return (uint32_t)(u64 / u32); 2857 # else /* ! __AMD64__*/2857 # else /* !RT_ARCH_AMD64 */ 2858 2858 # if RT_INLINE_ASM_GNU_STYLE 2859 2859 RTUINTREG uDummy; … … 2872 2872 # endif 2873 2873 return u32; 2874 # endif /* ! __AMD64__*/2874 # endif /* !RT_ARCH_AMD64 */ 2875 2875 } 2876 2876 #endif … … 2882 2882 * @returns u64 / u32. 2883 2883 */ 2884 #if RT_INLINE_ASM_EXTERNAL && !defined( __AMD64__)2884 #if RT_INLINE_ASM_EXTERNAL && !defined(RT_ARCH_AMD64) 2885 2885 DECLASM(int32_t) ASMDivS64ByS32RetS32(int64_t i64, int32_t i32); 2886 2886 #else 2887 2887 DECLINLINE(int32_t) ASMDivS64ByS32RetS32(int64_t i64, int32_t i32) 2888 2888 { 2889 # ifdef __AMD64__2889 # ifdef RT_ARCH_AMD64 2890 2890 return (int32_t)(i64 / i32); 2891 # else /* ! __AMD64__*/2891 # else /* !RT_ARCH_AMD64 */ 2892 2892 # if RT_INLINE_ASM_GNU_STYLE 2893 2893 RTUINTREG iDummy; … … 2906 2906 # endif 2907 2907 return i32; 2908 # endif /* ! __AMD64__*/2908 # endif /* !RT_ARCH_AMD64 */ 2909 2909 } 2910 2910 #endif … … 2928 2928 { 2929 2929 # if RT_INLINE_ASM_GNU_STYLE 2930 # ifdef __AMD64__2930 # ifdef RT_ARCH_AMD64 2931 2931 uint64_t u64Result, u64Spill; 2932 2932 __asm__ __volatile__("mulq %2\n\t" … … 3007 3007 __asm 3008 3008 { 3009 # ifdef __AMD64__3009 # ifdef RT_ARCH_AMD64 3010 3010 mov rax, [pvByte] 3011 3011 mov al, [rax] … … 3100 3100 __asm 3101 3101 { 3102 # ifdef __AMD64__3102 # ifdef RT_ARCH_AMD64 3103 3103 mov rax, [pvBitmap] 3104 3104 mov edx, [iBit] … … 3136 3136 __asm 3137 3137 { 3138 # ifdef __AMD64__3138 # ifdef RT_ARCH_AMD64 3139 3139 mov rax, [pvBitmap] 3140 3140 mov edx, [iBit] … … 3173 3173 __asm 3174 3174 { 3175 # ifdef __AMD64__3175 # ifdef RT_ARCH_AMD64 3176 3176 mov rax, [pvBitmap] 3177 3177 mov edx, [iBit] … … 3208 3208 __asm 3209 3209 { 3210 # ifdef __AMD64__3210 # ifdef RT_ARCH_AMD64 3211 3211 mov rax, [pvBitmap] 3212 3212 mov edx, [iBit] … … 3244 3244 __asm 3245 3245 { 3246 # ifdef __AMD64__3246 # ifdef RT_ARCH_AMD64 3247 3247 mov rax, [pvBitmap] 3248 3248 mov edx, [iBit] … … 3278 3278 __asm 3279 3279 { 3280 # ifdef __AMD64__3280 # ifdef RT_ARCH_AMD64 3281 3281 mov rax, [pvBitmap] 3282 3282 mov edx, [iBit] … … 3322 3322 { 3323 3323 mov edx, [iBit] 3324 # ifdef __AMD64__3324 # ifdef RT_ARCH_AMD64 3325 3325 mov rax, [pvBitmap] 3326 3326 bts [rax], edx … … 3367 3367 { 3368 3368 mov edx, [iBit] 3369 # ifdef __AMD64__3369 # ifdef RT_ARCH_AMD64 3370 3370 mov rax, [pvBitmap] 3371 3371 lock bts [rax], edx … … 3413 3413 { 3414 3414 mov edx, [iBit] 3415 # ifdef __AMD64__3415 # ifdef RT_ARCH_AMD64 3416 3416 mov rax, [pvBitmap] 3417 3417 btr [rax], edx … … 3460 3460 { 3461 3461 mov edx, [iBit] 3462 # ifdef __AMD64__3462 # ifdef RT_ARCH_AMD64 3463 3463 mov rax, [pvBitmap] 3464 3464 lock btr [rax], edx … … 3506 3506 { 3507 3507 mov edx, [iBit] 3508 # ifdef __AMD64__3508 # ifdef RT_ARCH_AMD64 3509 3509 mov rax, [pvBitmap] 3510 3510 btc [rax], edx … … 3549 3549 { 3550 3550 mov edx, [iBit] 3551 # ifdef __AMD64__3551 # ifdef RT_ARCH_AMD64 3552 3552 mov rax, [pvBitmap] 3553 3553 lock btc [rax], edx … … 3595 3595 { 3596 3596 mov edx, [iBit] 3597 # ifdef __AMD64__3597 # ifdef RT_ARCH_AMD64 3598 3598 mov rax, [pvBitmap] 3599 3599 bt [rax], edx … … 3674 3674 __asm__ __volatile__("repe; scasl\n\t" 3675 3675 "je 1f\n\t" 3676 # ifdef __AMD64__3676 # ifdef RT_ARCH_AMD64 3677 3677 "lea -4(%%rdi), %%rdi\n\t" 3678 3678 "xorl (%%rdi), %%eax\n\t" … … 3700 3700 __asm 3701 3701 { 3702 # ifdef __AMD64__3702 # ifdef RT_ARCH_AMD64 3703 3703 mov rdi, [pvBitmap] 3704 3704 mov rbx, rdi … … 3714 3714 je done 3715 3715 3716 # ifdef __AMD64__3716 # ifdef RT_ARCH_AMD64 3717 3717 lea rdi, [rdi - 4] 3718 3718 xor eax, [rdi] … … 3827 3827 __asm__ __volatile__("repe; scasl\n\t" 3828 3828 "je 1f\n\t" 3829 # ifdef __AMD64__3829 # ifdef RT_ARCH_AMD64 3830 3830 "lea -4(%%rdi), %%rdi\n\t" 3831 3831 "movl (%%rdi), %%eax\n\t" … … 3853 3853 __asm 3854 3854 { 3855 # ifdef __AMD64__3855 # ifdef RT_ARCH_AMD64 3856 3856 mov rdi, [pvBitmap] 3857 3857 mov rbx, rdi … … 3866 3866 repe scasd 3867 3867 je done 3868 # ifdef __AMD64__3868 # ifdef RT_ARCH_AMD64 3869 3869 lea rdi, [rdi - 4] 3870 3870 mov eax, [rdi] -
trunk/include/iprt/asmdefs.mac
r2988 r3636 49 49 ; C/C++ world. 50 50 %ifdef __X86__ 51 %ifdef __DARWIN__51 %ifdef RT_OS_DARWIN 52 52 %define NAME(name) _ %+ NAME_OVERLOAD(name) 53 53 %endif 54 %ifdef __OS2__54 %ifdef RT_OS_OS2 55 55 %define NAME(name) _ %+ NAME_OVERLOAD(name) 56 56 %endif 57 %ifdef __WIN__57 %ifdef RT_OS_WINDOWS 58 58 %define NAME(name) _ %+ NAME_OVERLOAD(name) 59 59 %endif … … 492 492 ; @todo figure out what 64-bit Windows does (I don't recall right now). 493 493 %ifdef __X86__ 494 %ifdef __DARWIN__494 %ifdef RT_OS_DARWIN 495 495 %define RTLRD_CB 16 496 496 %else -
trunk/include/iprt/cdefs.h
r3630 r3636 64 64 #define __AMD64__ 65 65 #define __X86__ 66 #define RT_ARCH_AMD64 67 #define RT_ARCH_X86 66 68 #define IN_RING0 67 69 #define IN_RING3 … … 80 82 #endif /* __DOXYGEN__ */ 81 83 84 /** @def RT_ARCH_X86 85 * Indicates that we're compiling for the X86 architecture. 86 */ 87 88 /** @def RT_ARCH_AMD64 89 * Indicates that we're compiling for the AMD64 architecture. 90 */ 91 #if !defined(RT_ARCH_X86) && !defined(RT_ARCH_AMD64) 92 # if defined(__amd64__) || defined(__x86_64__) || defined(_M_X64) || defined(__AMD64__) 93 # define RT_ARCH_AMD64 94 # elif defined(__i386__) || defined(_M_IX86) || defined(__X86__) 95 # define RT_ARCH_X86 96 # else /* PORTME: append test for new archs. */ 97 # error "Check what predefined stuff your compiler uses to indicate architecture." 98 # endif 99 #elif defined(RT_ARCH_X86) && defined(RT_ARCH_AMD64) /* PORTME: append new archs. */ 100 # error "Both RT_ARCH_X86 and RT_ARCH_AMD64 cannot be defined at the same time!" 101 #endif 102 103 82 104 /** @def __X86__ 83 105 * Indicates that we're compiling for the X86 architecture. 106 * @deprecated 84 107 */ 85 108 86 109 /** @def __AMD64__ 87 110 * Indicates that we're compiling for the AMD64 architecture. 111 * @deprecated 88 112 */ 89 113 #if !defined(__X86__) && !defined(__AMD64__) 90 # if defined( __amd64__) || defined(__x86_64__) || defined(_M_X64)114 # if defined(RT_ARCH_AMD64) 91 115 # define __AMD64__ 92 # elif defined( __i386__) || defined(_M_IX86)116 # elif defined(RT_ARCH_X86) 93 117 # define __X86__ 94 118 # else … … 97 121 #elif defined(__X86__) && defined(__AMD64__) 98 122 # error "Both __X86__ and __AMD64__ cannot be defined at the same time!" 123 #elif defined(__X86__) && !defined(RT_ARCH_X86) 124 # error "Both __X86__ without RT_ARCH_X86!" 125 #elif defined(__AMD64__) && !defined(RT_ARCH_AMD64) 126 # error "Both __AMD64__ without RT_ARCH_AMD64!" 99 127 #endif 100 128 … … 127 155 */ 128 156 #ifndef ARCH_BITS 129 # if defined( __AMD64__)157 # if defined(RT_ARCH_AMD64) 130 158 # define ARCH_BITS 64 131 159 # else … … 388 416 #ifdef _MSC_VER 389 417 # define RTCALL __cdecl 390 #elif defined(__GNUC__) && defined(IN_RING0) && !(defined( __OS2__) || defined(__AMD64__)) /* the latter is kernel/gcc */418 #elif defined(__GNUC__) && defined(IN_RING0) && !(defined(RT_OS_OS2) || defined(RT_ARCH_AMD64)) /* the latter is kernel/gcc */ 391 419 # define RTCALL __attribute__((cdecl,regparm(0))) 392 420 #else … … 398 426 * @param type The return type of the function declaration. 399 427 */ 400 #if defined(_MSC_VER) || defined( __OS2__)428 #if defined(_MSC_VER) || defined(RT_OS_OS2) 401 429 # define DECLEXPORT(type) __declspec(dllexport) type 402 430 #else … … 412 440 * @param type The return type of the function declaration. 413 441 */ 414 #if defined(_MSC_VER) || (defined( __OS2__) && !defined(__IBMC__) && !defined(__IBMCPP__))442 #if defined(_MSC_VER) || (defined(RT_OS_OS2) && !defined(__IBMC__) && !defined(__IBMCPP__)) 415 443 # define DECLIMPORT(type) __declspec(dllimport) type 416 444 #else … … 800 828 #define RT_ELEMENTS(aArray) ( sizeof(aArray) / sizeof((aArray)[0]) ) 801 829 802 #ifdef __OS2__830 #ifdef RT_OS_OS2 803 831 /* Undefine RT_MAX since there is an unfortunate clash with the max 804 832 resource type define in os2.h. */ … … 1005 1033 * compiling kernel code. 1006 1034 */ 1007 #if defined( __DARWIN__) \1035 #if defined(RT_OS_DARWIN) \ 1008 1036 && !defined(KERNEL) \ 1009 1037 && !defined(RT_NO_BSD_PARAM_H_UNDEFING) \ … … 1129 1157 * @param ptr 1130 1158 */ 1131 #if defined( __AMD64__)1159 #if defined(RT_ARCH_AMD64) 1132 1160 # ifdef IN_RING3 1133 # if defined( __DARWIN__) /* first 4GB is reserved for legacy kernel. */1161 # if defined(RT_OS_DARWIN) /* first 4GB is reserved for legacy kernel. */ 1134 1162 # define VALID_PTR(ptr) ( (uintptr_t)(ptr) >= _4G \ 1135 1163 && !((uintptr_t)(ptr) & 0xffff800000000000ULL) ) … … 1143 1171 || ((uintptr_t)(ptr) & 0xffff800000000000ULL) == 0) ) 1144 1172 # endif /* !IN_RING3 */ 1145 #elif defined( __X86__)1173 #elif defined(RT_ARCH_X86) 1146 1174 # define VALID_PTR(ptr) ( (uintptr_t)(ptr) + 0x1000U >= 0x2000U ) 1147 1175 #else -
trunk/include/iprt/err.h
r3630 r3636 206 206 #define RTErrGetFull(rc) (RTErrGet(rc)->pszMsgFull) 207 207 208 #ifdef __WIN__208 #ifdef RT_OS_WINDOWS 209 209 /** 210 210 * Windows error code message. … … 231 231 */ 232 232 RTDECL(PCRTWINERRMSG) RTErrWinGet(long rc); 233 #endif /* __WIN__*/233 #endif /* RT_OS_WINDOWS */ 234 234 235 235 #endif /* IN_RING3 */ -
trunk/include/iprt/file.h
r3630 r3636 39 39 /** Platform specific text line break. 40 40 * @deprecated Use text I/O streams and '\\n'. See iprt/stream.h. */ 41 #if defined( __OS2__) || defined(__WIN__)41 #if defined(RT_OS_OS2) || defined(RT_OS_WINDOWS) 42 42 # define RTFILE_LINEFEED "\r\n" 43 43 #else -
trunk/include/iprt/log.h
r3630 r3636 398 398 */ 399 399 #ifdef LOG_ENABLED 400 # if defined( __AMD64__) || defined(LOG_USE_C99)400 # if defined(RT_ARCH_AMD64) || defined(LOG_USE_C99) 401 401 # define _LogRemoveParentheseis(...) __VA_ARGS__ 402 402 # define _LogIt(pvInst, fFlags, iGroup, ...) RTLogLoggerEx((PRTLOGGER)pvInst, fFlags, iGroup, __VA_ARGS__) … … 680 680 * Write to specific logger if group enabled. 681 681 */ 682 #if defined( __AMD64__) || defined(LOG_USE_C99)682 #if defined(RT_ARCH_AMD64) || defined(LOG_USE_C99) 683 683 # define _LogRelRemoveParentheseis(...) __VA_ARGS__ 684 684 # define _LogRelIt(pvInst, fFlags, iGroup, ...) RTLogLoggerEx((PRTLOGGER)pvInst, fFlags, iGroup, __VA_ARGS__) -
trunk/include/iprt/mem.h
r3630 r3636 154 154 RTDECL(void) RTMemExecFree(void *pv); 155 155 156 #if defined(IN_RING0) && defined( __AMD64__) && defined(__LINUX__)156 #if defined(IN_RING0) && defined(RT_ARCH_AMD64) && defined(__LINUX__) 157 157 /** 158 158 * Donate read+write+execute memory to the exec heap. -
trunk/include/iprt/nocrt/fenv.h
r3631 r3636 23 23 24 24 #include <iprt/cdefs.h> 25 #ifdef __AMD64__25 #ifdef RT_ARCH_AMD64 26 26 # include <iprt/nocrt/amd64/fenv.h> 27 #elif defined( __X86__)27 #elif defined(RT_ARCH_X86) 28 28 # include <iprt/nocrt/x86/fenv.h> 29 29 #else -
trunk/include/iprt/nocrt/limits.h
r3631 r3636 46 46 #define INT_MIN (-0x7fffffff - 1) 47 47 48 #if defined(__X86__) || defined( __WIN__)48 #if defined(__X86__) || defined(RT_OS_WINDOWS) 49 49 # define LONG_BIT 32 50 50 # define ULONG_MAX 0xffffffffU -
trunk/include/iprt/nocrt/math.h
r3631 r3636 810 810 * Include inlined implementations. 811 811 */ 812 #ifdef __AMD64__812 #ifdef RT_ARCH_AMD64 813 813 # include <iprt/nocrt/amd64/math.h> 814 #elif defined( __X86__)814 #elif defined(RT_ARCH_X86) 815 815 # include <iprt/nocrt/x86/math.h> 816 816 #endif -
trunk/include/iprt/nocrt/setjmp.h
r3631 r3636 26 26 __BEGIN_DECLS 27 27 28 #ifdef __AMD64__28 #ifdef RT_ARCH_AMD64 29 29 typedef uint64_t RT_NOCRT(jmp_buf)[8]; 30 30 #else -
trunk/include/iprt/nocrt/stddef.h
r696 r3636 1 /* dummy - fix header */2 3 1 #include <iprt/types.h> -
trunk/include/iprt/path.h
r3630 r3636 44 44 * never have to use this define. 45 45 */ 46 #if defined( __OS2__) || defined(__WIN__)46 #if defined(RT_OS_OS2) || defined(RT_OS_WINDOWS) 47 47 # define RTPATH_SLASH '\\' 48 48 #else … … 61 61 * never have to use this define. 62 62 */ 63 #if defined( __OS2__) || defined(__WIN__)63 #if defined(RT_OS_OS2) || defined(RT_OS_WINDOWS) 64 64 # define RTPATH_SLASH_STR "\\" 65 65 #else … … 74 74 * @returns @param ch Char to check. 75 75 */ 76 #if defined( __OS2__) || defined(__WIN__)76 #if defined(RT_OS_OS2) || defined(RT_OS_WINDOWS) 77 77 # define RTPATH_IS_SLASH(ch) ( (ch) == '\\' || (ch) == '/' ) 78 78 #else … … 92 92 * @returns @param ch Char to check. 93 93 */ 94 #if defined( __OS2__) || defined(__WIN__)94 #if defined(RT_OS_OS2) || defined(RT_OS_WINDOWS) 95 95 # define RTPATH_IS_VOLSEP(ch) ( (ch) == ':' ) 96 96 #else -
trunk/include/iprt/spinlock.h
r3630 r3636 45 45 # define RTSPINLOCKTMP_INITIALIZER { 0 } 46 46 47 # elif defined( __WIN__)47 # elif defined(RT_OS_WINDOWS) 48 48 /** The saved [R|E]FLAGS. */ 49 49 RTUINTREG uFlags; … … 57 57 # define RTSPINLOCKTMP_INITIALIZER { 0 } 58 58 59 # elif defined( __DARWIN__)59 # elif defined(RT_OS_DARWIN) 60 60 /** The saved [R|E]FLAGS. */ 61 61 RTUINTREG uFlags; 62 62 # define RTSPINLOCKTMP_INITIALIZER { 0 } 63 63 64 # elif defined( __OS2__) || defined(__FREEBSD__)64 # elif defined(RT_OS_OS2) || defined(RT_OS_FREEBSD) 65 65 /** The saved [R|E]FLAGS. (dummy) */ 66 66 RTUINTREG uFlags; -
trunk/include/iprt/string.h
r3630 r3636 28 28 #if defined(__LINUX__) && defined(__KERNEL__) 29 29 # include <linux/string.h> 30 #elif defined( __FREEBSD__) && defined(_KERNEL)30 #elif defined(RT_OS_FREEBSD) && defined(_KERNEL) 31 31 /* 32 32 * Kludge for the FreeBSD kernel: … … 46 46 * IPRT instead of the operating environment. 47 47 */ 48 #if defined( __DARWIN__) && defined(KERNEL)48 #if defined(RT_OS_DARWIN) && defined(KERNEL) 49 49 __BEGIN_DECLS 50 50 void *memchr(const void *pv, int ch, size_t cb); -
trunk/include/iprt/types.h
r3630 r3636 30 30 #ifndef IPRT_NO_CRT 31 31 32 # if defined( __DARWIN__) && defined(KERNEL)32 # if defined(RT_OS_DARWIN) && defined(KERNEL) 33 33 /* 34 34 * Klugde for the darwin kernel: … … 41 41 # include <sys/types.h> 42 42 43 # elif defined( __FREEBSD__) && defined(_KERNEL)43 # elif defined(RT_OS_FREEBSD) && defined(_KERNEL) 44 44 /* 45 45 * Kludge for the FreeBSD kernel: … … 117 117 #ifndef __cplusplus 118 118 # if defined(__GNUC__) 119 # if defined( __DARWIN__) && defined(_STDBOOL_H)119 # if defined(RT_OS_DARWIN) && defined(_STDBOOL_H) 120 120 # undef bool 121 121 # endif
Note:
See TracChangeset
for help on using the changeset viewer.