[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[avr-libc-commit] [2348] Modified system_tick as advised by Wouter van G
From: |
Mike Rice |
Subject: |
[avr-libc-commit] [2348] Modified system_tick as advised by Wouter van Gulik... |
Date: |
Tue, 16 Apr 2013 23:42:06 +0000 |
Revision: 2348
http://svn.sv.gnu.org/viewvc/?view=rev&root=avr-libc&revision=2348
Author: swfltek
Date: 2013-04-16 23:42:05 +0000 (Tue, 16 Apr 2013)
Log Message:
-----------
Modified system_tick as advised by Wouter van Gulik... 25% fewer cpu cycles and
75% less stack usage.
Modified Paths:
--------------
trunk/avr-libc/libc/time/system_tick.S
Modified: trunk/avr-libc/libc/time/system_tick.S
===================================================================
--- trunk/avr-libc/libc/time/system_tick.S 2013-04-14 16:55:04 UTC (rev
2347)
+++ trunk/avr-libc/libc/time/system_tick.S 2013-04-16 23:42:05 UTC (rev
2348)
@@ -29,7 +29,7 @@
/* $Id$ */
/*
- This function increments __system time by one second. It is safe to
call from a 'naked' ISR.
+ Impoved system_tick Credit to Wouter van Gulik.
*/
#include <avr/common.h>
@@ -38,31 +38,23 @@
.type system_tick, @function
system_tick:
push r24
- push r25
- push r26
- push r27
- push r1
- in r1,_SFR_IO_ADDR(SREG)
- push r1
- clr r1
+ in r24,_SFR_IO_ADDR(SREG)
+ push r24
cli
- lds r24,__system_time
- lds r25,__system_time+1
- lds r26,__system_time+2
- lds r27,__system_time+3
- adiw r24,1
- adc r26,r1
- adc r27,r1
- sts __system_time,r24
- sts __system_time+1,r25
- sts __system_time+2,r26
- sts __system_time+3,r27
- pop r1
- out _SFR_IO_ADDR(SREG),r1
- pop r1
- pop r27
- pop r26
- pop r25
- pop r24
- ret
+ lds r24,__system_time+0
+ subi r24, (-1)
+ sts __system_time+0,r24
+ lds r24,__system_time+1
+ sbci r24, (-1)
+ sts __system_time+1,r24
+ lds r24,__system_time+2
+ sbci r24, (-1)
+ sts __system_time+2,r24
+ lds r24,__system_time+3
+ sbci r24, (-1)
+ sts __system_time+3,r24
+ pop r24
+ out _SFR_IO_ADDR(SREG),r24
+ pop r24
+ ret
.size system_tick, .-system_tick
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [avr-libc-commit] [2348] Modified system_tick as advised by Wouter van Gulik...,
Mike Rice <=