diff options
Diffstat (limited to 'crypto/des')
-rw-r--r-- | crypto/des/asm/des_enc.m4 | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/crypto/des/asm/des_enc.m4 b/crypto/des/asm/des_enc.m4 index fce6d6b9e3..83603261fe 100644 --- a/crypto/des/asm/des_enc.m4 +++ b/crypto/des/asm/des_enc.m4 @@ -1433,14 +1433,30 @@ DES_decrypt3: add out0,%o7,out0 ! pointer to .PIC.me.up #ifdef OPENSSL_PIC + ! In case anybody wonders why this code is same for both ABI. + ! To start with it's not. Do note LDPTR below. But of course + ! you must be wondering why the rest of it doesn't contain + ! things like %hh, %hm and %lm. Well, those are needed only + ! if OpenSSL library *itself* will become larger than 4GB, + ! which is not going to happen any time soon. sethi %hi(DES_SPtrans),global1 or global1,%lo(DES_SPtrans),global1 sethi %hi(_GLOBAL_OFFSET_TABLE_-(.PIC.me.up-.)),out2 add global1,out0,global1 add out2,%lo(_GLOBAL_OFFSET_TABLE_-(.PIC.me.up-.)),out2 LDPTR [out2+global1],global1 -#else +#elif 0 setn DES_SPtrans,out2,global1 ! synthetic instruction ! +#elif defined(ABI64) + sethi %hh(DES_SPtrans),out2 + or out2,%hm(DES_SPtrans),out2 + sethi %lm(DES_SPtrans),global1 + or global1,%lo(DES_SPtrans),global1 + sllx out2,32,out2 + or out2,global1,global1 +#else + sethi %hi(DES_SPtrans),global1 + or global1,%lo(DES_SPtrans),global1 #endif retl |