Changeset 106551 in vbox for trunk/include
- Timestamp:
- Oct 21, 2024 10:14:22 AM (7 months ago)
- svn:sync-xref-src-repo-rev:
- 165385
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/iprt/asm.h
r106550 r106551 1421 1421 1422 1422 # elif defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32) 1423 # if defRT_INLINE_ASM_USES_INTRIN1423 # if RT_INLINE_ASM_USES_INTRIN 1424 1424 # if defined(RTASM_ARM64_USE_FEAT_LSE_WITHOUT_DMB) 1425 1425 uint32_t const uOldActual = __casal32(pu32, u32Old, u32New); … … 1618 1618 1619 1619 # elif defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32) 1620 # if defRT_INLINE_ASM_USES_INTRIN1620 # if RT_INLINE_ASM_USES_INTRIN 1621 1621 # if defined(RTASM_ARM64_USE_FEAT_LSE_WITHOUT_DMB) 1622 1622 uint64_t const uOldActual = __casal64(pu64, u64Old, u64New); … … 1998 1998 1999 1999 # elif defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32) 2000 # if defRT_INLINE_ASM_USES_INTRIN2000 # if RT_INLINE_ASM_USES_INTRIN 2001 2001 # if defined(RTASM_ARM64_USE_FEAT_LSE) 2002 2002 # if defined(RTASM_ARM64_USE_FEAT_LSE_WITHOUT_DMB) … … 2166 2166 2167 2167 # elif defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32) 2168 # if defRT_INLINE_ASM_USES_INTRIN2168 # if RT_INLINE_ASM_USES_INTRIN 2169 2169 # if defined(RTASM_ARM64_USE_FEAT_LSE) 2170 2170 # if defined(RTASM_ARM64_USE_FEAT_LSE_WITHOUT_DMB) … … 2334 2334 2335 2335 # elif defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32) 2336 # if defRT_INLINE_ASM_USES_INTRIN2336 # if RT_INLINE_ASM_USES_INTRIN 2337 2337 # if defined(RTASM_ARM64_USE_FEAT_LSE) 2338 2338 # if defined(RTASM_ARM64_USE_FEAT_LSE_WITHOUT_DMB) … … 3002 3002 DECLINLINE(void) ASMSerializeInstruction(void) RT_NOTHROW_DEF 3003 3003 { 3004 # if defRT_INLINE_ASM_USES_INTRIN3004 # if RT_INLINE_ASM_USES_INTRIN 3005 3005 __dsb(_ARM64_BARRIER_SY); 3006 3006 # else … … 3033 3033 # endif 3034 3034 #elif defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32) 3035 # if defRT_INLINE_ASM_USES_INTRIN3035 # if RT_INLINE_ASM_USES_INTRIN 3036 3036 __dmb(_ARM64_BARRIER_SY); 3037 3037 # else … … 3068 3068 # endif 3069 3069 #elif defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32) 3070 # if defRT_INLINE_ASM_USES_INTRIN3070 # if RT_INLINE_ASM_USES_INTRIN 3071 3071 __dmb(_ARM64_BARRIER_ST); 3072 3072 # else … … 3099 3099 # endif 3100 3100 #elif defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32) 3101 # if defRT_INLINE_ASM_USES_INTRIN3101 # if RT_INLINE_ASM_USES_INTRIN 3102 3102 __dmb(_ARM64_BARRIER_LD); 3103 3103 # else … … 3119 3119 { 3120 3120 #if defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32) 3121 # if defRT_INLINE_ASM_USES_INTRIN3121 # if RT_INLINE_ASM_USES_INTRIN 3122 3122 return __load_acquire8(pu8); 3123 3123 … … 3170 3170 { 3171 3171 #if defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32) 3172 # if defRT_INLINE_ASM_USES_INTRIN3172 # if RT_INLINE_ASM_USES_INTRIN 3173 3173 return (uint8_t)__iso_volatile_load8((volatile char *)pu8); /* (emits ldrsb, sign-extending it to 32-bit) */ 3174 3174 … … 3218 3218 { 3219 3219 #if defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32) 3220 # if defRT_INLINE_ASM_USES_INTRIN3220 # if RT_INLINE_ASM_USES_INTRIN 3221 3221 return __iso_volatile_load8((volatile const char *)pi8); 3222 3222 … … 3250 3250 Assert(!((uintptr_t)pu16 & 1)); 3251 3251 #if defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32) 3252 # if defRT_INLINE_ASM_USES_INTRIN3252 # if RT_INLINE_ASM_USES_INTRIN 3253 3253 return __load_acquire16(pu16); 3254 3254 … … 3302 3302 Assert(!((uintptr_t)pu16 & 1)); 3303 3303 #if defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32) 3304 # if defRT_INLINE_ASM_USES_INTRIN3304 # if RT_INLINE_ASM_USES_INTRIN 3305 3305 return (uint16_t)__iso_volatile_load16((volatile int16_t *)pu16); /* (emits ldrsh, sign-extending it to 32-bit) */ 3306 3306 … … 3352 3352 Assert(!((uintptr_t)pi16 & 1)); 3353 3353 #if defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32) 3354 # if defRT_INLINE_ASM_USES_INTRIN3354 # if RT_INLINE_ASM_USES_INTRIN 3355 3355 return __iso_volatile_load16(pi16); 3356 3356 … … 3384 3384 Assert(!((uintptr_t)pu32 & 3)); 3385 3385 #if defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32) 3386 # if defRT_INLINE_ASM_USES_INTRIN3386 # if RT_INLINE_ASM_USES_INTRIN 3387 3387 return (uint32_t)__load_acquire32(pu32); 3388 3388 … … 3439 3439 Assert(!((uintptr_t)pu32 & 3)); 3440 3440 #if defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32) 3441 # if defRT_INLINE_ASM_USES_INTRIN3441 # if RT_INLINE_ASM_USES_INTRIN 3442 3442 return (uint32_t)__iso_volatile_load32((volatile int32_t *)pu32); 3443 3443 … … 3495 3495 Assert(!((uintptr_t)pi32 & 3)); 3496 3496 #if defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32) 3497 # if defRT_INLINE_ASM_USES_INTRIN3497 # if RT_INLINE_ASM_USES_INTRIN 3498 3498 return __iso_volatile_load32(pi32); 3499 3499 … … 3602 3602 Assert(!((uintptr_t)pu64 & 7)); 3603 3603 3604 # if defRT_INLINE_ASM_USES_INTRIN3604 # if RT_INLINE_ASM_USES_INTRIN 3605 3605 u64 = (uint64_t)__load_acquire64(pu64); 3606 3606 … … 3726 3726 # elif defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32) 3727 3727 Assert(!((uintptr_t)pu64 & 7)); 3728 # if defRT_INLINE_ASM_USES_INTRIN3728 # if RT_INLINE_ASM_USES_INTRIN 3729 3729 u64 = (uint64_t)__iso_volatile_load64((volatile int64_t *)pu64); 3730 3730 … … 4185 4185 /* The DMB SY will ensure ordering a la x86, the stlrb is probably overkill 4186 4186 as all byte accesses are single-copy atomic, which I think suffices here. */ 4187 # if defRT_INLINE_ASM_USES_INTRIN4187 # if RT_INLINE_ASM_USES_INTRIN 4188 4188 __dmb(_ARM64_BARRIER_SY); 4189 4189 __stlr8(pu8, u8); … … 4258 4258 #if defined(RT_ARCH_ARM64) 4259 4259 /* See ASMAtomicWriteU8 comments. */ 4260 # if defRT_INLINE_ASM_USES_INTRIN4260 # if RT_INLINE_ASM_USES_INTRIN 4261 4261 __dmb(_ARM64_BARRIER_SY); 4262 4262 __stlr16(pu16, u16); … … 4333 4333 #if defined(RT_ARCH_ARM64) 4334 4334 /* See ASMAtomicWriteU8 comments. */ 4335 # if defRT_INLINE_ASM_USES_INTRIN4335 # if RT_INLINE_ASM_USES_INTRIN 4336 4336 __dmb(_ARM64_BARRIER_SY); 4337 4337 __stlr32(pu32, u32); … … 4416 4416 #if defined(RT_ARCH_ARM64) 4417 4417 /* See ASMAtomicWriteU8 comments. */ 4418 # if defRT_INLINE_ASM_USES_INTRIN4418 # if RT_INLINE_ASM_USES_INTRIN 4419 4419 __dmb(_ARM64_BARRIER_SY); 4420 4420 __stlr64(pu64, u64);
Note:
See TracChangeset
for help on using the changeset viewer.