aboutsummaryrefslogtreecommitdiff
path: root/src/libsec
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2004-05-09 16:10:31 +0000
committerrsc <devnull@localhost>2004-05-09 16:10:31 +0000
commit2f05c0e86db5b0362ce0cc2e4a6d3a8fcd3a5827 (patch)
tree488cba5f46b0915c74ce9fb53f15135e49aaa759 /src/libsec
parent2e965b3324b32be00a2193bf304dcb936f02824b (diff)
downloadplan9port-2f05c0e86db5b0362ce0cc2e4a6d3a8fcd3a5827.tar.gz
plan9port-2f05c0e86db5b0362ce0cc2e4a6d3a8fcd3a5827.tar.bz2
plan9port-2f05c0e86db5b0362ce0cc2e4a6d3a8fcd3a5827.zip
It's bad form to access data *below* the stack pointer.
Diffstat (limited to 'src/libsec')
-rw-r--r--src/libsec/386/sha1block.spp35
1 files changed, 19 insertions, 16 deletions
diff --git a/src/libsec/386/sha1block.spp b/src/libsec/386/sha1block.spp
index 7d0696d0..cb8708f8 100644
--- a/src/libsec/386/sha1block.spp
+++ b/src/libsec/386/sha1block.spp
@@ -75,9 +75,10 @@ _sha1block:
* stack offsets
* void sha1block(uchar *DATA, int LEN, ulong *STATE)
*/
-#define DATA 8
-#define LEN 12
-#define STATE 16
+#define STACKSIZE (48+80*4)
+#define DATA (STACKSIZE+8)
+#define LEN (STACKSIZE+12)
+#define STATE (STACKSIZE+16)
/*
* stack offsets for locals
@@ -89,20 +90,22 @@ _sha1block:
* ulong a = eax, b = ebx, c = ecx, d = edx, e = esi
* ulong tmp = edi
*/
-#define WARRAY (-4-(80*4))
-#define TMP1 (-8-(80*4))
-#define TMP2 (-12-(80*4))
-#define W15 (-16-(80*4))
-#define W40 (-20-(80*4))
-#define W60 (-24-(80*4))
-#define W80 (-28-(80*4))
-#define EDATA (-32-(80*4))
-#define OLDEBX (-36-(80*4))
-#define OLDESI (-40-(80*4))
-#define OLDEDI (-44-(80*4))
+#define WARRAY (STACKSIZE-4-(80*4))
+#define TMP1 (STACKSIZE-8-(80*4))
+#define TMP2 (STACKSIZE-12-(80*4))
+#define W15 (STACKSIZE-16-(80*4))
+#define W40 (STACKSIZE-20-(80*4))
+#define W60 (STACKSIZE-24-(80*4))
+#define W80 (STACKSIZE-28-(80*4))
+#define EDATA (STACKSIZE-32-(80*4))
+#define OLDEBX (STACKSIZE-36-(80*4))
+#define OLDESI (STACKSIZE-40-(80*4))
+#define OLDEDI (STACKSIZE-44-(80*4))
/* Prelude */
pushl %ebp
+ subl $(STACKSIZE), %esp
+
mov %ebx, OLDEBX(%esp)
mov %esi, OLDESI(%esp)
mov %edi, OLDEDI(%esp)
@@ -209,6 +212,6 @@ loop4:
mov OLDEBX(%esp), %ebx
mov OLDESI(%esp), %esi
mov OLDEDI(%esp), %edi
- movl %esp, %ebp
- leave
+ addl $(STACKSIZE), %esp
+ popl %ebp
ret