VirtualBox

Changeset 101228 in vbox for trunk


Ignore:
Timestamp:
Sep 21, 2023 8:01:59 PM (19 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
159211
Message:

iprt/asm.h,asm-arm.h: Fixed incorrect local labels (no leading '.', duh) so clang doesn't get confused and messes up C++ exception throwing/catching (iemOpcodeFetchBytesJmp). bugref:10370

Location:
trunk/include/iprt
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/iprt/asm-arm.h

    r100201 r101228  
    6464    uint64_t u64;
    6565#  ifdef RT_ARCH_ARM64
    66     __asm__ __volatile__("isb\n\t"
     66    __asm__ __volatile__("Lstart_ASMReadTSC_%=:\n\t"
     67                         "isb\n\t"
    6768                         "mrs %0, CNTVCT_EL0\n\t"
    6869                         : "=r" (u64));
     
    7071    uint32_t u32Spill;
    7172    uint32_t u32Comp;
    72     __asm__ __volatile__("isb\n"
    73                          "Lagain:\n\t"
     73    __asm__ __volatile__("Lstart_ASMReadTSC_%=:\n\t"
     74                         "isb\n"
     75                         "Ltry_again_ASMReadTSC_%=:\n\t"
    7476                         "mrrc p15, 0, %[uSpill], %H[uRet],   c14\n\t"  /* CNTPCT high into uRet.hi */
    7577                         "mrrc p15, 0, %[uRet],   %[uSpill],  c14\n\t"  /* CNTPCT low  into uRet.lo */
    7678                         "mrrc p15, 0, %[uSpill], %[uHiComp], c14\n\t"  /* CNTPCT high into uHiComp */
    7779                         "cmp  %H[uRet], %[uHiComp]\n\t"
    78                          "b.eq Lagain\n\t"                              /* Redo if high value changed. */
     80                         "b.eq Ltry_again_ASMReadTSC_%=\n\t"            /* Redo if high value changed. */
    7981                         : [uRet] "=r" (u64)
    8082                         , "=r" (uHiComp)
     
    103105    uint64_t u64;
    104106#  ifdef RT_ARCH_ARM64
    105     __asm__ __volatile__("isb\n\t"
     107    __asm__ __volatile__("Lstart_ASMReadCntFrqEl0_%=:\n\t"
     108                         "isb\n\t"
    106109                         "mrs %0, CNTFRQ_EL0\n\t"
    107110                         : "=r" (u64));
    108111#  else
    109112    u64 = 0;
    110     __asm__ __volatile__("isb\n"
     113    __asm__ __volatile__("Lstart_ASMReadCntFrqEl0_%=:\n\t"
     114                         "isb\n\t"
    111115                         "mrc p15, 0, %[uRet], c14, 0, 0\n\t"  /* CNTFRQ */
    112116                         : [uRet] "=r" (u64));
     
    131135# if RT_INLINE_ASM_GNU_STYLE
    132136#  ifdef RT_ARCH_ARM64
    133     __asm__ __volatile__("msr daifclr, #0xf\n\t");
     137    __asm__ __volatile__("Lstart_ASMIntEnable_%=:\n\t"
     138                         "msr daifclr, #0xf\n\t");
    134139#  else
    135140    RTCCUINTREG uFlags;
    136     __asm__ __volatile__("mrs %0, cpsr\n\t"
     141    __asm__ __volatile__("Lstart_ASMIntEnable_%=:\n\t"
     142                         "mrs %0, cpsr\n\t"
    137143                         "bic %0, %0, #0xc0\n\t"
    138144                         "msr cpsr_c, %0\n\t"
     
    156162# if RT_INLINE_ASM_GNU_STYLE
    157163#  ifdef RT_ARCH_ARM64
    158     __asm__ __volatile__("msr daifset, #0xf\n\t");
     164    __asm__ __volatile__("Lstart_ASMIntDisable_%=:\n\t"
     165                         "msr daifset, #0xf\n\t");
    159166#  else
    160167    RTCCUINTREG uFlags;
    161     __asm__ __volatile__("mrs %0, cpsr\n\t"
     168    __asm__ __volatile__("Lstart_ASMIntDisable_%=:\n\t"
     169                         "mrs %0, cpsr\n\t"
    162170                         "orr %0, %0, #0xc0\n\t"
    163171                         "msr cpsr_c, %0\n\t"
     
    182190# if RT_INLINE_ASM_GNU_STYLE
    183191#  ifdef RT_ARCH_ARM64
    184     __asm__ __volatile__("mrs %[uRet], daif\n\t"
     192    __asm__ __volatile__("Lstart_ASMIntDisableFlags_%=:\n\t"
     193                         "mrs %[uRet], daif\n\t"
    185194                         "msr daifset, #0xf\n\t"
    186195                         : [uRet] "=r" (uFlags));
    187196#  else
    188197    RTCCUINTREG uNewFlags;
    189     __asm__ __volatile__("mrs %0, cpsr\n\t"
     198    __asm__ __volatile__("Lstart_ASMIntDisableFlags_%=:\n\t"
     199                         "mrs %0, cpsr\n\t"
    190200                         "orr %1, %0, #0xc0\n\t"
    191201                         "msr cpsr_c, %1\n\t"
     
    212222# if RT_INLINE_ASM_GNU_STYLE
    213223#  ifdef RT_ARCH_ARM64
    214     __asm__ __volatile__("isb\n\t"
     224    __asm__ __volatile__("Lstart_ASMGetFlags_%=:\n\t"
     225                         "isb\n\t"
    215226                         "mrs %0, daif\n\t"
    216227                         : "=r" (uFlags));
     
    236247# if RT_INLINE_ASM_GNU_STYLE
    237248#  ifdef RT_ARCH_ARM64
    238     __asm__ __volatile__("isb\n\t"
     249    __asm__ __volatile__("Lstart_ASMSetFlags_%=:\n\t"
     250                         "isb\n\t"
    239251                         "msr daif, %[uFlags]\n\t"
    240252                         : : [uFlags] "r" (uFlags));
     
    270282{
    271283# if RT_INLINE_ASM_GNU_STYLE
    272     __asm__ __volatile__ ("wfi\n\t"); /* wait for interrupt */
     284    __asm__ __volatile__ ("Lstart_ASMHalt_%=:\n\t"
     285                          "wfi\n\t"); /* wait for interrupt */
    273286# else
    274287#  error "Unsupported compiler"
     
    292305# if RT_INLINE_ASM_GNU_STYLE
    293306    RTCCUINTREG uCpuId;
    294     __asm__ ("mrc p15, 0, %0, c0, c0, 5\n\t" /*  CPU ID Register, privileged */
     307    __asm__ ("Lstart_ASMGetApicId_%=:\n\t"
     308             "mrc p15, 0, %0, c0, c0, 5\n\t" /*  CPU ID Register, privileged */
    295309             : "=r" (uCpuId));
    296310    return uCpuId;
  • trunk/include/iprt/asm.h

    r100318 r101228  
    221221    uint32_t rcSpill; \
    222222    uint32_t u32NewRet; \
    223     __asm__ __volatile__(".Ltry_again_" #name "_%=:\n\t" \
     223    __asm__ __volatile__("Ltry_again_" #name "_%=:\n\t" \
    224224                         RTASM_ARM_##barrier_type /* before lable? */ \
    225225                         "ldaxr     %w[uNew], %[pMem]\n\t" \
    226226                         modify64 \
    227227                         "stlxr     %w[rc], %w[uNew], %[pMem]\n\t" \
    228                          "cbnz      %w[rc], .Ltry_again_" #name "_%=\n\t" \
     228                         "cbnz      %w[rc], Ltry_again_" #name "_%=\n\t" \
    229229                         : [pMem] "+Q"  (*a_pu32Mem) \
    230230                         , [uNew] "=&r" (u32NewRet) \
     
    236236    uint32_t u32OldRet; \
    237237    uint32_t u32NewSpill; \
    238     __asm__ __volatile__(".Ltry_again_" #name "_%=:\n\t" \
     238    __asm__ __volatile__("Ltry_again_" #name "_%=:\n\t" \
    239239                         RTASM_ARM_##barrier_type /* before lable? */ \
    240240                         "ldaxr     %w[uOld], %[pMem]\n\t" \
    241241                         modify64 \
    242242                         "stlxr     %w[rc], %w[uNew], %[pMem]\n\t" \
    243                          "cbnz      %w[rc], .Ltry_again_" #name "_%=\n\t" \
     243                         "cbnz      %w[rc], Ltry_again_" #name "_%=\n\t" \
    244244                         : [pMem] "+Q"  (*a_pu32Mem) \
    245245                         , [uOld] "=&r" (u32OldRet) \
     
    251251    uint32_t rcSpill; \
    252252    uint64_t u64NewRet; \
    253     __asm__ __volatile__(".Ltry_again_" #name "_%=:\n\t" \
     253    __asm__ __volatile__("Ltry_again_" #name "_%=:\n\t" \
    254254                         RTASM_ARM_##barrier_type /* before lable? */ \
    255255                         "ldaxr     %[uNew], %[pMem]\n\t" \
    256256                         modify64 \
    257257                         "stlxr     %w[rc], %[uNew], %[pMem]\n\t" \
    258                          "cbnz      %w[rc], .Ltry_again_" #name "_%=\n\t" \
     258                         "cbnz      %w[rc], Ltry_again_" #name "_%=\n\t" \
    259259                         : [pMem] "+Q"  (*a_pu64Mem) \
    260260                         , [uNew] "=&r" (u64NewRet) \
     
    266266    uint64_t u64OldRet; \
    267267    uint64_t u64NewSpill; \
    268     __asm__ __volatile__(".Ltry_again_" #name "_%=:\n\t" \
     268    __asm__ __volatile__("Ltry_again_" #name "_%=:\n\t" \
    269269                         RTASM_ARM_##barrier_type /* before lable? */ \
    270270                         "ldaxr     %[uOld], %[pMem]\n\t" \
    271271                         modify64 \
    272272                         "stlxr     %w[rc], %[uNew], %[pMem]\n\t" \
    273                          "cbnz      %w[rc], .Ltry_again_" #name "_%=\n\t" \
     273                         "cbnz      %w[rc], Ltry_again_" #name "_%=\n\t" \
    274274                         : [pMem] "+Q"  (*a_pu64Mem) \
    275275                         , [uOld] "=&r" (u64OldRet) \
     
    324324    uint32_t rcSpill; \
    325325    uint32_t u32NewRet; \
    326     __asm__ __volatile__(".Ltry_again_" #name "_%=:\n\t" \
     326    __asm__ __volatile__("Ltry_again_" #name "_%=:\n\t" \
    327327                         RT_CONCAT(RTASM_ARM_,barrier_type) /* before lable? */ \
    328328                         "ldrex     %[uNew], %[pMem]\n\t" \
     
    330330                         "strex     %[rc], %[uNew], %[pMem]\n\t" \
    331331                         "cmp       %[rc], #0\n\t" \
    332                          "bne       .Ltry_again_" #name "_%=\n\t" \
     332                         "bne       Ltry_again_" #name "_%=\n\t" \
    333333                         : [pMem] "+m"  (*a_pu32Mem) \
    334334                         , [uNew] "=&r" (u32NewRet) \
     
    341341    uint32_t u32OldRet; \
    342342    uint32_t u32NewSpill; \
    343     __asm__ __volatile__(".Ltry_again_" #name "_%=:\n\t" \
     343    __asm__ __volatile__("Ltry_again_" #name "_%=:\n\t" \
    344344                         RT_CONCAT(RTASM_ARM_,barrier_type) /* before lable? */ \
    345345                         "ldrex     %[uOld], %[pMem]\n\t" \
     
    347347                         "strex     %[rc], %[uNew], %[pMem]\n\t" \
    348348                         "cmp       %[rc], #0\n\t" \
    349                          "bne       .Ltry_again_" #name "_%=\n\t" \
     349                         "bne       Ltry_again_" #name "_%=\n\t" \
    350350                         : [pMem] "+m"  (*a_pu32Mem) \
    351351                         , [uOld] "=&r" (u32OldRet) \
     
    358358    uint32_t rcSpill; \
    359359    uint64_t u64NewRet; \
    360     __asm__ __volatile__(".Ltry_again_" #name "_%=:\n\t" \
     360    __asm__ __volatile__("Ltry_again_" #name "_%=:\n\t" \
    361361                         RT_CONCAT(RTASM_ARM_,barrier_type) /* before lable? */ \
    362362                         "ldrexd    %[uNew], %H[uNew], %[pMem]\n\t" \
     
    364364                         "strexd    %[rc], %[uNew], %H[uNew], %[pMem]\n\t" \
    365365                         "cmp       %[rc], #0\n\t" \
    366                          "bne       .Ltry_again_" #name "_%=\n\t" \
     366                         "bne       Ltry_again_" #name "_%=\n\t" \
    367367                         : [pMem] "+m"  (*a_pu64Mem), \
    368368                           [uNew] "=&r" (u64NewRet), \
     
    375375    uint64_t u64OldRet; \
    376376    uint64_t u64NewSpill; \
    377     __asm__ __volatile__(".Ltry_again_" #name "_%=:\n\t" \
     377    __asm__ __volatile__("Ltry_again_" #name "_%=:\n\t" \
    378378                         RT_CONCAT(RTASM_ARM_,barrier_type) /* before lable? */ \
    379379                         "ldrexd    %[uOld], %H[uOld], %[pMem]\n\t" \
     
    381381                         "strexd    %[rc], %[uNew], %H[uNew], %[pMem]\n\t" \
    382382                         "cmp       %[rc], #0\n\t" \
    383                          "bne       .Ltry_again_" #name "_%=\n\t" \
     383                         "bne       Ltry_again_" #name "_%=\n\t" \
    384384                         : [pMem] "+m"  (*a_pu64Mem), \
    385385                           [uOld] "=&r" (u64OldRet), \
     
    518518    uint32_t uOld;
    519519    uint32_t rcSpill;
    520     __asm__ __volatile__(".Ltry_again_ASMAtomicXchgU8_%=:\n\t"
     520    __asm__ __volatile__("Ltry_again_ASMAtomicXchgU8_%=:\n\t"
    521521                         RTASM_ARM_DMB_SY
    522522#  if defined(RT_ARCH_ARM64)
    523523                         "ldaxrb    %w[uOld], %[pMem]\n\t"
    524524                         "stlxrb    %w[rc], %w[uNew], %[pMem]\n\t"
    525                          "cbnz      %w[rc], .Ltry_again_ASMAtomicXchgU8_%=\n\t"
     525                         "cbnz      %w[rc], Ltry_again_ASMAtomicXchgU8_%=\n\t"
    526526#  else
    527527                         "ldrexb    %[uOld], %[pMem]\n\t"      /* ARMv6+ */
    528528                         "strexb    %[rc], %[uNew], %[pMem]\n\t"
    529529                         "cmp       %[rc], #0\n\t"
    530                          "bne       .Ltry_again_ASMAtomicXchgU8_%=\n\t"
     530                         "bne       Ltry_again_ASMAtomicXchgU8_%=\n\t"
    531531#  endif
    532532                         : [pMem] "+Q" (*pu8)
     
    615615    uint32_t uOld;
    616616    uint32_t rcSpill;
    617     __asm__ __volatile__(".Ltry_again_ASMAtomicXchgU16_%=:\n\t"
     617    __asm__ __volatile__("Ltry_again_ASMAtomicXchgU16_%=:\n\t"
    618618                         RTASM_ARM_DMB_SY
    619619#  if defined(RT_ARCH_ARM64)
    620620                         "ldaxrh    %w[uOld], %[pMem]\n\t"
    621621                         "stlxrh    %w[rc], %w[uNew], %[pMem]\n\t"
    622                          "cbnz      %w[rc], .Ltry_again_ASMAtomicXchgU16_%=\n\t"
     622                         "cbnz      %w[rc], Ltry_again_ASMAtomicXchgU16_%=\n\t"
    623623#  else
    624624                         "ldrexh    %[uOld], %[pMem]\n\t"      /* ARMv6+ */
    625625                         "strexh    %[rc], %[uNew], %[pMem]\n\t"
    626626                         "cmp       %[rc], #0\n\t"
    627                          "bne       .Ltry_again_ASMAtomicXchgU16_%=\n\t"
     627                         "bne       Ltry_again_ASMAtomicXchgU16_%=\n\t"
    628628#  endif
    629629                         : [pMem] "+Q" (*pu16)
     
    701701    uint32_t uOld;
    702702    uint32_t rcSpill;
    703     __asm__ __volatile__(".Ltry_again_ASMAtomicXchgU32_%=:\n\t"
     703    __asm__ __volatile__("Ltry_again_ASMAtomicXchgU32_%=:\n\t"
    704704                         RTASM_ARM_DMB_SY
    705705#  if defined(RT_ARCH_ARM64)
    706706                         "ldaxr     %w[uOld], %[pMem]\n\t"
    707707                         "stlxr     %w[rc], %w[uNew], %[pMem]\n\t"
    708                          "cbnz      %w[rc], .Ltry_again_ASMAtomicXchgU32_%=\n\t"
     708                         "cbnz      %w[rc], Ltry_again_ASMAtomicXchgU32_%=\n\t"
    709709#  else
    710710                         "ldrex     %[uOld], %[pMem]\n\t"      /* ARMv6+ */
    711711                         "strex     %[rc], %[uNew], %[pMem]\n\t"
    712712                         "cmp       %[rc], #0\n\t"
    713                          "bne       .Ltry_again_ASMAtomicXchgU32_%=\n\t"
     713                         "bne       Ltry_again_ASMAtomicXchgU32_%=\n\t"
    714714#  endif
    715715                         : [pMem] "+Q"  (*pu32)
     
    827827    uint32_t rcSpill;
    828828    uint64_t uOld;
    829     __asm__ __volatile__(".Ltry_again_ASMAtomicXchgU64_%=:\n\t"
     829    __asm__ __volatile__("Ltry_again_ASMAtomicXchgU64_%=:\n\t"
    830830                         RTASM_ARM_DMB_SY
    831831#  if defined(RT_ARCH_ARM64)
    832832                         "ldaxr     %[uOld], %[pMem]\n\t"
    833833                         "stlxr     %w[rc], %[uNew], %[pMem]\n\t"
    834                          "cbnz      %w[rc], .Ltry_again_ASMAtomicXchgU64_%=\n\t"
     834                         "cbnz      %w[rc], Ltry_again_ASMAtomicXchgU64_%=\n\t"
    835835#  else
    836836                         "ldrexd    %[uOld], %H[uOld], %[pMem]\n\t"      /* ARMv6+ */
    837837                         "strexd    %[rc], %[uNew], %H[uNew], %[pMem]\n\t"
    838838                         "cmp       %[rc], #0\n\t"
    839                          "bne       .Ltry_again_ASMAtomicXchgU64_%=\n\t"
     839                         "bne       Ltry_again_ASMAtomicXchgU64_%=\n\t"
    840840#  endif
    841841                         : [pMem] "+Q"  (*pu64)
     
    10851085    uint32_t u32Spill;
    10861086    uint32_t rcSpill;
    1087     __asm__ __volatile__(".Ltry_again_ASMAtomicCmpXchgU8_%=:\n\t"
     1087    __asm__ __volatile__("Ltry_again_ASMAtomicCmpXchgU8_%=:\n\t"
    10881088                         RTASM_ARM_DMB_SY
    10891089#  if defined(RT_ARCH_ARM64)
     
    10921092                         "bne       1f\n\t"   /* stop here if not equal */
    10931093                         "stlxrb    %w[rc], %w[uNew], %[pMem]\n\t"
    1094                          "cbnz      %w[rc], .Ltry_again_ASMAtomicCmpXchgU8_%=\n\t"
     1094                         "cbnz      %w[rc], Ltry_again_ASMAtomicCmpXchgU8_%=\n\t"
    10951095                         "mov       %w[fXchg], #1\n\t"
    10961096#  else
     
    11001100                         "bne       1f\n\t"   /* stop here if not equal */
    11011101                         "cmp       %[rc], #0\n\t"
    1102                          "bne       .Ltry_again_ASMAtomicCmpXchgU8_%=\n\t"
     1102                         "bne       Ltry_again_ASMAtomicCmpXchgU8_%=\n\t"
    11031103                         "mov       %[fXchg], #1\n\t"
    11041104#  endif
     
    12221222    uint32_t u32Spill;
    12231223    uint32_t rcSpill;
    1224     __asm__ __volatile__(".Ltry_again_ASMAtomicCmpXchgU32_%=:\n\t"
     1224    __asm__ __volatile__("Ltry_again_ASMAtomicCmpXchgU32_%=:\n\t"
    12251225                         RTASM_ARM_DMB_SY
    12261226#  if defined(RT_ARCH_ARM64)
     
    12291229                         "bne       1f\n\t"   /* stop here if not equal */
    12301230                         "stlxr     %w[rc], %w[uNew], %[pMem]\n\t"
    1231                          "cbnz      %w[rc], .Ltry_again_ASMAtomicCmpXchgU32_%=\n\t"
     1231                         "cbnz      %w[rc], Ltry_again_ASMAtomicCmpXchgU32_%=\n\t"
    12321232                         "mov       %w[fXchg], #1\n\t"
    12331233#  else
     
    12371237                         "bne       1f\n\t"   /* stop here if not equal */
    12381238                         "cmp       %[rc], #0\n\t"
    1239                          "bne       .Ltry_again_ASMAtomicCmpXchgU32_%=\n\t"
     1239                         "bne       Ltry_again_ASMAtomicCmpXchgU32_%=\n\t"
    12401240                         "mov       %[fXchg], #1\n\t"
    12411241#  endif
     
    13841384    uint64_t u64Spill;
    13851385    uint32_t rcSpill;
    1386     __asm__ __volatile__(".Ltry_again_ASMAtomicCmpXchgU64_%=:\n\t"
     1386    __asm__ __volatile__("Ltry_again_ASMAtomicCmpXchgU64_%=:\n\t"
    13871387                         RTASM_ARM_DMB_SY
    13881388#  if defined(RT_ARCH_ARM64)
     
    13911391                         "bne       1f\n\t"   /* stop here if not equal */
    13921392                         "stlxr     %w[rc], %[uNew], %[pMem]\n\t"
    1393                          "cbnz      %w[rc], .Ltry_again_ASMAtomicCmpXchgU64_%=\n\t"
     1393                         "cbnz      %w[rc], Ltry_again_ASMAtomicCmpXchgU64_%=\n\t"
    13941394                         "mov       %w[fXchg], #1\n\t"
    13951395#  else
     
    14001400                         "bne       1f\n\t"   /* stop here if not equal */
    14011401                         "cmp       %[rc], #0\n\t"
    1402                          "bne       .Ltry_again_ASMAtomicCmpXchgU64_%=\n\t"
     1402                         "bne       Ltry_again_ASMAtomicCmpXchgU64_%=\n\t"
    14031403                         "mov       %[fXchg], #1\n\t"
    14041404#  endif
     
    17291729    uint8_t u8ActualOld;
    17301730    uint8_t rcSpill;
    1731     __asm__ __volatile__(".Ltry_again_ASMAtomicCmpXchgExU8_%=:\n\t"
     1731    __asm__ __volatile__("Ltry_again_ASMAtomicCmpXchgExU8_%=:\n\t"
    17321732                         RTASM_ARM_DMB_SY
    17331733#  if defined(RT_ARCH_ARM64)
     
    17361736                         "bne       1f\n\t"   /* stop here if not equal */
    17371737                         "stlxrb    %w[rc], %w[uNew], %[pMem]\n\t"
    1738                          "cbnz      %w[rc], .Ltry_again_ASMAtomicCmpXchgExU8_%=\n\t"
     1738                         "cbnz      %w[rc], Ltry_again_ASMAtomicCmpXchgExU8_%=\n\t"
    17391739                         "mov       %w[fXchg], #1\n\t"
    17401740#  else
     
    17441744                         "bne       1f\n\t"   /* stop here if not equal */
    17451745                         "cmp       %[rc], #0\n\t"
    1746                          "bne       .Ltry_again_ASMAtomicCmpXchgExU8_%=\n\t"
     1746                         "bne       Ltry_again_ASMAtomicCmpXchgExU8_%=\n\t"
    17471747                         "mov       %[fXchg], #1\n\t"
    17481748#  endif
     
    18541854    uint16_t u16ActualOld;
    18551855    uint16_t rcSpill;
    1856     __asm__ __volatile__(".Ltry_again_ASMAtomicCmpXchgExU16_%=:\n\t"
     1856    __asm__ __volatile__("Ltry_again_ASMAtomicCmpXchgExU16_%=:\n\t"
    18571857                         RTASM_ARM_DMB_SY
    18581858#  if defined(RT_ARCH_ARM64)
     
    18611861                         "bne       1f\n\t"   /* stop here if not equal */
    18621862                         "stlxrh    %w[rc], %w[uNew], %[pMem]\n\t"
    1863                          "cbnz      %w[rc], .Ltry_again_ASMAtomicCmpXchgExU16_%=\n\t"
     1863                         "cbnz      %w[rc], Ltry_again_ASMAtomicCmpXchgExU16_%=\n\t"
    18641864                         "mov       %w[fXchg], #1\n\t"
    18651865#  else
     
    18691869                         "bne       1f\n\t"   /* stop here if not equal */
    18701870                         "cmp       %[rc], #0\n\t"
    1871                          "bne       .Ltry_again_ASMAtomicCmpXchgExU16_%=\n\t"
     1871                         "bne       Ltry_again_ASMAtomicCmpXchgExU16_%=\n\t"
    18721872                         "mov       %[fXchg], #1\n\t"
    18731873#  endif
     
    19791979    uint32_t u32ActualOld;
    19801980    uint32_t rcSpill;
    1981     __asm__ __volatile__(".Ltry_again_ASMAtomicCmpXchgExU32_%=:\n\t"
     1981    __asm__ __volatile__("Ltry_again_ASMAtomicCmpXchgExU32_%=:\n\t"
    19821982                         RTASM_ARM_DMB_SY
    19831983#  if defined(RT_ARCH_ARM64)
     
    19861986                         "bne       1f\n\t"   /* stop here if not equal */
    19871987                         "stlxr     %w[rc], %w[uNew], %[pMem]\n\t"
    1988                          "cbnz      %w[rc], .Ltry_again_ASMAtomicCmpXchgExU32_%=\n\t"
     1988                         "cbnz      %w[rc], Ltry_again_ASMAtomicCmpXchgExU32_%=\n\t"
    19891989                         "mov       %w[fXchg], #1\n\t"
    19901990#  else
     
    19941994                         "bne       1f\n\t"   /* stop here if not equal */
    19951995                         "cmp       %[rc], #0\n\t"
    1996                          "bne       .Ltry_again_ASMAtomicCmpXchgExU32_%=\n\t"
     1996                         "bne       Ltry_again_ASMAtomicCmpXchgExU32_%=\n\t"
    19971997                         "mov       %[fXchg], #1\n\t"
    19981998#  endif
     
    21492149    uint64_t u64ActualOld;
    21502150    uint32_t rcSpill;
    2151     __asm__ __volatile__(".Ltry_again_ASMAtomicCmpXchgU64_%=:\n\t"
     2151    __asm__ __volatile__("Ltry_again_ASMAtomicCmpXchgU64_%=:\n\t"
    21522152                         RTASM_ARM_DMB_SY
    21532153#  if defined(RT_ARCH_ARM64)
     
    21562156                         "bne       1f\n\t"   /* stop here if not equal */
    21572157                         "stlxr     %w[rc], %[uNew], %[pMem]\n\t"
    2158                          "cbnz      %w[rc], .Ltry_again_ASMAtomicCmpXchgU64_%=\n\t"
     2158                         "cbnz      %w[rc], Ltry_again_ASMAtomicCmpXchgU64_%=\n\t"
    21592159                         "mov       %w[fXchg], #1\n\t"
    21602160#  else
     
    21652165                         "bne       1f\n\t"   /* stop here if not equal */
    21662166                         "cmp       %[rc], #0\n\t"
    2167                          "bne       .Ltry_again_ASMAtomicCmpXchgU64_%=\n\t"
     2167                         "bne       Ltry_again_ASMAtomicCmpXchgU64_%=\n\t"
    21682168                         "mov       %[fXchg], #1\n\t"
    21692169#  endif
     
    26812681#if defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32)
    26822682    uint32_t u32;
    2683     __asm__ __volatile__(".Lstart_ASMAtomicReadU8_%=:\n\t"
     2683    __asm__ __volatile__("Lstart_ASMAtomicReadU8_%=:\n\t"
    26842684                         RTASM_ARM_DMB_SY
    26852685# if defined(RT_ARCH_ARM64)
     
    27092709#if defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32)
    27102710    uint32_t u32;
    2711     __asm__ __volatile__(".Lstart_ASMAtomicUoReadU8_%=:\n\t"
     2711    __asm__ __volatile__("Lstart_ASMAtomicUoReadU8_%=:\n\t"
    27122712# if defined(RT_ARCH_ARM64)
    27132713                         "ldxrb     %w[uDst], %[pMem]\n\t"
     
    27352735#if defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32)
    27362736    int32_t i32;
    2737     __asm__ __volatile__(".Lstart_ASMAtomicReadS8_%=:\n\t"
     2737    __asm__ __volatile__("Lstart_ASMAtomicReadS8_%=:\n\t"
    27382738                         RTASM_ARM_DMB_SY
    27392739# if defined(RT_ARCH_ARM64)
     
    27622762#if defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32)
    27632763    int32_t i32;
    2764     __asm__ __volatile__(".Lstart_ASMAtomicUoReadS8_%=:\n\t"
     2764    __asm__ __volatile__("Lstart_ASMAtomicUoReadS8_%=:\n\t"
    27652765# if defined(RT_ARCH_ARM64)
    27662766                         "ldxrb     %w[iDst], %[pMem]\n\t"
     
    27882788#if defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32)
    27892789    uint32_t u32;
    2790     __asm__ __volatile__(".Lstart_ASMAtomicReadU16_%=:\n\t"
     2790    __asm__ __volatile__("Lstart_ASMAtomicReadU16_%=:\n\t"
    27912791                         RTASM_ARM_DMB_SY
    27922792# if defined(RT_ARCH_ARM64)
     
    28172817#if defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32)
    28182818    uint32_t u32;
    2819     __asm__ __volatile__(".Lstart_ASMAtomicUoReadU16_%=:\n\t"
     2819    __asm__ __volatile__("Lstart_ASMAtomicUoReadU16_%=:\n\t"
    28202820# if defined(RT_ARCH_ARM64)
    28212821                         "ldxrh     %w[uDst], %[pMem]\n\t"
     
    28432843#if defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32)
    28442844    int32_t i32;
    2845     __asm__ __volatile__(".Lstart_ASMAtomicReadS16_%=:\n\t"
     2845    __asm__ __volatile__("Lstart_ASMAtomicReadS16_%=:\n\t"
    28462846                         RTASM_ARM_DMB_SY
    28472847# if defined(RT_ARCH_ARM64)
     
    28722872#if defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32)
    28732873    int32_t i32;
    2874     __asm__ __volatile__(".Lstart_ASMAtomicUoReadS16_%=:\n\t"
     2874    __asm__ __volatile__("Lstart_ASMAtomicUoReadS16_%=:\n\t"
    28752875# if defined(RT_ARCH_ARM64)
    28762876                         "ldxrh     %w[iDst], %[pMem]\n\t"
     
    28982898#if defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32)
    28992899    uint32_t u32;
    2900     __asm__ __volatile__(".Lstart_ASMAtomicReadU32_%=:\n\t"
     2900    __asm__ __volatile__("Lstart_ASMAtomicReadU32_%=:\n\t"
    29012901                         RTASM_ARM_DMB_SY
    29022902# if defined(RT_ARCH_ARM64)
     
    29302930#if defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32)
    29312931    uint32_t u32;
    2932     __asm__ __volatile__(".Lstart_ASMAtomicUoReadU32_%=:\n\t"
     2932    __asm__ __volatile__("Lstart_ASMAtomicUoReadU32_%=:\n\t"
    29332933# if defined(RT_ARCH_ARM64)
    29342934                         "ldxr      %w[uDst], %[pMem]\n\t"
     
    29592959#if defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32)
    29602960    int32_t i32;
    2961     __asm__ __volatile__(".Lstart_ASMAtomicReadS32_%=:\n\t"
     2961    __asm__ __volatile__("Lstart_ASMAtomicReadS32_%=:\n\t"
    29622962                         RTASM_ARM_DMB_SY
    29632963# if defined(RT_ARCH_ARM64)
     
    29912991#if defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32)
    29922992    int32_t i32;
    2993     __asm__ __volatile__(".Lstart_ASMAtomicUoReadS32_%=:\n\t"
     2993    __asm__ __volatile__("Lstart_ASMAtomicUoReadS32_%=:\n\t"
    29942994# if defined(RT_ARCH_ARM64)
    29952995                         "ldxr      %w[iDst], %[pMem]\n\t"
     
    30913091# elif defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32)
    30923092    Assert(!((uintptr_t)pu64 & 7));
    3093     __asm__ __volatile__(".Lstart_ASMAtomicReadU64_%=:\n\t"
     3093    __asm__ __volatile__("Lstart_ASMAtomicReadU64_%=:\n\t"
    30943094                         RTASM_ARM_DMB_SY
    30953095# if defined(RT_ARCH_ARM64)
     
    31933193# elif defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32)
    31943194    Assert(!((uintptr_t)pu64 & 7));
    3195     __asm__ __volatile__(".Lstart_ASMAtomicUoReadU64_%=:\n\t"
     3195    __asm__ __volatile__("Lstart_ASMAtomicUoReadU64_%=:\n\t"
    31963196# if defined(RT_ARCH_ARM64)
    31973197                         "ldxr      %[uDst], %[pMem]\n\t"
     
    59425942# elif defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32)
    59435943    uint32_t u32;
    5944     __asm__ __volatile__(".Lstart_ASMProbeReadByte_%=:\n\t"
     5944    __asm__ __volatile__("Lstart_ASMProbeReadByte_%=:\n\t"
    59455945#  if defined(RT_ARCH_ARM64)
    59465946                         "ldxrb     %w[uDst], %[pMem]\n\t"
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette