-
Notifications
You must be signed in to change notification settings - Fork 0
/
clkint.S
61 lines (61 loc) · 1.48 KB
/
clkint.S
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
;
; Copyright (c) 2007-21, Kalopa Robotics Limited. All rights reserved.
;
; This is free software; you can redistribute it and/or modify it
; under the terms of the GNU General Public License as published by
; the Free Software Foundation; either version 2, or (at your option)
; any later version. It is distributed in the hope that it will be
; useful, but WITHOUT ANY WARRANTY; without even the implied warranty
; of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
; General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with this product; see the file COPYING. If not, write to the
; Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
;
; ABSTRACT
;
#include <avr/io.h>
;
; void _clk_int();
;
; Clock timer tick. Just call the main C routine.
.section .init6,"ax",@progbits
.global _clk_int
.func _clk_int
_clk_int:
push r24 ; Save the status register
in r24,_SFR_IO_ADDR(SREG)
push r24
push r25
;
push r18 ; Save the temporary regs
push r19
push r20
push r21
push r26
push r27
push r30
push r31
#ifdef __AVR_HAVE_JMP_CALL__
call clocktick ; Call the main clock tick
#else
rcall clocktick ; Call the main clock tick
#endif
pop r31 ; Restore the registers
pop r30
pop r27
pop r26
pop r21
pop r20
pop r19
pop r18
;
pop r25 ; Restore the status register
pop r24
out _SFR_IO_ADDR(SREG),r24
pop r24
reti ; Return from interrupt
.endfunc
;
; Fin.