; GNU as (binutils-2.14, --target=avr) bug report ; ; "avr-as atmel-asbr.s" vs. "avr-as atmel-asbr.s al=atmel-asbr.lst" ; ; 20030822, Wolfgang Moser .equ SPL, 0x3D ; Stack Pointer Low stack = 0x60 + 124 + 4 .equ N_INTS, 11 ; number of entries in the interrupt table .equ N_CMDS, 12 ; number of commands .text ; interrupt vector table (starts at zero, N_INTS entries) zero: rjmp reset ; RESET rjmp reset ; INT0 rjmp reset ; INT1 rjmp reset ; ICP1 rjmp reset ; OC1 rjmp reset ; OVF1 rjmp reset ; OVF0 rjmp reset ; RXC rjmp reset ; DRE rjmp reset ; TXC rjmp reset ; ACI cmdtab: ; table of commands ; number of parameters (N_CMDS entries) .byte 0, 0, 3, 4, 2, 2, 2, 0, 4, 4, 3, 0 ; ; Check the predefined constants for consitency .ifne . - cmdtab - N_CMDS .print "wrong number of entries" .err ; wrong number of entries .endif .if N_CMDS & 1 .byte 0xff ; padding to force the rest at even addresses .endif .ifgt . - zero - 256 .print "start of cmdtab exceeds 8-bit word addresses" .err ; start of cmdtab exceeds 8-bit word addresses .endif ; Reset routine reset: ldi 16, stack-1 out SPL, 16 ; restore the stack pointer idle: sei ; enable interrupts ; idle loop sleep ; wait for interrupt rjmp .-4 ; end: