X-Git-Url: https://git.cryptolib.org/?a=blobdiff_plain;f=avr-asm-macros.S;fp=avr-asm-macros.S;h=829562b7d1b680241df3d8786e8f443ba3edbd4b;hb=c239a90de4f9ea98d7c0f5962d200c1a6a6033d1;hp=0fd325dfc168c6380fe941be23bb90b2971c1ecc;hpb=f215d8ed649fd5bf5f85eb34f851a1539302013d;p=avr-crypto-lib.git diff --git a/avr-asm-macros.S b/avr-asm-macros.S index 0fd325d..829562b 100644 --- a/avr-asm-macros.S +++ b/avr-asm-macros.S @@ -120,6 +120,24 @@ out _SFR_IO_ADDR(SPL), \reg1 .endm +.macro stack_free_large3 size:req, reg1=r30, reg2=r31 + in r0, _SFR_IO_ADDR(SREG) + in \reg1, _SFR_IO_ADDR(SPL) + in \reg2, _SFR_IO_ADDR(SPH) + push r16 + push r17 + ldi r16, lo8(\size) + ldi r17, hi8(\size) + add \reg1, r16 + adc \reg2, r17 + pop r17 + pop r16 + cli + out _SFR_IO_ADDR(SPH), \reg2 + out _SFR_IO_ADDR(SREG), r0 + out _SFR_IO_ADDR(SPL), \reg1 +.endm + /******************************************************************************* * END of MACRO SECTION *