]> git.cryptolib.org Git - avr-crypto-lib.git/blobdiff - gf256mul.S
updated Makefile
[avr-crypto-lib.git] / gf256mul.S
index 02e85e95c9003999a0c25ba4982edf36006ee296..b269d3a4a1b760d2d372598bb0cbfdf87de1009c 100644 (file)
@@ -1,6 +1,6 @@
 /* gf256mul.S */
 /*
-    This file is part of the Crypto-avr-lib/microcrypt-lib.
+    This file is part of the AVR-Crypto-Lib.
     Copyright (C) 2008  Daniel Otte (daniel.otte@rub.de)
 
     This program is free software: you can redistribute it and/or modify
  * 
  */
 
+#include <avr/io.h>
+#define OPTIMIZE_SMALL_A
 
 /*
  * param a: r24
- * param b; r22
+ * param b: r22
  * param reducer: r20
  */
-A = 21
+A = 23
 B = 22
 P = 24
 .global gf256mul
+
+#ifdef OPTIMIZE_SMALL_A
+gf256mul:
+       mov A, r24
+       clr r24
+1:     
+       lsr A
+       breq 4f
+       brcc 2f
+       eor P, B
+2:
+       lsl B
+       brcc 3f
+       eor B, r20      
+3:
+       rjmp 1b
+4:
+       brcc 2f
+       eor P, B
+2:
+       ret
+
+#else
+
 gf256mul:
        mov r21, r24
        clr r24
        ldi r25, 8
 1:     
-       lsr B
+       lsr A
        brcc 2f
-       eor P, A
+       eor P, B
 2:
-       lsl A
+       lsl B
        brcc 3f
-       eor A, r20      
+       eor B, r20      
 3:
        dec r25
        brne 1b
        ret
 
+#endif