VirtualBox

儲存庫 vbox 的更動 57312


忽略:
時間撮記:
2015-8-13 上午10:00:17 (9 年 以前)
作者:
vboxsync
訊息:

ASMChangeFlags,ASMAddFlags,ASMClearFlags: GCC inline assembly constraints fixes and optimizations. ('&' is for indicating that output register is not suitable for input as it's clobbered early. 'n' is indicating constant.)

檔案:
修改 1 筆資料

圖例:

未更動
新增
刪除
  • trunk/include/iprt/asm-amd64-x86.h

    r57250 r57312  
    617617                         "mov   %1, (%%rsp)\n\t"
    618618                         "popfq\n\t"
    619                          : "=r" (fOldEfl),
     619                         : "=&r" (fOldEfl),
    620620                           "=r" (fAndEfl)
    621621                         : "1" (fAndEfl),
    622                            "r" (fOrEfl) );
     622                           "rn" (fOrEfl) );
    623623#  else
    624624    __asm__ __volatile__("pushfl\n\t"
     
    627627                         "orl   %2, (%%esp)\n\t"
    628628                         "popfl\n\t"
    629                          : "=r" (fOldEfl)
    630                          : "r" (fAndEfl),
    631                            "r" (fOrEfl) );
     629                         : "=&r" (fOldEfl)
     630                         : "rn" (fAndEfl),
     631                           "rn" (fOrEfl) );
    632632#  endif
    633633# elif RT_INLINE_ASM_USES_INTRIN >= 15
     
    682682                         "orq   %1, (%%rsp)\n\t"
    683683                         "popfq\n\t"
    684                          : "=r" (fOldEfl)
    685                          : "r" (fOrEfl) );
     684                         : "=&r" (fOldEfl)
     685                         : "rn" (fOrEfl) );
    686686#  else
    687687    __asm__ __volatile__("pushfl\n\t"
     
    689689                         "orl   %1, (%%esp)\n\t"
    690690                         "popfl\n\t"
    691                          : "=r" (fOldEfl)
    692                          : "r" (fOrEfl) );
     691                         : "=&r" (fOldEfl)
     692                         : "rn" (fOrEfl) );
    693693#  endif
    694694# elif RT_INLINE_ASM_USES_INTRIN >= 15
     
    737737                         "andq  %1, (%%rsp)\n\t"
    738738                         "popfq\n\t"
    739                          : "=r" (fOldEfl)
    740                          : "r" (fAndEfl) );
     739                         : "=&r" (fOldEfl)
     740                         : "rn" (fAndEfl) );
    741741#  else
    742742    __asm__ __volatile__("pushfl\n\t"
     
    744744                         "andl  %1, (%%esp)\n\t"
    745745                         "popfl\n\t"
    746                          : "=r" (fOldEfl)
    747                          : "r" (fAndEfl) );
     746                         : "=&r" (fOldEfl)
     747                         : "rn" (fAndEfl) );
    748748#  endif
    749749# elif RT_INLINE_ASM_USES_INTRIN >= 15
注意: 瀏覽 TracChangeset 來幫助您使用更動檢視器

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