summaryrefslogtreecommitdiffstats
path: root/crypto/des
diff options
context:
space:
mode:
authorAndy Polyakov <appro@openssl.org>2003-01-04 14:41:09 +0000
committerAndy Polyakov <appro@openssl.org>2003-01-04 14:41:09 +0000
commit19a97a1df04964406688feeb84a1622313c0558b (patch)
tree0bf5d9b8cf222c466bdba8e257eb9b56621e0aa0 /crypto/des
parent72997517b0d802aa25285fdaece041dc6ea5ae7c (diff)
Another GAS fix-up and some commentary...
Diffstat (limited to 'crypto/des')
-rw-r--r--crypto/des/asm/des_enc.m418
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