GIT binary patch
delta 339
zcmZqRY2cX<?p@B%Tf)%0mw_QIIIZ(?TJsx$G{Z}22OkTh@t;WJKb1Bqt@$)p8vn^O
z{?qAcoh~XIKr%#y2T1y;umDLJm9$+FtU&FZ4<`OnXBS9|PCJ}7VX^_Eq+#*@|Nqm|
zdR<fm(sr^i0F~?#2azwL!Q$O4Ae}&g^t5gtppq9Z|0h>5I!ZFabcw)paf5ZeoP33G
zdVSzOsF@rvS$43jB}`lbCe8sCR|Ja#Es#jtB?z$$=!diyoG|q~F!jP<^&kI2&6k0R
mi-5&%g2lUqTvT|{c8Nj^@==jVdvS2{A0}qz$py>_jEn%58-ITQ
delta 431
zcmXwyy-Pw-7{<>{qpRJ}@<zvSJkji*5IDL;IYdRv<I?ETbQPyVTu2;RT8ftDT)NP3
z3|c~ph9rW>2)#oPZ9?Sj_1IY+UVhKVTXm|=QOWBvzry@$#;^g|K?zbJ)xjp@E!I)%
zF%~h@`lJl`7o^VbIAj;9Z$q}B-Z>JlP=hoQPpID~vBIc<{3Gh0E~VQP8$yK~wSk_R
zBR@F~t1la>C#XLxLl%WiS`iNEzKD~?1>_q7KFwI;Y&GR#3p?1wHg5bDp@(cf6Gc%O
zenF&h6{lGQOJfaxMq_?R0|6&MXOSY|$Edk%tz}QOOD)&5W_3$8E7r01{rkUZ8+S&#
z&xUiuZOxVD^nfFnpFArF8{vh?J0_pe`G(;+!(Gh}COZoS;UHL?3>8HV;ojxRR4itB
Ee=`xOo&W#<
@@ -122,24 +122,14 @@ static inline void writel_es(uint16_t offset, uint32_t val)
static inline uint32_t bswap32(uint32_t x)
{
- return
- ((x & 0x000000ffU) << 24) |
- ((x & 0x0000ff00U) << 8) |
- ((x & 0x00ff0000U) >> 8) |
- ((x & 0xff000000U) >> 24);
+ asm("bswapl %0" : "=r" (x) : "0" (x));
+ return x;
}
static inline uint64_t bswap64(uint64_t x)
{
- return
- ((x & 0x00000000000000ffULL) << 56) |
- ((x & 0x000000000000ff00ULL) << 40) |
- ((x & 0x0000000000ff0000ULL) << 24) |
- ((x & 0x00000000ff000000ULL) << 8) |
- ((x & 0x000000ff00000000ULL) >> 8) |
- ((x & 0x0000ff0000000000ULL) >> 24) |
- ((x & 0x00ff000000000000ULL) >> 40) |
- ((x & 0xff00000000000000ULL) >> 56);
+ asm("bswapl %%eax; bswapl %%edx; xchg %%eax, %%edx" : "=A" (x) : "0" (x));
+ return x;
}
static inline uint64_t cpu_to_be64(uint64_t x)
Recent compilers can detect and inline manually-written bswap code, but GCC 4.2.1 (the last GPLv2 version) cannot and generates really awful code. Depending on how the compiler is configured, it might also not want to generate bswap because it was not in i386. Using asm is fine because TCG knows about bswap and all processors with virtualization extensions also do. Reported-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> --- pc-bios/linuxboot_dma.bin | Bin 1536 -> 1536 bytes pc-bios/optionrom/linuxboot_dma.c | 18 ++++-------------- 2 files changed, 4 insertions(+), 14 deletions(-)