X-Git-Url: https://git.cryptolib.org/?a=blobdiff_plain;ds=sidebyside;f=memxor.S;h=a32058bfc4c3c93d22abd82e23f83ae30d4e56e9;hb=4bd4efef59a3f71149393516b7bd283eeab18363;hp=2e8223766785f1aefed253cc2f681041e875554a;hpb=c1553054f9455c2f88d6b3cb44de1cc25674a528;p=avr-crypto-lib.git
diff --git a/memxor.S b/memxor.S
index 2e82237..a32058b 100644
--- a/memxor.S
+++ b/memxor.S
@@ -1,6 +1,6 @@
/* memxor.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
@@ -17,61 +17,14 @@
along with this program. If not, see .
*/
-/*
+/*
* File: memxor.S
* Author: Daniel Otte
* Date: 2008-08-07
* License: GPLv3 or later
* Description: memxor, XORing one block into another
- *
+ *
*/
-
-#include
-
-
-.macro push_ p1:req, p2:vararg
- push \p1
-.ifnb \p2
- push_ \p2
-.endif
-.endm
-
-.macro pop_ p1:req, p2:vararg
- pop \p1
-.ifnb \p2
- pop_ \p2
-.endif
-.endm
-
-.macro push_range from:req, to:req
- push \from
-.if \to-\from
- push_range "(\from+1)",\to
-.endif
-.endm
-
-.macro pop_range from:req, to:req
- pop \to
-.if \to-\from
- pop_range \from,"(\to-1)"
-.endif
-.endm
-
-.macro stack_alloc size:req, reg1=r30, reg2=r31
- in \reg1, _SFR_IO_ADDR(SPL)
- in \reg2, _SFR_IO_ADDR(SPH)
- sbiw r30, \size
- out _SFR_IO_ADDR(SPH), \reg2
- out _SFR_IO_ADDR(SPL), \reg1
-.endm
-
-.macro stack_free size:req, reg1=r30, reg2=r31
- in \reg1, _SFR_IO_ADDR(SPL)
- in \reg2, _SFR_IO_ADDR(SPH)
- adiw r30, \size
- out _SFR_IO_ADDR(SPH), \reg2
- out _SFR_IO_ADDR(SPL), \reg1
-.endm
/*
* void memxor(void* dest, const void* src, uint16_t n);
@@ -86,9 +39,7 @@ memxor:
movw r30, r24
movw r26, r22
movw r24, r20
- tst r24
- brne 1f
- tst r25
+ adiw r24, 0
breq 2f
1:
ld r20, X+
@@ -99,17 +50,17 @@ memxor:
brne 1b
2:
ret
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+