Skeleton going up
This commit is contained in:
parent
4ed0ef3e73
commit
fdd08cbc3a
|
|
@ -58,7 +58,7 @@ program: $(PROGRAM).hex
|
||||||
stty -hup -echo < $(PROGPORT)
|
stty -hup -echo < $(PROGPORT)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf *.o *.elf *.lst *.map *.sym *.lss *.eep *.srec *.bin *.hex *.al
|
rm -rf *.o *.elf *.lst *.map *.sym *.lss *.eep *.srec *.bin *.hex *.al *.i *.s *~
|
||||||
|
|
||||||
%.o: %.c
|
%.o: %.c
|
||||||
$(CC) -c $(CFLAGS) -Wa,-adhlns=$(<:.c=.al) -o $@ $^
|
$(CC) -c $(CFLAGS) -Wa,-adhlns=$(<:.c=.al) -o $@ $^
|
||||||
|
|
|
||||||
505
mendel/mendel.i
505
mendel/mendel.i
|
|
@ -1,505 +0,0 @@
|
||||||
# 1 "mendel.c"
|
|
||||||
# 1 "/home/triffid/ATmega-Skeleton/mendel//"
|
|
||||||
# 1 "<built-in>"
|
|
||||||
# 1 "<command-line>"
|
|
||||||
# 1 "mendel.c"
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/include/stddef.h" 1 3 4
|
|
||||||
# 149 "/usr/lib/gcc/avr/4.4.1/include/stddef.h" 3 4
|
|
||||||
typedef int ptrdiff_t;
|
|
||||||
# 211 "/usr/lib/gcc/avr/4.4.1/include/stddef.h" 3 4
|
|
||||||
typedef unsigned int size_t;
|
|
||||||
# 323 "/usr/lib/gcc/avr/4.4.1/include/stddef.h" 3 4
|
|
||||||
typedef int wchar_t;
|
|
||||||
# 2 "mendel.c" 2
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdio.h" 1 3
|
|
||||||
# 44 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdio.h" 3
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/inttypes.h" 1 3
|
|
||||||
# 37 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/inttypes.h" 3
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdint.h" 1 3
|
|
||||||
# 121 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdint.h" 3
|
|
||||||
typedef int int8_t __attribute__((__mode__(__QI__)));
|
|
||||||
typedef unsigned int uint8_t __attribute__((__mode__(__QI__)));
|
|
||||||
typedef int int16_t __attribute__ ((__mode__ (__HI__)));
|
|
||||||
typedef unsigned int uint16_t __attribute__ ((__mode__ (__HI__)));
|
|
||||||
typedef int int32_t __attribute__ ((__mode__ (__SI__)));
|
|
||||||
typedef unsigned int uint32_t __attribute__ ((__mode__ (__SI__)));
|
|
||||||
|
|
||||||
typedef int int64_t __attribute__((__mode__(__DI__)));
|
|
||||||
typedef unsigned int uint64_t __attribute__((__mode__(__DI__)));
|
|
||||||
# 142 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdint.h" 3
|
|
||||||
typedef int16_t intptr_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef uint16_t uintptr_t;
|
|
||||||
# 159 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdint.h" 3
|
|
||||||
typedef int8_t int_least8_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef uint8_t uint_least8_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef int16_t int_least16_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef uint16_t uint_least16_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef int32_t int_least32_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef uint32_t uint_least32_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef int64_t int_least64_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef uint64_t uint_least64_t;
|
|
||||||
# 213 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdint.h" 3
|
|
||||||
typedef int8_t int_fast8_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef uint8_t uint_fast8_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef int16_t int_fast16_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef uint16_t uint_fast16_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef int32_t int_fast32_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef uint32_t uint_fast32_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef int64_t int_fast64_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef uint64_t uint_fast64_t;
|
|
||||||
# 273 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdint.h" 3
|
|
||||||
typedef int64_t intmax_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef uint64_t uintmax_t;
|
|
||||||
# 38 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/inttypes.h" 2 3
|
|
||||||
# 77 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/inttypes.h" 3
|
|
||||||
typedef int32_t int_farptr_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef uint32_t uint_farptr_t;
|
|
||||||
# 45 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdio.h" 2 3
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/include/stdarg.h" 1 3 4
|
|
||||||
# 40 "/usr/lib/gcc/avr/4.4.1/include/stdarg.h" 3 4
|
|
||||||
typedef __builtin_va_list __gnuc_va_list;
|
|
||||||
# 102 "/usr/lib/gcc/avr/4.4.1/include/stdarg.h" 3 4
|
|
||||||
typedef __gnuc_va_list va_list;
|
|
||||||
# 46 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdio.h" 2 3
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/include/stddef.h" 1 3 4
|
|
||||||
# 50 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdio.h" 2 3
|
|
||||||
# 242 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdio.h" 3
|
|
||||||
struct __file {
|
|
||||||
char *buf;
|
|
||||||
unsigned char unget;
|
|
||||||
uint8_t flags;
|
|
||||||
# 261 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdio.h" 3
|
|
||||||
int size;
|
|
||||||
int len;
|
|
||||||
int (*put)(char, struct __file *);
|
|
||||||
int (*get)(struct __file *);
|
|
||||||
void *udata;
|
|
||||||
};
|
|
||||||
# 405 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdio.h" 3
|
|
||||||
extern struct __file *__iob[];
|
|
||||||
# 417 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdio.h" 3
|
|
||||||
extern struct __file *fdevopen(int (*__put)(char, struct __file*), int (*__get)(struct __file*));
|
|
||||||
# 434 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdio.h" 3
|
|
||||||
extern int fclose(struct __file *__stream);
|
|
||||||
# 608 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdio.h" 3
|
|
||||||
extern int vfprintf(struct __file *__stream, const char *__fmt, va_list __ap);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern int vfprintf_P(struct __file *__stream, const char *__fmt, va_list __ap);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern int fputc(int __c, struct __file *__stream);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern int putc(int __c, struct __file *__stream);
|
|
||||||
|
|
||||||
|
|
||||||
extern int putchar(int __c);
|
|
||||||
# 649 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdio.h" 3
|
|
||||||
extern int printf(const char *__fmt, ...);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern int printf_P(const char *__fmt, ...);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern int vprintf(const char *__fmt, va_list __ap);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern int sprintf(char *__s, const char *__fmt, ...);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern int sprintf_P(char *__s, const char *__fmt, ...);
|
|
||||||
# 685 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdio.h" 3
|
|
||||||
extern int snprintf(char *__s, size_t __n, const char *__fmt, ...);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern int snprintf_P(char *__s, size_t __n, const char *__fmt, ...);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern int vsprintf(char *__s, const char *__fmt, va_list ap);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern int vsprintf_P(char *__s, const char *__fmt, va_list ap);
|
|
||||||
# 713 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdio.h" 3
|
|
||||||
extern int vsnprintf(char *__s, size_t __n, const char *__fmt, va_list ap);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern int vsnprintf_P(char *__s, size_t __n, const char *__fmt, va_list ap);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern int fprintf(struct __file *__stream, const char *__fmt, ...);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern int fprintf_P(struct __file *__stream, const char *__fmt, ...);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern int fputs(const char *__str, struct __file *__stream);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern int fputs_P(const char *__str, struct __file *__stream);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern int puts(const char *__str);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern int puts_P(const char *__str);
|
|
||||||
# 762 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdio.h" 3
|
|
||||||
extern size_t fwrite(const void *__ptr, size_t __size, size_t __nmemb,
|
|
||||||
struct __file *__stream);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern int fgetc(struct __file *__stream);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern int getc(struct __file *__stream);
|
|
||||||
|
|
||||||
|
|
||||||
extern int getchar(void);
|
|
||||||
# 810 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdio.h" 3
|
|
||||||
extern int ungetc(int __c, struct __file *__stream);
|
|
||||||
# 822 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdio.h" 3
|
|
||||||
extern char *fgets(char *__str, int __size, struct __file *__stream);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern char *gets(char *__str);
|
|
||||||
# 840 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdio.h" 3
|
|
||||||
extern size_t fread(void *__ptr, size_t __size, size_t __nmemb,
|
|
||||||
struct __file *__stream);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern void clearerr(struct __file *__stream);
|
|
||||||
# 857 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdio.h" 3
|
|
||||||
extern int feof(struct __file *__stream);
|
|
||||||
# 868 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdio.h" 3
|
|
||||||
extern int ferror(struct __file *__stream);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern int vfscanf(struct __file *__stream, const char *__fmt, va_list __ap);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern int vfscanf_P(struct __file *__stream, const char *__fmt, va_list __ap);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern int fscanf(struct __file *__stream, const char *__fmt, ...);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern int fscanf_P(struct __file *__stream, const char *__fmt, ...);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern int scanf(const char *__fmt, ...);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern int scanf_P(const char *__fmt, ...);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern int vscanf(const char *__fmt, va_list __ap);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern int sscanf(const char *__buf, const char *__fmt, ...);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern int sscanf_P(const char *__buf, const char *__fmt, ...);
|
|
||||||
# 938 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdio.h" 3
|
|
||||||
static __inline__ int fflush(struct __file *stream __attribute__((unused)))
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
# 3 "mendel.c" 2
|
|
||||||
|
|
||||||
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h" 1 3
|
|
||||||
# 99 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h" 3
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/sfr_defs.h" 1 3
|
|
||||||
# 100 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h" 2 3
|
|
||||||
# 224 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h" 3
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/iom168.h" 1 3
|
|
||||||
# 36 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/iom168.h" 3
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/iomx8.h" 1 3
|
|
||||||
# 37 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/iom168.h" 2 3
|
|
||||||
# 225 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h" 2 3
|
|
||||||
# 334 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h" 3
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/portpins.h" 1 3
|
|
||||||
# 335 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h" 2 3
|
|
||||||
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/common.h" 1 3
|
|
||||||
# 337 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h" 2 3
|
|
||||||
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/version.h" 1 3
|
|
||||||
# 339 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h" 2 3
|
|
||||||
|
|
||||||
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/fuse.h" 1 3
|
|
||||||
# 234 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/fuse.h" 3
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
unsigned char low;
|
|
||||||
unsigned char high;
|
|
||||||
unsigned char extended;
|
|
||||||
} __fuse_t;
|
|
||||||
# 342 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h" 2 3
|
|
||||||
|
|
||||||
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/lock.h" 1 3
|
|
||||||
# 345 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h" 2 3
|
|
||||||
# 6 "mendel.c" 2
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/interrupt.h" 1 3
|
|
||||||
# 7 "mendel.c" 2
|
|
||||||
|
|
||||||
# 1 "serial.h" 1
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 1 "ringbuffer.h" 1
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
uint16_t read_pointer;
|
|
||||||
uint16_t write_pointer;
|
|
||||||
uint16_t size;
|
|
||||||
uint8_t data[];
|
|
||||||
} ringbuffer;
|
|
||||||
|
|
||||||
void ringbuffer_init(ringbuffer *buf, int bufsize);
|
|
||||||
|
|
||||||
uint16_t ringbuffer_canread(ringbuffer *buf);
|
|
||||||
uint16_t ringbuffer_canwrite(ringbuffer *buf);
|
|
||||||
|
|
||||||
uint8_t ringbuffer_readchar(ringbuffer *buf);
|
|
||||||
uint8_t ringbuffer_peekchar(ringbuffer *buf, uint16_t index);
|
|
||||||
uint16_t ringbuffer_readblock(ringbuffer *buf, uint8_t *newbuf, int size);
|
|
||||||
|
|
||||||
void ringbuffer_writechar(ringbuffer *buf, uint8_t data);
|
|
||||||
uint16_t ringbuffer_writeblock(ringbuffer *buf, uint8_t *data, int size);
|
|
||||||
# 8 "serial.h" 2
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern volatile uint8_t _rx_buffer[];
|
|
||||||
extern volatile uint8_t _tx_buffer[];
|
|
||||||
|
|
||||||
void serial_init(void);
|
|
||||||
|
|
||||||
uint16_t serial_rxchars(void);
|
|
||||||
uint16_t serial_txchars(void);
|
|
||||||
|
|
||||||
uint8_t serial_popchar(void);
|
|
||||||
void serial_writechar(uint8_t data);
|
|
||||||
|
|
||||||
uint16_t serial_recvblock(uint8_t *block, int blocksize);
|
|
||||||
void serial_writeblock(uint8_t *data, int datalen);
|
|
||||||
# 9 "mendel.c" 2
|
|
||||||
|
|
||||||
int serial_putc_fdev(char c, struct __file *stream)
|
|
||||||
{
|
|
||||||
serial_writechar((uint8_t) c);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int serial_getc_fdev(struct __file *stream)
|
|
||||||
{
|
|
||||||
for (;serial_rxchars() == 0;);
|
|
||||||
return (int) serial_popchar();
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct __file serio = { .put = serial_putc_fdev, .get = serial_getc_fdev, .flags = (0x0001|0x0002), .udata = 0, };
|
|
||||||
|
|
||||||
int main (void)
|
|
||||||
{
|
|
||||||
|
|
||||||
(__iob[0]) = &serio;
|
|
||||||
(__iob[1]) = &serio;
|
|
||||||
(__iob[2]) = &serio;
|
|
||||||
|
|
||||||
|
|
||||||
serial_init();
|
|
||||||
|
|
||||||
__asm__ __volatile__ ("sei" ::);
|
|
||||||
|
|
||||||
for (;;)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
195
mendel/mendel.s
195
mendel/mendel.s
|
|
@ -1,195 +0,0 @@
|
||||||
.file "mendel.c"
|
|
||||||
__SREG__ = 0x3f
|
|
||||||
__SP_H__ = 0x3e
|
|
||||||
__SP_L__ = 0x3d
|
|
||||||
__tmp_reg__ = 0
|
|
||||||
__zero_reg__ = 1
|
|
||||||
.global __do_copy_data
|
|
||||||
.global __do_clear_bss
|
|
||||||
.stabs "/home/triffid/ATmega-Skeleton/mendel/",100,0,2,.Ltext0
|
|
||||||
.stabs "mendel.c",100,0,2,.Ltext0
|
|
||||||
.text
|
|
||||||
.Ltext0:
|
|
||||||
.stabs "gcc2_compiled.",60,0,0,0
|
|
||||||
.stabs "int:t(0,1)=r(0,1);-32768;32767;",128,0,1,0
|
|
||||||
.stabs "char:t(0,2)=@s8;r(0,2);0;255;",128,0,1,0
|
|
||||||
.stabs "long int:t(0,3)=@s32;r(0,3);020000000000;017777777777;",128,0,1,0
|
|
||||||
.stabs "unsigned int:t(0,4)=r(0,4);0;0177777;",128,0,1,0
|
|
||||||
.stabs "long unsigned int:t(0,5)=@s32;r(0,5);0;037777777777;",128,0,1,0
|
|
||||||
.stabs "long long int:t(0,6)=@s64;r(0,6);01000000000000000000000;0777777777777777777777;",128,0,1,0
|
|
||||||
.stabs "long long unsigned int:t(0,7)=@s64;r(0,7);0;01777777777777777777777;",128,0,1,0
|
|
||||||
.stabs "short int:t(0,8)=r(0,8);-32768;32767;",128,0,1,0
|
|
||||||
.stabs "short unsigned int:t(0,9)=r(0,9);0;0177777;",128,0,1,0
|
|
||||||
.stabs "signed char:t(0,10)=@s8;r(0,10);-128;127;",128,0,1,0
|
|
||||||
.stabs "unsigned char:t(0,11)=@s8;r(0,11);0;255;",128,0,1,0
|
|
||||||
.stabs "float:t(0,12)=r(0,1);4;0;",128,0,1,0
|
|
||||||
.stabs "double:t(0,13)=r(0,1);4;0;",128,0,1,0
|
|
||||||
.stabs "long double:t(0,14)=r(0,1);4;0;",128,0,1,0
|
|
||||||
.stabs "void:t(0,15)=(0,15)",128,0,1,0
|
|
||||||
.stabs "/usr/lib/gcc/avr/4.4.1/include/stddef.h",130,0,0,0
|
|
||||||
.stabs "ptrdiff_t:t(1,1)=(0,1)",128,0,149,0
|
|
||||||
.stabs "size_t:t(1,2)=(0,4)",128,0,211,0
|
|
||||||
.stabs "wchar_t:t(1,3)=(0,1)",128,0,323,0
|
|
||||||
.stabn 162,0,0,0
|
|
||||||
.stabs "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdio.h",130,0,0,0
|
|
||||||
.stabs "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/inttypes.h",130,0,0,0
|
|
||||||
.stabs "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdint.h",130,0,0,0
|
|
||||||
.stabs "int8_t:t(4,1)=(0,10)",128,0,121,0
|
|
||||||
.stabs "uint8_t:t(4,2)=(0,11)",128,0,122,0
|
|
||||||
.stabs "int16_t:t(4,3)=(0,1)",128,0,123,0
|
|
||||||
.stabs "uint16_t:t(4,4)=(0,4)",128,0,124,0
|
|
||||||
.stabs "int32_t:t(4,5)=(0,3)",128,0,125,0
|
|
||||||
.stabs "uint32_t:t(4,6)=(0,5)",128,0,126,0
|
|
||||||
.stabs "int64_t:t(4,7)=(0,6)",128,0,128,0
|
|
||||||
.stabs "uint64_t:t(4,8)=(0,7)",128,0,129,0
|
|
||||||
.stabs "intptr_t:t(4,9)=(4,3)",128,0,142,0
|
|
||||||
.stabs "uintptr_t:t(4,10)=(4,4)",128,0,147,0
|
|
||||||
.stabs "int_least8_t:t(4,11)=(4,1)",128,0,159,0
|
|
||||||
.stabs "uint_least8_t:t(4,12)=(4,2)",128,0,164,0
|
|
||||||
.stabs "int_least16_t:t(4,13)=(4,3)",128,0,169,0
|
|
||||||
.stabs "uint_least16_t:t(4,14)=(4,4)",128,0,174,0
|
|
||||||
.stabs "int_least32_t:t(4,15)=(4,5)",128,0,179,0
|
|
||||||
.stabs "uint_least32_t:t(4,16)=(4,6)",128,0,184,0
|
|
||||||
.stabs "int_least64_t:t(4,17)=(4,7)",128,0,192,0
|
|
||||||
.stabs "uint_least64_t:t(4,18)=(4,8)",128,0,199,0
|
|
||||||
.stabs "int_fast8_t:t(4,19)=(4,1)",128,0,213,0
|
|
||||||
.stabs "uint_fast8_t:t(4,20)=(4,2)",128,0,218,0
|
|
||||||
.stabs "int_fast16_t:t(4,21)=(4,3)",128,0,223,0
|
|
||||||
.stabs "uint_fast16_t:t(4,22)=(4,4)",128,0,228,0
|
|
||||||
.stabs "int_fast32_t:t(4,23)=(4,5)",128,0,233,0
|
|
||||||
.stabs "uint_fast32_t:t(4,24)=(4,6)",128,0,238,0
|
|
||||||
.stabs "int_fast64_t:t(4,25)=(4,7)",128,0,246,0
|
|
||||||
.stabs "uint_fast64_t:t(4,26)=(4,8)",128,0,253,0
|
|
||||||
.stabs "intmax_t:t(4,27)=(4,7)",128,0,273,0
|
|
||||||
.stabs "uintmax_t:t(4,28)=(4,8)",128,0,278,0
|
|
||||||
.stabn 162,0,0,0
|
|
||||||
.stabs "int_farptr_t:t(3,1)=(4,5)",128,0,77,0
|
|
||||||
.stabs "uint_farptr_t:t(3,2)=(4,6)",128,0,81,0
|
|
||||||
.stabn 162,0,0,0
|
|
||||||
.stabs "/usr/lib/gcc/avr/4.4.1/include/stdarg.h",130,0,0,0
|
|
||||||
.stabs "__gnuc_va_list:t(5,1)=(5,2)=*(0,15)",128,0,40,0
|
|
||||||
.stabs "va_list:t(5,3)=(5,1)",128,0,102,0
|
|
||||||
.stabn 162,0,0,0
|
|
||||||
.stabs "__file:T(2,1)=s14buf:(2,2)=*(0,2),0,16;unget:(0,11),16,8;flags:(4,2),24,8;size:(0,1),32,16;len:(0,1),48,16;put:(2,3)=*(2,4)=f(0,1),64,16;get:(2,5)=*(2,6)=f(0,1),80,16;udata:(2,7)=*(0,15),96,16;;",128,0,0,0
|
|
||||||
.stabn 162,0,0,0
|
|
||||||
.stabs "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h",130,0,0,0
|
|
||||||
.stabs "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/fuse.h",130,0,0,0
|
|
||||||
.stabs "__fuse_t:t(7,1)=(7,2)=s3low:(0,11),0,8;high:(0,11),8,8;extended:(0,11),16,8;;",128,0,239,0
|
|
||||||
.stabn 162,0,0,0
|
|
||||||
.stabn 162,0,0,0
|
|
||||||
.stabs "serial.h",130,0,0,0
|
|
||||||
.stabs "ringbuffer.h",130,0,0,0
|
|
||||||
.stabs "ringbuffer:t(9,1)=(9,2)=s6read_pointer:(4,4),0,16;write_pointer:(4,4),16,16;size:(4,4),32,16;;",128,0,12,0
|
|
||||||
.stabn 162,0,0,0
|
|
||||||
.stabn 162,0,0,0
|
|
||||||
.section .text.main,"ax",@progbits
|
|
||||||
.stabs "main:F(0,1)",36,0,24,main
|
|
||||||
.global main
|
|
||||||
.type main, @function
|
|
||||||
main:
|
|
||||||
.stabd 46,0,0
|
|
||||||
.stabn 68,0,25,.LM0-.LFBB1
|
|
||||||
.LM0:
|
|
||||||
.LFBB1:
|
|
||||||
/* prologue: function */
|
|
||||||
/* frame size = 0 */
|
|
||||||
.stabn 68,0,27,.LM1-.LFBB1
|
|
||||||
.LM1:
|
|
||||||
ldi r24,lo8(serio)
|
|
||||||
ldi r25,hi8(serio)
|
|
||||||
sts (__iob)+1,r25
|
|
||||||
sts __iob,r24
|
|
||||||
.stabn 68,0,28,.LM2-.LFBB1
|
|
||||||
.LM2:
|
|
||||||
sts (__iob+2)+1,r25
|
|
||||||
sts __iob+2,r24
|
|
||||||
.stabn 68,0,29,.LM3-.LFBB1
|
|
||||||
.LM3:
|
|
||||||
sts (__iob+4)+1,r25
|
|
||||||
sts __iob+4,r24
|
|
||||||
.stabn 68,0,32,.LM4-.LFBB1
|
|
||||||
.LM4:
|
|
||||||
call serial_init
|
|
||||||
.stabn 68,0,34,.LM5-.LFBB1
|
|
||||||
.LM5:
|
|
||||||
/* #APP */
|
|
||||||
; 34 "mendel.c" 1
|
|
||||||
sei
|
|
||||||
; 0 "" 2
|
|
||||||
/* #NOAPP */
|
|
||||||
.L2:
|
|
||||||
rjmp .L2
|
|
||||||
.size main, .-main
|
|
||||||
.Lscope1:
|
|
||||||
.stabs "",36,0,0,.Lscope1-.LFBB1
|
|
||||||
.stabd 78,0,0
|
|
||||||
.section .text.serial_getc_fdev,"ax",@progbits
|
|
||||||
.stabs "serial_getc_fdev:F(0,1)",36,0,16,serial_getc_fdev
|
|
||||||
.stabs "stream:P(0,16)=*(2,1)",64,0,16,24
|
|
||||||
.global serial_getc_fdev
|
|
||||||
.type serial_getc_fdev, @function
|
|
||||||
serial_getc_fdev:
|
|
||||||
.stabd 46,0,0
|
|
||||||
.stabn 68,0,17,.LM6-.LFBB2
|
|
||||||
.LM6:
|
|
||||||
.LFBB2:
|
|
||||||
/* prologue: function */
|
|
||||||
/* frame size = 0 */
|
|
||||||
.L6:
|
|
||||||
.stabn 68,0,18,.LM7-.LFBB2
|
|
||||||
.LM7:
|
|
||||||
call serial_rxchars
|
|
||||||
sbiw r24,0
|
|
||||||
breq .L6
|
|
||||||
.stabn 68,0,19,.LM8-.LFBB2
|
|
||||||
.LM8:
|
|
||||||
call serial_popchar
|
|
||||||
.stabn 68,0,20,.LM9-.LFBB2
|
|
||||||
.LM9:
|
|
||||||
ldi r25,lo8(0)
|
|
||||||
/* epilogue start */
|
|
||||||
ret
|
|
||||||
.size serial_getc_fdev, .-serial_getc_fdev
|
|
||||||
.Lscope2:
|
|
||||||
.stabs "",36,0,0,.Lscope2-.LFBB2
|
|
||||||
.stabd 78,0,0
|
|
||||||
.section .text.serial_putc_fdev,"ax",@progbits
|
|
||||||
.stabs "serial_putc_fdev:F(0,1)",36,0,10,serial_putc_fdev
|
|
||||||
.stabs "c:P(0,2)",64,0,10,24
|
|
||||||
.stabs "stream:P(0,16)",64,0,10,22
|
|
||||||
.global serial_putc_fdev
|
|
||||||
.type serial_putc_fdev, @function
|
|
||||||
serial_putc_fdev:
|
|
||||||
.stabd 46,0,0
|
|
||||||
.stabn 68,0,11,.LM10-.LFBB3
|
|
||||||
.LM10:
|
|
||||||
.LFBB3:
|
|
||||||
/* prologue: function */
|
|
||||||
/* frame size = 0 */
|
|
||||||
.stabn 68,0,12,.LM11-.LFBB3
|
|
||||||
.LM11:
|
|
||||||
call serial_writechar
|
|
||||||
.stabn 68,0,14,.LM12-.LFBB3
|
|
||||||
.LM12:
|
|
||||||
ldi r24,lo8(0)
|
|
||||||
ldi r25,hi8(0)
|
|
||||||
/* epilogue start */
|
|
||||||
ret
|
|
||||||
.size serial_putc_fdev, .-serial_putc_fdev
|
|
||||||
.Lscope3:
|
|
||||||
.stabs "",36,0,0,.Lscope3-.LFBB3
|
|
||||||
.stabd 78,0,0
|
|
||||||
.data
|
|
||||||
.type serio, @object
|
|
||||||
.size serio, 14
|
|
||||||
serio:
|
|
||||||
.skip 3,0
|
|
||||||
.byte 3
|
|
||||||
.skip 4,0
|
|
||||||
.word gs(serial_putc_fdev)
|
|
||||||
.word gs(serial_getc_fdev)
|
|
||||||
.word 0
|
|
||||||
.stabs "serio:S(2,1)",38,0,22,serio
|
|
||||||
.text
|
|
||||||
.stabs "",100,0,0,.Letext0
|
|
||||||
.Letext0:
|
|
||||||
|
|
@ -1,274 +0,0 @@
|
||||||
# 1 "ringbuffer.c"
|
|
||||||
# 1 "/home/triffid/ATmega-Skeleton/mendel//"
|
|
||||||
# 1 "<built-in>"
|
|
||||||
# 1 "<command-line>"
|
|
||||||
# 1 "ringbuffer.c"
|
|
||||||
# 1 "ringbuffer.h" 1
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdint.h" 1 3
|
|
||||||
# 121 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdint.h" 3
|
|
||||||
typedef int int8_t __attribute__((__mode__(__QI__)));
|
|
||||||
typedef unsigned int uint8_t __attribute__((__mode__(__QI__)));
|
|
||||||
typedef int int16_t __attribute__ ((__mode__ (__HI__)));
|
|
||||||
typedef unsigned int uint16_t __attribute__ ((__mode__ (__HI__)));
|
|
||||||
typedef int int32_t __attribute__ ((__mode__ (__SI__)));
|
|
||||||
typedef unsigned int uint32_t __attribute__ ((__mode__ (__SI__)));
|
|
||||||
|
|
||||||
typedef int int64_t __attribute__((__mode__(__DI__)));
|
|
||||||
typedef unsigned int uint64_t __attribute__((__mode__(__DI__)));
|
|
||||||
# 142 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdint.h" 3
|
|
||||||
typedef int16_t intptr_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef uint16_t uintptr_t;
|
|
||||||
# 159 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdint.h" 3
|
|
||||||
typedef int8_t int_least8_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef uint8_t uint_least8_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef int16_t int_least16_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef uint16_t uint_least16_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef int32_t int_least32_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef uint32_t uint_least32_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef int64_t int_least64_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef uint64_t uint_least64_t;
|
|
||||||
# 213 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdint.h" 3
|
|
||||||
typedef int8_t int_fast8_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef uint8_t uint_fast8_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef int16_t int_fast16_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef uint16_t uint_fast16_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef int32_t int_fast32_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef uint32_t uint_fast32_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef int64_t int_fast64_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef uint64_t uint_fast64_t;
|
|
||||||
# 273 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdint.h" 3
|
|
||||||
typedef int64_t intmax_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef uint64_t uintmax_t;
|
|
||||||
# 5 "ringbuffer.h" 2
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/interrupt.h" 1 3
|
|
||||||
# 38 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/interrupt.h" 3
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h" 1 3
|
|
||||||
# 99 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h" 3
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/sfr_defs.h" 1 3
|
|
||||||
# 126 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/sfr_defs.h" 3
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/inttypes.h" 1 3
|
|
||||||
# 77 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/inttypes.h" 3
|
|
||||||
typedef int32_t int_farptr_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef uint32_t uint_farptr_t;
|
|
||||||
# 127 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/sfr_defs.h" 2 3
|
|
||||||
# 100 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h" 2 3
|
|
||||||
# 224 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h" 3
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/iom168.h" 1 3
|
|
||||||
# 36 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/iom168.h" 3
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/iomx8.h" 1 3
|
|
||||||
# 37 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/iom168.h" 2 3
|
|
||||||
# 225 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h" 2 3
|
|
||||||
# 334 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h" 3
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/portpins.h" 1 3
|
|
||||||
# 335 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h" 2 3
|
|
||||||
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/common.h" 1 3
|
|
||||||
# 337 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h" 2 3
|
|
||||||
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/version.h" 1 3
|
|
||||||
# 339 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h" 2 3
|
|
||||||
|
|
||||||
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/fuse.h" 1 3
|
|
||||||
# 234 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/fuse.h" 3
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
unsigned char low;
|
|
||||||
unsigned char high;
|
|
||||||
unsigned char extended;
|
|
||||||
} __fuse_t;
|
|
||||||
# 342 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h" 2 3
|
|
||||||
|
|
||||||
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/lock.h" 1 3
|
|
||||||
# 345 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h" 2 3
|
|
||||||
# 39 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/interrupt.h" 2 3
|
|
||||||
# 6 "ringbuffer.h" 2
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
uint16_t read_pointer;
|
|
||||||
uint16_t write_pointer;
|
|
||||||
uint16_t size;
|
|
||||||
uint8_t data[];
|
|
||||||
} ringbuffer;
|
|
||||||
|
|
||||||
void ringbuffer_init(ringbuffer *buf, int bufsize);
|
|
||||||
|
|
||||||
uint16_t ringbuffer_canread(ringbuffer *buf);
|
|
||||||
uint16_t ringbuffer_canwrite(ringbuffer *buf);
|
|
||||||
|
|
||||||
uint8_t ringbuffer_readchar(ringbuffer *buf);
|
|
||||||
uint8_t ringbuffer_peekchar(ringbuffer *buf, uint16_t index);
|
|
||||||
uint16_t ringbuffer_readblock(ringbuffer *buf, uint8_t *newbuf, int size);
|
|
||||||
|
|
||||||
void ringbuffer_writechar(ringbuffer *buf, uint8_t data);
|
|
||||||
uint16_t ringbuffer_writeblock(ringbuffer *buf, uint8_t *data, int size);
|
|
||||||
# 2 "ringbuffer.c" 2
|
|
||||||
|
|
||||||
uint16_t _rb_mod(uint16_t num, uint16_t denom)
|
|
||||||
{
|
|
||||||
for (; num >= denom; num -= denom);
|
|
||||||
return num;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ringbuffer_init(ringbuffer *buf, int bufsize)
|
|
||||||
{
|
|
||||||
buf->read_pointer = 0;
|
|
||||||
buf->write_pointer = 0;
|
|
||||||
buf->size = bufsize - sizeof(ringbuffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
uint16_t ringbuffer_canread(ringbuffer *buf)
|
|
||||||
{
|
|
||||||
return _rb_mod(buf->write_pointer + buf->size + buf->size - buf->read_pointer, buf->size);
|
|
||||||
}
|
|
||||||
|
|
||||||
uint16_t ringbuffer_canwrite(ringbuffer *buf)
|
|
||||||
{
|
|
||||||
return _rb_mod(buf->read_pointer + buf->size + buf->size - buf->write_pointer - 1, buf->size);
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t ringbuffer_readchar(ringbuffer *buf)
|
|
||||||
{
|
|
||||||
uint8_t r = 0;
|
|
||||||
if (ringbuffer_canread(buf))
|
|
||||||
{
|
|
||||||
r = buf->data[buf->read_pointer];
|
|
||||||
buf->read_pointer = _rb_mod(buf->read_pointer + 1, buf->size);
|
|
||||||
}
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ringbuffer_writechar(ringbuffer *buf, uint8_t data)
|
|
||||||
{
|
|
||||||
if (ringbuffer_canwrite(buf))
|
|
||||||
{
|
|
||||||
buf->data[buf->write_pointer] = data;
|
|
||||||
buf->write_pointer = _rb_mod(buf->write_pointer + 1, buf->size);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
uint8_t ringbuffer_peekchar(ringbuffer *buf, uint16_t index)
|
|
||||||
{
|
|
||||||
return buf->data[_rb_mod(buf->read_pointer + index, buf->size)];
|
|
||||||
}
|
|
||||||
|
|
||||||
uint16_t ringbuffer_readblock(ringbuffer *buf, uint8_t *newbuf, int size)
|
|
||||||
{
|
|
||||||
uint16_t nc, i;
|
|
||||||
uint8_t *rp, *ms;
|
|
||||||
if ((nc = ringbuffer_canread(buf)) < size)
|
|
||||||
size = nc;
|
|
||||||
if (size)
|
|
||||||
{
|
|
||||||
for (i = 0, rp = buf->data + buf->read_pointer, ms = buf->data + buf->size; i < size; i++, rp++)
|
|
||||||
{
|
|
||||||
if (rp >= ms)
|
|
||||||
rp = buf->data;
|
|
||||||
newbuf[i] = *rp;
|
|
||||||
}
|
|
||||||
buf->read_pointer = rp - buf->data;
|
|
||||||
}
|
|
||||||
return size;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint16_t ringbuffer_writeblock(ringbuffer *buf, uint8_t *data, int size)
|
|
||||||
{
|
|
||||||
uint16_t nc, i;
|
|
||||||
uint8_t *wp, *ms;
|
|
||||||
|
|
||||||
if ((nc = ringbuffer_canwrite(buf)) < size)
|
|
||||||
size = nc;
|
|
||||||
if (size)
|
|
||||||
{
|
|
||||||
for (i = 0, wp = buf->write_pointer + buf->data, ms = buf->data + buf->size; i < size; i++, wp++)
|
|
||||||
{
|
|
||||||
if (wp >= ms)
|
|
||||||
wp = buf->data;
|
|
||||||
*wp = data[i];
|
|
||||||
}
|
|
||||||
buf->write_pointer = wp - buf->data;
|
|
||||||
}
|
|
||||||
return size;
|
|
||||||
}
|
|
||||||
|
|
@ -1,738 +0,0 @@
|
||||||
.file "ringbuffer.c"
|
|
||||||
__SREG__ = 0x3f
|
|
||||||
__SP_H__ = 0x3e
|
|
||||||
__SP_L__ = 0x3d
|
|
||||||
__tmp_reg__ = 0
|
|
||||||
__zero_reg__ = 1
|
|
||||||
.global __do_copy_data
|
|
||||||
.global __do_clear_bss
|
|
||||||
.stabs "/home/triffid/ATmega-Skeleton/mendel/",100,0,2,.Ltext0
|
|
||||||
.stabs "ringbuffer.c",100,0,2,.Ltext0
|
|
||||||
.text
|
|
||||||
.Ltext0:
|
|
||||||
.stabs "gcc2_compiled.",60,0,0,0
|
|
||||||
.stabs "int:t(0,1)=r(0,1);-32768;32767;",128,0,1,0
|
|
||||||
.stabs "char:t(0,2)=@s8;r(0,2);0;255;",128,0,1,0
|
|
||||||
.stabs "long int:t(0,3)=@s32;r(0,3);020000000000;017777777777;",128,0,1,0
|
|
||||||
.stabs "unsigned int:t(0,4)=r(0,4);0;0177777;",128,0,1,0
|
|
||||||
.stabs "long unsigned int:t(0,5)=@s32;r(0,5);0;037777777777;",128,0,1,0
|
|
||||||
.stabs "long long int:t(0,6)=@s64;r(0,6);01000000000000000000000;0777777777777777777777;",128,0,1,0
|
|
||||||
.stabs "long long unsigned int:t(0,7)=@s64;r(0,7);0;01777777777777777777777;",128,0,1,0
|
|
||||||
.stabs "short int:t(0,8)=r(0,8);-32768;32767;",128,0,1,0
|
|
||||||
.stabs "short unsigned int:t(0,9)=r(0,9);0;0177777;",128,0,1,0
|
|
||||||
.stabs "signed char:t(0,10)=@s8;r(0,10);-128;127;",128,0,1,0
|
|
||||||
.stabs "unsigned char:t(0,11)=@s8;r(0,11);0;255;",128,0,1,0
|
|
||||||
.stabs "float:t(0,12)=r(0,1);4;0;",128,0,1,0
|
|
||||||
.stabs "double:t(0,13)=r(0,1);4;0;",128,0,1,0
|
|
||||||
.stabs "long double:t(0,14)=r(0,1);4;0;",128,0,1,0
|
|
||||||
.stabs "void:t(0,15)=(0,15)",128,0,1,0
|
|
||||||
.stabs "ringbuffer.h",130,0,0,0
|
|
||||||
.stabs "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdint.h",130,0,0,0
|
|
||||||
.stabs "int8_t:t(2,1)=(0,10)",128,0,121,0
|
|
||||||
.stabs "uint8_t:t(2,2)=(0,11)",128,0,122,0
|
|
||||||
.stabs "int16_t:t(2,3)=(0,1)",128,0,123,0
|
|
||||||
.stabs "uint16_t:t(2,4)=(0,4)",128,0,124,0
|
|
||||||
.stabs "int32_t:t(2,5)=(0,3)",128,0,125,0
|
|
||||||
.stabs "uint32_t:t(2,6)=(0,5)",128,0,126,0
|
|
||||||
.stabs "int64_t:t(2,7)=(0,6)",128,0,128,0
|
|
||||||
.stabs "uint64_t:t(2,8)=(0,7)",128,0,129,0
|
|
||||||
.stabs "intptr_t:t(2,9)=(2,3)",128,0,142,0
|
|
||||||
.stabs "uintptr_t:t(2,10)=(2,4)",128,0,147,0
|
|
||||||
.stabs "int_least8_t:t(2,11)=(2,1)",128,0,159,0
|
|
||||||
.stabs "uint_least8_t:t(2,12)=(2,2)",128,0,164,0
|
|
||||||
.stabs "int_least16_t:t(2,13)=(2,3)",128,0,169,0
|
|
||||||
.stabs "uint_least16_t:t(2,14)=(2,4)",128,0,174,0
|
|
||||||
.stabs "int_least32_t:t(2,15)=(2,5)",128,0,179,0
|
|
||||||
.stabs "uint_least32_t:t(2,16)=(2,6)",128,0,184,0
|
|
||||||
.stabs "int_least64_t:t(2,17)=(2,7)",128,0,192,0
|
|
||||||
.stabs "uint_least64_t:t(2,18)=(2,8)",128,0,199,0
|
|
||||||
.stabs "int_fast8_t:t(2,19)=(2,1)",128,0,213,0
|
|
||||||
.stabs "uint_fast8_t:t(2,20)=(2,2)",128,0,218,0
|
|
||||||
.stabs "int_fast16_t:t(2,21)=(2,3)",128,0,223,0
|
|
||||||
.stabs "uint_fast16_t:t(2,22)=(2,4)",128,0,228,0
|
|
||||||
.stabs "int_fast32_t:t(2,23)=(2,5)",128,0,233,0
|
|
||||||
.stabs "uint_fast32_t:t(2,24)=(2,6)",128,0,238,0
|
|
||||||
.stabs "int_fast64_t:t(2,25)=(2,7)",128,0,246,0
|
|
||||||
.stabs "uint_fast64_t:t(2,26)=(2,8)",128,0,253,0
|
|
||||||
.stabs "intmax_t:t(2,27)=(2,7)",128,0,273,0
|
|
||||||
.stabs "uintmax_t:t(2,28)=(2,8)",128,0,278,0
|
|
||||||
.stabn 162,0,0,0
|
|
||||||
.stabs "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/interrupt.h",130,0,0,0
|
|
||||||
.stabs "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h",130,0,0,0
|
|
||||||
.stabs "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/sfr_defs.h",130,0,0,0
|
|
||||||
.stabs "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/inttypes.h",130,0,0,0
|
|
||||||
.stabs "int_farptr_t:t(6,1)=(2,5)",128,0,77,0
|
|
||||||
.stabs "uint_farptr_t:t(6,2)=(2,6)",128,0,81,0
|
|
||||||
.stabn 162,0,0,0
|
|
||||||
.stabn 162,0,0,0
|
|
||||||
.stabs "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/fuse.h",130,0,0,0
|
|
||||||
.stabs "__fuse_t:t(7,1)=(7,2)=s3low:(0,11),0,8;high:(0,11),8,8;extended:(0,11),16,8;;",128,0,239,0
|
|
||||||
.stabn 162,0,0,0
|
|
||||||
.stabn 162,0,0,0
|
|
||||||
.stabn 162,0,0,0
|
|
||||||
.stabs "ringbuffer:t(1,1)=(1,2)=s6read_pointer:(2,4),0,16;write_pointer:(2,4),16,16;size:(2,4),32,16;;",128,0,12,0
|
|
||||||
.stabn 162,0,0,0
|
|
||||||
.section .text._rb_mod,"ax",@progbits
|
|
||||||
.stabs "_rb_mod:F(2,4)",36,0,3,_rb_mod
|
|
||||||
.stabs "num:P(2,4)",64,0,3,18
|
|
||||||
.stabs "denom:P(2,4)",64,0,3,22
|
|
||||||
.global _rb_mod
|
|
||||||
.type _rb_mod, @function
|
|
||||||
_rb_mod:
|
|
||||||
.stabd 46,0,0
|
|
||||||
.stabn 68,0,4,.LM0-.LFBB1
|
|
||||||
.LM0:
|
|
||||||
.LFBB1:
|
|
||||||
/* prologue: function */
|
|
||||||
/* frame size = 0 */
|
|
||||||
movw r18,r24
|
|
||||||
.stabn 68,0,5,.LM1-.LFBB1
|
|
||||||
.LM1:
|
|
||||||
rjmp .L2
|
|
||||||
.L3:
|
|
||||||
sub r18,r22
|
|
||||||
sbc r19,r23
|
|
||||||
.L2:
|
|
||||||
cp r18,r22
|
|
||||||
cpc r19,r23
|
|
||||||
brsh .L3
|
|
||||||
.stabn 68,0,7,.LM2-.LFBB1
|
|
||||||
.LM2:
|
|
||||||
movw r24,r18
|
|
||||||
/* epilogue start */
|
|
||||||
ret
|
|
||||||
.size _rb_mod, .-_rb_mod
|
|
||||||
.Lscope1:
|
|
||||||
.stabs "",36,0,0,.Lscope1-.LFBB1
|
|
||||||
.stabd 78,0,0
|
|
||||||
.section .text.ringbuffer_init,"ax",@progbits
|
|
||||||
.stabs "ringbuffer_init:F(0,15)",36,0,9,ringbuffer_init
|
|
||||||
.stabs "buf:P(0,16)=*(1,1)",64,0,9,30
|
|
||||||
.stabs "bufsize:P(0,1)",64,0,9,22
|
|
||||||
.global ringbuffer_init
|
|
||||||
.type ringbuffer_init, @function
|
|
||||||
ringbuffer_init:
|
|
||||||
.stabd 46,0,0
|
|
||||||
.stabn 68,0,10,.LM3-.LFBB2
|
|
||||||
.LM3:
|
|
||||||
.LFBB2:
|
|
||||||
/* prologue: function */
|
|
||||||
/* frame size = 0 */
|
|
||||||
movw r30,r24
|
|
||||||
.stabn 68,0,11,.LM4-.LFBB2
|
|
||||||
.LM4:
|
|
||||||
std Z+1,__zero_reg__
|
|
||||||
st Z,__zero_reg__
|
|
||||||
.stabn 68,0,12,.LM5-.LFBB2
|
|
||||||
.LM5:
|
|
||||||
std Z+3,__zero_reg__
|
|
||||||
std Z+2,__zero_reg__
|
|
||||||
.stabn 68,0,13,.LM6-.LFBB2
|
|
||||||
.LM6:
|
|
||||||
subi r22,lo8(-(-6))
|
|
||||||
sbci r23,hi8(-(-6))
|
|
||||||
std Z+5,r23
|
|
||||||
std Z+4,r22
|
|
||||||
/* epilogue start */
|
|
||||||
.stabn 68,0,14,.LM7-.LFBB2
|
|
||||||
.LM7:
|
|
||||||
ret
|
|
||||||
.size ringbuffer_init, .-ringbuffer_init
|
|
||||||
.Lscope2:
|
|
||||||
.stabs "",36,0,0,.Lscope2-.LFBB2
|
|
||||||
.stabd 78,0,0
|
|
||||||
.section .text.ringbuffer_canread,"ax",@progbits
|
|
||||||
.stabs "ringbuffer_canread:F(2,4)",36,0,16,ringbuffer_canread
|
|
||||||
.stabs "buf:P(0,16)",64,0,16,30
|
|
||||||
.global ringbuffer_canread
|
|
||||||
.type ringbuffer_canread, @function
|
|
||||||
ringbuffer_canread:
|
|
||||||
.stabd 46,0,0
|
|
||||||
.stabn 68,0,17,.LM8-.LFBB3
|
|
||||||
.LM8:
|
|
||||||
.LFBB3:
|
|
||||||
/* prologue: function */
|
|
||||||
/* frame size = 0 */
|
|
||||||
movw r30,r24
|
|
||||||
.stabn 68,0,18,.LM9-.LFBB3
|
|
||||||
.LM9:
|
|
||||||
ldd r20,Z+4
|
|
||||||
ldd r21,Z+5
|
|
||||||
ldd r18,Z+2
|
|
||||||
ldd r19,Z+3
|
|
||||||
add r18,r20
|
|
||||||
adc r19,r21
|
|
||||||
add r18,r20
|
|
||||||
adc r19,r21
|
|
||||||
ld r24,Z
|
|
||||||
ldd r25,Z+1
|
|
||||||
sub r18,r24
|
|
||||||
sbc r19,r25
|
|
||||||
rjmp .L9
|
|
||||||
.L10:
|
|
||||||
.LBB20:
|
|
||||||
.LBB21:
|
|
||||||
.stabn 68,0,5,.LM10-.LFBB3
|
|
||||||
.LM10:
|
|
||||||
sub r18,r20
|
|
||||||
sbc r19,r21
|
|
||||||
.L9:
|
|
||||||
cp r18,r20
|
|
||||||
cpc r19,r21
|
|
||||||
brsh .L10
|
|
||||||
.LBE21:
|
|
||||||
.LBE20:
|
|
||||||
.stabn 68,0,19,.LM11-.LFBB3
|
|
||||||
.LM11:
|
|
||||||
movw r24,r18
|
|
||||||
/* epilogue start */
|
|
||||||
ret
|
|
||||||
.size ringbuffer_canread, .-ringbuffer_canread
|
|
||||||
.stabs "num:r(2,4)",64,0,18,18
|
|
||||||
.stabn 192,0,0,.LBB20-.LFBB3
|
|
||||||
.stabn 224,0,0,.LBE20-.LFBB3
|
|
||||||
.Lscope3:
|
|
||||||
.stabs "",36,0,0,.Lscope3-.LFBB3
|
|
||||||
.stabd 78,0,0
|
|
||||||
.section .text.ringbuffer_canwrite,"ax",@progbits
|
|
||||||
.stabs "ringbuffer_canwrite:F(2,4)",36,0,21,ringbuffer_canwrite
|
|
||||||
.stabs "buf:P(0,16)",64,0,21,30
|
|
||||||
.global ringbuffer_canwrite
|
|
||||||
.type ringbuffer_canwrite, @function
|
|
||||||
ringbuffer_canwrite:
|
|
||||||
.stabd 46,0,0
|
|
||||||
.stabn 68,0,22,.LM12-.LFBB4
|
|
||||||
.LM12:
|
|
||||||
.LFBB4:
|
|
||||||
/* prologue: function */
|
|
||||||
/* frame size = 0 */
|
|
||||||
movw r30,r24
|
|
||||||
.stabn 68,0,23,.LM13-.LFBB4
|
|
||||||
.LM13:
|
|
||||||
ldd r20,Z+4
|
|
||||||
ldd r21,Z+5
|
|
||||||
ld r18,Z
|
|
||||||
ldd r19,Z+1
|
|
||||||
add r18,r20
|
|
||||||
adc r19,r21
|
|
||||||
subi r18,lo8(-(-1))
|
|
||||||
sbci r19,hi8(-(-1))
|
|
||||||
add r18,r20
|
|
||||||
adc r19,r21
|
|
||||||
ldd r24,Z+2
|
|
||||||
ldd r25,Z+3
|
|
||||||
sub r18,r24
|
|
||||||
sbc r19,r25
|
|
||||||
rjmp .L13
|
|
||||||
.L14:
|
|
||||||
.LBB22:
|
|
||||||
.LBB23:
|
|
||||||
.stabn 68,0,5,.LM14-.LFBB4
|
|
||||||
.LM14:
|
|
||||||
sub r18,r20
|
|
||||||
sbc r19,r21
|
|
||||||
.L13:
|
|
||||||
cp r18,r20
|
|
||||||
cpc r19,r21
|
|
||||||
brsh .L14
|
|
||||||
.LBE23:
|
|
||||||
.LBE22:
|
|
||||||
.stabn 68,0,24,.LM15-.LFBB4
|
|
||||||
.LM15:
|
|
||||||
movw r24,r18
|
|
||||||
/* epilogue start */
|
|
||||||
ret
|
|
||||||
.size ringbuffer_canwrite, .-ringbuffer_canwrite
|
|
||||||
.stabs "num:r(2,4)",64,0,23,18
|
|
||||||
.stabn 192,0,0,.LBB22-.LFBB4
|
|
||||||
.stabn 224,0,0,.LBE22-.LFBB4
|
|
||||||
.Lscope4:
|
|
||||||
.stabs "",36,0,0,.Lscope4-.LFBB4
|
|
||||||
.stabd 78,0,0
|
|
||||||
.section .text.ringbuffer_readchar,"ax",@progbits
|
|
||||||
.stabs "ringbuffer_readchar:F(2,2)",36,0,26,ringbuffer_readchar
|
|
||||||
.stabs "buf:P(0,16)",64,0,26,30
|
|
||||||
.global ringbuffer_readchar
|
|
||||||
.type ringbuffer_readchar, @function
|
|
||||||
ringbuffer_readchar:
|
|
||||||
.stabd 46,0,0
|
|
||||||
.stabn 68,0,27,.LM16-.LFBB5
|
|
||||||
.LM16:
|
|
||||||
.LFBB5:
|
|
||||||
/* prologue: function */
|
|
||||||
/* frame size = 0 */
|
|
||||||
movw r30,r24
|
|
||||||
.LBB24:
|
|
||||||
.LBB25:
|
|
||||||
.stabn 68,0,18,.LM17-.LFBB5
|
|
||||||
.LM17:
|
|
||||||
ldd r20,Z+4
|
|
||||||
ldd r21,Z+5
|
|
||||||
ld r22,Z
|
|
||||||
ldd r23,Z+1
|
|
||||||
ldd r18,Z+2
|
|
||||||
ldd r19,Z+3
|
|
||||||
add r18,r20
|
|
||||||
adc r19,r21
|
|
||||||
add r18,r20
|
|
||||||
adc r19,r21
|
|
||||||
sub r18,r22
|
|
||||||
sbc r19,r23
|
|
||||||
rjmp .L17
|
|
||||||
.L18:
|
|
||||||
.LBB26:
|
|
||||||
.LBB27:
|
|
||||||
.stabn 68,0,5,.LM18-.LFBB5
|
|
||||||
.LM18:
|
|
||||||
sub r18,r20
|
|
||||||
sbc r19,r21
|
|
||||||
.L17:
|
|
||||||
cp r18,r20
|
|
||||||
cpc r19,r21
|
|
||||||
brsh .L18
|
|
||||||
.LBE27:
|
|
||||||
.LBE26:
|
|
||||||
.LBE25:
|
|
||||||
.LBE24:
|
|
||||||
.stabn 68,0,29,.LM19-.LFBB5
|
|
||||||
.LM19:
|
|
||||||
cp r18,__zero_reg__
|
|
||||||
cpc r19,__zero_reg__
|
|
||||||
brne .L19
|
|
||||||
ldi r24,lo8(0)
|
|
||||||
ret
|
|
||||||
.L19:
|
|
||||||
.stabn 68,0,31,.LM20-.LFBB5
|
|
||||||
.LM20:
|
|
||||||
movw r26,r30
|
|
||||||
add r26,r22
|
|
||||||
adc r27,r23
|
|
||||||
adiw r26,6
|
|
||||||
ld r24,X
|
|
||||||
sbiw r26,6
|
|
||||||
.stabn 68,0,32,.LM21-.LFBB5
|
|
||||||
.LM21:
|
|
||||||
movw r18,r22
|
|
||||||
subi r18,lo8(-(1))
|
|
||||||
sbci r19,hi8(-(1))
|
|
||||||
rjmp .L21
|
|
||||||
.L22:
|
|
||||||
.LBB28:
|
|
||||||
.LBB29:
|
|
||||||
.stabn 68,0,5,.LM22-.LFBB5
|
|
||||||
.LM22:
|
|
||||||
sub r18,r20
|
|
||||||
sbc r19,r21
|
|
||||||
.L21:
|
|
||||||
cp r18,r20
|
|
||||||
cpc r19,r21
|
|
||||||
brsh .L22
|
|
||||||
.LBE29:
|
|
||||||
.LBE28:
|
|
||||||
.stabn 68,0,32,.LM23-.LFBB5
|
|
||||||
.LM23:
|
|
||||||
std Z+1,r19
|
|
||||||
st Z,r18
|
|
||||||
.stabn 68,0,35,.LM24-.LFBB5
|
|
||||||
.LM24:
|
|
||||||
ret
|
|
||||||
.size ringbuffer_readchar, .-ringbuffer_readchar
|
|
||||||
.stabs "r:r(2,2)",64,0,28,24
|
|
||||||
.stabn 192,0,0,.LFBB5-.LFBB5
|
|
||||||
.stabs "num:r(2,4)",64,0,18,18
|
|
||||||
.stabn 192,0,0,.LBB26-.LFBB5
|
|
||||||
.stabn 224,0,0,.LBE26-.LFBB5
|
|
||||||
.stabs "num:r(2,4)",64,0,32,18
|
|
||||||
.stabn 192,0,0,.LBB28-.LFBB5
|
|
||||||
.stabn 224,0,0,.LBE28-.LFBB5
|
|
||||||
.stabn 224,0,0,.Lscope5-.LFBB5
|
|
||||||
.Lscope5:
|
|
||||||
.stabs "",36,0,0,.Lscope5-.LFBB5
|
|
||||||
.stabd 78,0,0
|
|
||||||
.section .text.ringbuffer_writechar,"ax",@progbits
|
|
||||||
.stabs "ringbuffer_writechar:F(0,15)",36,0,37,ringbuffer_writechar
|
|
||||||
.stabs "buf:P(0,16)",64,0,37,16
|
|
||||||
.stabs "data:P(2,2)",64,0,37,22
|
|
||||||
.global ringbuffer_writechar
|
|
||||||
.type ringbuffer_writechar, @function
|
|
||||||
ringbuffer_writechar:
|
|
||||||
.stabd 46,0,0
|
|
||||||
.stabn 68,0,38,.LM25-.LFBB6
|
|
||||||
.LM25:
|
|
||||||
.LFBB6:
|
|
||||||
push r16
|
|
||||||
push r17
|
|
||||||
push r29
|
|
||||||
push r28
|
|
||||||
push __tmp_reg__
|
|
||||||
in r28,__SP_L__
|
|
||||||
in r29,__SP_H__
|
|
||||||
/* prologue: function */
|
|
||||||
/* frame size = 1 */
|
|
||||||
movw r16,r24
|
|
||||||
.stabn 68,0,39,.LM26-.LFBB6
|
|
||||||
.LM26:
|
|
||||||
std Y+1,r22
|
|
||||||
call ringbuffer_canwrite
|
|
||||||
ldd r22,Y+1
|
|
||||||
sbiw r24,0
|
|
||||||
breq .L28
|
|
||||||
.stabn 68,0,41,.LM27-.LFBB6
|
|
||||||
.LM27:
|
|
||||||
movw r30,r16
|
|
||||||
ldd r24,Z+2
|
|
||||||
ldd r25,Z+3
|
|
||||||
add r30,r24
|
|
||||||
adc r31,r25
|
|
||||||
std Z+6,r22
|
|
||||||
.stabn 68,0,42,.LM28-.LFBB6
|
|
||||||
.LM28:
|
|
||||||
adiw r24,1
|
|
||||||
movw r30,r16
|
|
||||||
ldd r18,Z+4
|
|
||||||
ldd r19,Z+5
|
|
||||||
rjmp .L26
|
|
||||||
.L27:
|
|
||||||
.LBB30:
|
|
||||||
.LBB31:
|
|
||||||
.stabn 68,0,5,.LM29-.LFBB6
|
|
||||||
.LM29:
|
|
||||||
sub r24,r18
|
|
||||||
sbc r25,r19
|
|
||||||
.L26:
|
|
||||||
cp r24,r18
|
|
||||||
cpc r25,r19
|
|
||||||
brsh .L27
|
|
||||||
.LBE31:
|
|
||||||
.LBE30:
|
|
||||||
.stabn 68,0,42,.LM30-.LFBB6
|
|
||||||
.LM30:
|
|
||||||
movw r30,r16
|
|
||||||
std Z+3,r25
|
|
||||||
std Z+2,r24
|
|
||||||
.L28:
|
|
||||||
/* epilogue start */
|
|
||||||
.stabn 68,0,44,.LM31-.LFBB6
|
|
||||||
.LM31:
|
|
||||||
pop __tmp_reg__
|
|
||||||
pop r28
|
|
||||||
pop r29
|
|
||||||
pop r17
|
|
||||||
pop r16
|
|
||||||
ret
|
|
||||||
.size ringbuffer_writechar, .-ringbuffer_writechar
|
|
||||||
.stabs "num:r(2,4)",64,0,42,24
|
|
||||||
.stabn 192,0,0,.LBB30-.LFBB6
|
|
||||||
.stabn 224,0,0,.LBE30-.LFBB6
|
|
||||||
.Lscope6:
|
|
||||||
.stabs "",36,0,0,.Lscope6-.LFBB6
|
|
||||||
.stabd 78,0,0
|
|
||||||
.section .text.ringbuffer_peekchar,"ax",@progbits
|
|
||||||
.stabs "ringbuffer_peekchar:F(2,2)",36,0,47,ringbuffer_peekchar
|
|
||||||
.stabs "buf:P(0,16)",64,0,47,30
|
|
||||||
.stabs "index:P(2,4)",64,0,47,22
|
|
||||||
.global ringbuffer_peekchar
|
|
||||||
.type ringbuffer_peekchar, @function
|
|
||||||
ringbuffer_peekchar:
|
|
||||||
.stabd 46,0,0
|
|
||||||
.stabn 68,0,48,.LM32-.LFBB7
|
|
||||||
.LM32:
|
|
||||||
.LFBB7:
|
|
||||||
/* prologue: function */
|
|
||||||
/* frame size = 0 */
|
|
||||||
movw r30,r24
|
|
||||||
.stabn 68,0,49,.LM33-.LFBB7
|
|
||||||
.LM33:
|
|
||||||
ld r24,Z
|
|
||||||
ldd r25,Z+1
|
|
||||||
add r22,r24
|
|
||||||
adc r23,r25
|
|
||||||
ldd r24,Z+4
|
|
||||||
ldd r25,Z+5
|
|
||||||
rjmp .L30
|
|
||||||
.L31:
|
|
||||||
.LBB32:
|
|
||||||
.LBB33:
|
|
||||||
.stabn 68,0,5,.LM34-.LFBB7
|
|
||||||
.LM34:
|
|
||||||
sub r22,r24
|
|
||||||
sbc r23,r25
|
|
||||||
.L30:
|
|
||||||
cp r22,r24
|
|
||||||
cpc r23,r25
|
|
||||||
brsh .L31
|
|
||||||
add r30,r22
|
|
||||||
adc r31,r23
|
|
||||||
.LBE33:
|
|
||||||
.LBE32:
|
|
||||||
.stabn 68,0,50,.LM35-.LFBB7
|
|
||||||
.LM35:
|
|
||||||
ldd r24,Z+6
|
|
||||||
/* epilogue start */
|
|
||||||
ret
|
|
||||||
.size ringbuffer_peekchar, .-ringbuffer_peekchar
|
|
||||||
.stabs "num:r(2,4)",64,0,49,22
|
|
||||||
.stabn 192,0,0,.LBB32-.LFBB7
|
|
||||||
.stabn 224,0,0,.LBE32-.LFBB7
|
|
||||||
.Lscope7:
|
|
||||||
.stabs "",36,0,0,.Lscope7-.LFBB7
|
|
||||||
.stabd 78,0,0
|
|
||||||
.section .text.ringbuffer_readblock,"ax",@progbits
|
|
||||||
.stabs "ringbuffer_readblock:F(2,4)",36,0,52,ringbuffer_readblock
|
|
||||||
.stabs "buf:P(0,16)",64,0,52,30
|
|
||||||
.stabs "newbuf:P(0,17)=*(2,2)",64,0,52,22
|
|
||||||
.stabs "size:P(0,1)",64,0,52,20
|
|
||||||
.global ringbuffer_readblock
|
|
||||||
.type ringbuffer_readblock, @function
|
|
||||||
ringbuffer_readblock:
|
|
||||||
.stabd 46,0,0
|
|
||||||
.stabn 68,0,53,.LM36-.LFBB8
|
|
||||||
.LM36:
|
|
||||||
.LFBB8:
|
|
||||||
push r12
|
|
||||||
push r13
|
|
||||||
push r15
|
|
||||||
push r16
|
|
||||||
push r17
|
|
||||||
push r28
|
|
||||||
push r29
|
|
||||||
/* prologue: function */
|
|
||||||
/* frame size = 0 */
|
|
||||||
movw r30,r24
|
|
||||||
.LBB34:
|
|
||||||
.LBB35:
|
|
||||||
.stabn 68,0,18,.LM37-.LFBB8
|
|
||||||
.LM37:
|
|
||||||
ldd r18,Z+4
|
|
||||||
ldd r19,Z+5
|
|
||||||
ld r26,Z
|
|
||||||
ldd r27,Z+1
|
|
||||||
ldd r24,Z+2
|
|
||||||
ldd r25,Z+3
|
|
||||||
add r24,r18
|
|
||||||
adc r25,r19
|
|
||||||
add r24,r18
|
|
||||||
adc r25,r19
|
|
||||||
sub r24,r26
|
|
||||||
sbc r25,r27
|
|
||||||
rjmp .L34
|
|
||||||
.L35:
|
|
||||||
.LBB36:
|
|
||||||
.LBB37:
|
|
||||||
.stabn 68,0,5,.LM38-.LFBB8
|
|
||||||
.LM38:
|
|
||||||
sub r24,r18
|
|
||||||
sbc r25,r19
|
|
||||||
.L34:
|
|
||||||
cp r24,r18
|
|
||||||
cpc r25,r19
|
|
||||||
brsh .L35
|
|
||||||
.LBE37:
|
|
||||||
.LBE36:
|
|
||||||
.LBE35:
|
|
||||||
.LBE34:
|
|
||||||
.stabn 68,0,56,.LM39-.LFBB8
|
|
||||||
.LM39:
|
|
||||||
cp r24,r20
|
|
||||||
cpc r25,r21
|
|
||||||
brsh .L36
|
|
||||||
.stabn 68,0,57,.LM40-.LFBB8
|
|
||||||
.LM40:
|
|
||||||
movw r20,r24
|
|
||||||
.L36:
|
|
||||||
.stabn 68,0,58,.LM41-.LFBB8
|
|
||||||
.LM41:
|
|
||||||
cp r20,__zero_reg__
|
|
||||||
cpc r21,__zero_reg__
|
|
||||||
breq .L37
|
|
||||||
.stabn 68,0,60,.LM42-.LFBB8
|
|
||||||
.LM42:
|
|
||||||
adiw r26,6
|
|
||||||
add r26,r30
|
|
||||||
adc r27,r31
|
|
||||||
subi r18,lo8(-(6))
|
|
||||||
sbci r19,hi8(-(6))
|
|
||||||
add r18,r30
|
|
||||||
adc r19,r31
|
|
||||||
.stabn 68,0,63,.LM43-.LFBB8
|
|
||||||
.LM43:
|
|
||||||
ldi r24,lo8(6)
|
|
||||||
mov r12,r24
|
|
||||||
mov r13,__zero_reg__
|
|
||||||
add r12,r30
|
|
||||||
adc r13,r31
|
|
||||||
ldi r24,lo8(0)
|
|
||||||
ldi r25,hi8(0)
|
|
||||||
.stabn 68,0,60,.LM44-.LFBB8
|
|
||||||
.LM44:
|
|
||||||
rjmp .L38
|
|
||||||
.L40:
|
|
||||||
.stabn 68,0,62,.LM45-.LFBB8
|
|
||||||
.LM45:
|
|
||||||
cp r26,r18
|
|
||||||
cpc r27,r19
|
|
||||||
brlo .L39
|
|
||||||
movw r26,r12
|
|
||||||
.L39:
|
|
||||||
.stabn 68,0,64,.LM46-.LFBB8
|
|
||||||
.LM46:
|
|
||||||
movw r16,r22
|
|
||||||
add r16,r24
|
|
||||||
adc r17,r25
|
|
||||||
ld r15,X+
|
|
||||||
movw r28,r16
|
|
||||||
st Y,r15
|
|
||||||
.stabn 68,0,60,.LM47-.LFBB8
|
|
||||||
.LM47:
|
|
||||||
adiw r24,1
|
|
||||||
.L38:
|
|
||||||
cp r24,r20
|
|
||||||
cpc r25,r21
|
|
||||||
brlo .L40
|
|
||||||
.stabn 68,0,66,.LM48-.LFBB8
|
|
||||||
.LM48:
|
|
||||||
movw r24,r30
|
|
||||||
adiw r24,6
|
|
||||||
sub r26,r24
|
|
||||||
sbc r27,r25
|
|
||||||
std Z+1,r27
|
|
||||||
st Z,r26
|
|
||||||
.L37:
|
|
||||||
.stabn 68,0,69,.LM49-.LFBB8
|
|
||||||
.LM49:
|
|
||||||
movw r24,r20
|
|
||||||
/* epilogue start */
|
|
||||||
pop r29
|
|
||||||
pop r28
|
|
||||||
pop r17
|
|
||||||
pop r16
|
|
||||||
pop r15
|
|
||||||
pop r13
|
|
||||||
pop r12
|
|
||||||
ret
|
|
||||||
.size ringbuffer_readblock, .-ringbuffer_readblock
|
|
||||||
.stabs "nc:r(2,4)",64,0,54,24
|
|
||||||
.stabs "i:r(2,4)",64,0,54,24
|
|
||||||
.stabs "rp:r(0,17)",64,0,55,26
|
|
||||||
.stabs "ms:r(0,17)",64,0,55,18
|
|
||||||
.stabn 192,0,0,.LFBB8-.LFBB8
|
|
||||||
.stabn 224,0,0,.Lscope8-.LFBB8
|
|
||||||
.Lscope8:
|
|
||||||
.stabs "",36,0,0,.Lscope8-.LFBB8
|
|
||||||
.stabd 78,0,0
|
|
||||||
.section .text.ringbuffer_writeblock,"ax",@progbits
|
|
||||||
.stabs "ringbuffer_writeblock:F(2,4)",36,0,71,ringbuffer_writeblock
|
|
||||||
.stabs "buf:P(0,16)",64,0,71,28
|
|
||||||
.stabs "data:P(0,17)",64,0,71,16
|
|
||||||
.stabs "size:P(0,1)",64,0,71,14
|
|
||||||
.global ringbuffer_writeblock
|
|
||||||
.type ringbuffer_writeblock, @function
|
|
||||||
ringbuffer_writeblock:
|
|
||||||
.stabd 46,0,0
|
|
||||||
.stabn 68,0,72,.LM50-.LFBB9
|
|
||||||
.LM50:
|
|
||||||
.LFBB9:
|
|
||||||
push r14
|
|
||||||
push r15
|
|
||||||
push r16
|
|
||||||
push r17
|
|
||||||
push r28
|
|
||||||
push r29
|
|
||||||
/* prologue: function */
|
|
||||||
/* frame size = 0 */
|
|
||||||
movw r28,r24
|
|
||||||
movw r16,r22
|
|
||||||
movw r14,r20
|
|
||||||
.stabn 68,0,76,.LM51-.LFBB9
|
|
||||||
.LM51:
|
|
||||||
call ringbuffer_canwrite
|
|
||||||
cp r24,r14
|
|
||||||
cpc r25,r15
|
|
||||||
brsh .L43
|
|
||||||
.stabn 68,0,77,.LM52-.LFBB9
|
|
||||||
.LM52:
|
|
||||||
movw r14,r24
|
|
||||||
.L43:
|
|
||||||
.stabn 68,0,78,.LM53-.LFBB9
|
|
||||||
.LM53:
|
|
||||||
cp r14,__zero_reg__
|
|
||||||
cpc r15,__zero_reg__
|
|
||||||
breq .L44
|
|
||||||
.stabn 68,0,80,.LM54-.LFBB9
|
|
||||||
.LM54:
|
|
||||||
ldd r30,Y+2
|
|
||||||
ldd r31,Y+3
|
|
||||||
adiw r30,6
|
|
||||||
add r30,r28
|
|
||||||
adc r31,r29
|
|
||||||
ldd r24,Y+4
|
|
||||||
ldd r25,Y+5
|
|
||||||
adiw r24,6
|
|
||||||
add r24,r28
|
|
||||||
adc r25,r29
|
|
||||||
.stabn 68,0,83,.LM55-.LFBB9
|
|
||||||
.LM55:
|
|
||||||
movw r20,r28
|
|
||||||
subi r20,lo8(-(6))
|
|
||||||
sbci r21,hi8(-(6))
|
|
||||||
ldi r18,lo8(0)
|
|
||||||
ldi r19,hi8(0)
|
|
||||||
.stabn 68,0,80,.LM56-.LFBB9
|
|
||||||
.LM56:
|
|
||||||
rjmp .L45
|
|
||||||
.L47:
|
|
||||||
.stabn 68,0,82,.LM57-.LFBB9
|
|
||||||
.LM57:
|
|
||||||
cp r30,r24
|
|
||||||
cpc r31,r25
|
|
||||||
brlo .L46
|
|
||||||
movw r30,r20
|
|
||||||
.L46:
|
|
||||||
.stabn 68,0,84,.LM58-.LFBB9
|
|
||||||
.LM58:
|
|
||||||
movw r26,r16
|
|
||||||
add r26,r18
|
|
||||||
adc r27,r19
|
|
||||||
ld r22,X
|
|
||||||
st Z+,r22
|
|
||||||
.stabn 68,0,80,.LM59-.LFBB9
|
|
||||||
.LM59:
|
|
||||||
subi r18,lo8(-(1))
|
|
||||||
sbci r19,hi8(-(1))
|
|
||||||
.L45:
|
|
||||||
cp r18,r14
|
|
||||||
cpc r19,r15
|
|
||||||
brlo .L47
|
|
||||||
.stabn 68,0,86,.LM60-.LFBB9
|
|
||||||
.LM60:
|
|
||||||
movw r24,r28
|
|
||||||
adiw r24,6
|
|
||||||
sub r30,r24
|
|
||||||
sbc r31,r25
|
|
||||||
std Y+3,r31
|
|
||||||
std Y+2,r30
|
|
||||||
.L44:
|
|
||||||
.stabn 68,0,89,.LM61-.LFBB9
|
|
||||||
.LM61:
|
|
||||||
movw r24,r14
|
|
||||||
/* epilogue start */
|
|
||||||
pop r29
|
|
||||||
pop r28
|
|
||||||
pop r17
|
|
||||||
pop r16
|
|
||||||
pop r15
|
|
||||||
pop r14
|
|
||||||
ret
|
|
||||||
.size ringbuffer_writeblock, .-ringbuffer_writeblock
|
|
||||||
.stabs "nc:r(2,4)",64,0,73,24
|
|
||||||
.stabs "i:r(2,4)",64,0,73,18
|
|
||||||
.stabs "wp:r(0,17)",64,0,74,30
|
|
||||||
.stabs "ms:r(0,17)",64,0,74,24
|
|
||||||
.stabn 192,0,0,.LFBB9-.LFBB9
|
|
||||||
.stabn 224,0,0,.Lscope9-.LFBB9
|
|
||||||
.Lscope9:
|
|
||||||
.stabs "",36,0,0,.Lscope9-.LFBB9
|
|
||||||
.stabd 78,0,0
|
|
||||||
.text
|
|
||||||
.stabs "",100,0,0,.Letext0
|
|
||||||
.Letext0:
|
|
||||||
280
mendel/serial.i
280
mendel/serial.i
|
|
@ -1,280 +0,0 @@
|
||||||
# 1 "serial.c"
|
|
||||||
# 1 "/home/triffid/ATmega-Skeleton/mendel//"
|
|
||||||
# 1 "<built-in>"
|
|
||||||
# 1 "<command-line>"
|
|
||||||
# 1 "serial.c"
|
|
||||||
# 1 "serial.h" 1
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdint.h" 1 3
|
|
||||||
# 121 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdint.h" 3
|
|
||||||
typedef int int8_t __attribute__((__mode__(__QI__)));
|
|
||||||
typedef unsigned int uint8_t __attribute__((__mode__(__QI__)));
|
|
||||||
typedef int int16_t __attribute__ ((__mode__ (__HI__)));
|
|
||||||
typedef unsigned int uint16_t __attribute__ ((__mode__ (__HI__)));
|
|
||||||
typedef int int32_t __attribute__ ((__mode__ (__SI__)));
|
|
||||||
typedef unsigned int uint32_t __attribute__ ((__mode__ (__SI__)));
|
|
||||||
|
|
||||||
typedef int int64_t __attribute__((__mode__(__DI__)));
|
|
||||||
typedef unsigned int uint64_t __attribute__((__mode__(__DI__)));
|
|
||||||
# 142 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdint.h" 3
|
|
||||||
typedef int16_t intptr_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef uint16_t uintptr_t;
|
|
||||||
# 159 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdint.h" 3
|
|
||||||
typedef int8_t int_least8_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef uint8_t uint_least8_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef int16_t int_least16_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef uint16_t uint_least16_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef int32_t int_least32_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef uint32_t uint_least32_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef int64_t int_least64_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef uint64_t uint_least64_t;
|
|
||||||
# 213 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdint.h" 3
|
|
||||||
typedef int8_t int_fast8_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef uint8_t uint_fast8_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef int16_t int_fast16_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef uint16_t uint_fast16_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef int32_t int_fast32_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef uint32_t uint_fast32_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef int64_t int_fast64_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef uint64_t uint_fast64_t;
|
|
||||||
# 273 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdint.h" 3
|
|
||||||
typedef int64_t intmax_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef uint64_t uintmax_t;
|
|
||||||
# 5 "serial.h" 2
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h" 1 3
|
|
||||||
# 99 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h" 3
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/sfr_defs.h" 1 3
|
|
||||||
# 126 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/sfr_defs.h" 3
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/inttypes.h" 1 3
|
|
||||||
# 77 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/inttypes.h" 3
|
|
||||||
typedef int32_t int_farptr_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef uint32_t uint_farptr_t;
|
|
||||||
# 127 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/sfr_defs.h" 2 3
|
|
||||||
# 100 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h" 2 3
|
|
||||||
# 224 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h" 3
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/iom168.h" 1 3
|
|
||||||
# 36 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/iom168.h" 3
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/iomx8.h" 1 3
|
|
||||||
# 37 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/iom168.h" 2 3
|
|
||||||
# 225 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h" 2 3
|
|
||||||
# 334 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h" 3
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/portpins.h" 1 3
|
|
||||||
# 335 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h" 2 3
|
|
||||||
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/common.h" 1 3
|
|
||||||
# 337 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h" 2 3
|
|
||||||
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/version.h" 1 3
|
|
||||||
# 339 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h" 2 3
|
|
||||||
|
|
||||||
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/fuse.h" 1 3
|
|
||||||
# 234 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/fuse.h" 3
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
unsigned char low;
|
|
||||||
unsigned char high;
|
|
||||||
unsigned char extended;
|
|
||||||
} __fuse_t;
|
|
||||||
# 342 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h" 2 3
|
|
||||||
|
|
||||||
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/lock.h" 1 3
|
|
||||||
# 345 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h" 2 3
|
|
||||||
# 6 "serial.h" 2
|
|
||||||
|
|
||||||
# 1 "ringbuffer.h" 1
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 1 "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/interrupt.h" 1 3
|
|
||||||
# 6 "ringbuffer.h" 2
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
uint16_t read_pointer;
|
|
||||||
uint16_t write_pointer;
|
|
||||||
uint16_t size;
|
|
||||||
uint8_t data[];
|
|
||||||
} ringbuffer;
|
|
||||||
|
|
||||||
void ringbuffer_init(ringbuffer *buf, int bufsize);
|
|
||||||
|
|
||||||
uint16_t ringbuffer_canread(ringbuffer *buf);
|
|
||||||
uint16_t ringbuffer_canwrite(ringbuffer *buf);
|
|
||||||
|
|
||||||
uint8_t ringbuffer_readchar(ringbuffer *buf);
|
|
||||||
uint8_t ringbuffer_peekchar(ringbuffer *buf, uint16_t index);
|
|
||||||
uint16_t ringbuffer_readblock(ringbuffer *buf, uint8_t *newbuf, int size);
|
|
||||||
|
|
||||||
void ringbuffer_writechar(ringbuffer *buf, uint8_t data);
|
|
||||||
uint16_t ringbuffer_writeblock(ringbuffer *buf, uint8_t *data, int size);
|
|
||||||
# 8 "serial.h" 2
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern volatile uint8_t _rx_buffer[];
|
|
||||||
extern volatile uint8_t _tx_buffer[];
|
|
||||||
|
|
||||||
void serial_init(void);
|
|
||||||
|
|
||||||
uint16_t serial_rxchars(void);
|
|
||||||
uint16_t serial_txchars(void);
|
|
||||||
|
|
||||||
uint8_t serial_popchar(void);
|
|
||||||
void serial_writechar(uint8_t data);
|
|
||||||
|
|
||||||
uint16_t serial_recvblock(uint8_t *block, int blocksize);
|
|
||||||
void serial_writeblock(uint8_t *data, int datalen);
|
|
||||||
# 2 "serial.c" 2
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
volatile uint8_t _rx_buffer[64 + sizeof(ringbuffer)];
|
|
||||||
volatile uint8_t _tx_buffer[64 + sizeof(ringbuffer)];
|
|
||||||
|
|
||||||
void serial_init()
|
|
||||||
{
|
|
||||||
ringbuffer_init(((ringbuffer *) _rx_buffer), 64 + sizeof(ringbuffer));
|
|
||||||
ringbuffer_init(((ringbuffer *) _tx_buffer), 64 + sizeof(ringbuffer));
|
|
||||||
|
|
||||||
(*(volatile uint8_t *)(0xC0)) = 0;
|
|
||||||
(*(volatile uint8_t *)(0xC1)) = (1 << 4) | (1 << 3);
|
|
||||||
(*(volatile uint8_t *)(0xC2)) = (1 << 2) | (1 << 1);
|
|
||||||
|
|
||||||
(*(volatile uint16_t *)(0xC4)) = ((16000000L / 16) / 19200) - 1;
|
|
||||||
|
|
||||||
(*(volatile uint8_t *)(0xC1)) |= (1 << 7) | (1 << 5);
|
|
||||||
}
|
|
||||||
|
|
||||||
void __vector_18 (void) __attribute__ ((signal,used, externally_visible)) ; void __vector_18 (void)
|
|
||||||
{
|
|
||||||
ringbuffer_writechar(((ringbuffer *) _rx_buffer), (*(volatile uint8_t *)(0xC6)));
|
|
||||||
}
|
|
||||||
|
|
||||||
void __vector_19 (void) __attribute__ ((signal,used, externally_visible)) ; void __vector_19 (void)
|
|
||||||
{
|
|
||||||
if (ringbuffer_canread(((ringbuffer *) _tx_buffer)))
|
|
||||||
{
|
|
||||||
(*(volatile uint8_t *)(0xC6)) = ringbuffer_readchar(((ringbuffer *) _tx_buffer));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
(*(volatile uint8_t *)(0xC1)) &= ~(1 << 5);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
uint16_t serial_rxchars()
|
|
||||||
{
|
|
||||||
return ringbuffer_canread(((ringbuffer *) _rx_buffer));
|
|
||||||
}
|
|
||||||
|
|
||||||
uint16_t serial_txchars()
|
|
||||||
{
|
|
||||||
return ringbuffer_canread(((ringbuffer *) _tx_buffer));
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t serial_popchar()
|
|
||||||
{
|
|
||||||
return ringbuffer_readchar(((ringbuffer *) _rx_buffer));
|
|
||||||
}
|
|
||||||
|
|
||||||
uint16_t serial_recvblock(uint8_t *block, int blocksize)
|
|
||||||
{
|
|
||||||
return ringbuffer_readblock(((ringbuffer *) _rx_buffer), block, blocksize);
|
|
||||||
}
|
|
||||||
|
|
||||||
void serial_writechar(uint8_t data)
|
|
||||||
{
|
|
||||||
ringbuffer_writechar(((ringbuffer *) _tx_buffer), data);
|
|
||||||
(*(volatile uint8_t *)(0xC1)) |= (1 << 5);
|
|
||||||
}
|
|
||||||
|
|
||||||
void serial_writeblock(uint8_t *data, int datalen)
|
|
||||||
{
|
|
||||||
ringbuffer_writeblock(((ringbuffer *) _tx_buffer), data, datalen);
|
|
||||||
(*(volatile uint8_t *)(0xC1)) |= (1 << 5);
|
|
||||||
}
|
|
||||||
439
mendel/serial.s
439
mendel/serial.s
|
|
@ -1,439 +0,0 @@
|
||||||
.file "serial.c"
|
|
||||||
__SREG__ = 0x3f
|
|
||||||
__SP_H__ = 0x3e
|
|
||||||
__SP_L__ = 0x3d
|
|
||||||
__tmp_reg__ = 0
|
|
||||||
__zero_reg__ = 1
|
|
||||||
.global __do_copy_data
|
|
||||||
.global __do_clear_bss
|
|
||||||
.stabs "/home/triffid/ATmega-Skeleton/mendel/",100,0,2,.Ltext0
|
|
||||||
.stabs "serial.c",100,0,2,.Ltext0
|
|
||||||
.text
|
|
||||||
.Ltext0:
|
|
||||||
.stabs "gcc2_compiled.",60,0,0,0
|
|
||||||
.stabs "int:t(0,1)=r(0,1);-32768;32767;",128,0,1,0
|
|
||||||
.stabs "char:t(0,2)=@s8;r(0,2);0;255;",128,0,1,0
|
|
||||||
.stabs "long int:t(0,3)=@s32;r(0,3);020000000000;017777777777;",128,0,1,0
|
|
||||||
.stabs "unsigned int:t(0,4)=r(0,4);0;0177777;",128,0,1,0
|
|
||||||
.stabs "long unsigned int:t(0,5)=@s32;r(0,5);0;037777777777;",128,0,1,0
|
|
||||||
.stabs "long long int:t(0,6)=@s64;r(0,6);01000000000000000000000;0777777777777777777777;",128,0,1,0
|
|
||||||
.stabs "long long unsigned int:t(0,7)=@s64;r(0,7);0;01777777777777777777777;",128,0,1,0
|
|
||||||
.stabs "short int:t(0,8)=r(0,8);-32768;32767;",128,0,1,0
|
|
||||||
.stabs "short unsigned int:t(0,9)=r(0,9);0;0177777;",128,0,1,0
|
|
||||||
.stabs "signed char:t(0,10)=@s8;r(0,10);-128;127;",128,0,1,0
|
|
||||||
.stabs "unsigned char:t(0,11)=@s8;r(0,11);0;255;",128,0,1,0
|
|
||||||
.stabs "float:t(0,12)=r(0,1);4;0;",128,0,1,0
|
|
||||||
.stabs "double:t(0,13)=r(0,1);4;0;",128,0,1,0
|
|
||||||
.stabs "long double:t(0,14)=r(0,1);4;0;",128,0,1,0
|
|
||||||
.stabs "void:t(0,15)=(0,15)",128,0,1,0
|
|
||||||
.stabs "serial.h",130,0,0,0
|
|
||||||
.stabs "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/stdint.h",130,0,0,0
|
|
||||||
.stabs "int8_t:t(2,1)=(0,10)",128,0,121,0
|
|
||||||
.stabs "uint8_t:t(2,2)=(0,11)",128,0,122,0
|
|
||||||
.stabs "int16_t:t(2,3)=(0,1)",128,0,123,0
|
|
||||||
.stabs "uint16_t:t(2,4)=(0,4)",128,0,124,0
|
|
||||||
.stabs "int32_t:t(2,5)=(0,3)",128,0,125,0
|
|
||||||
.stabs "uint32_t:t(2,6)=(0,5)",128,0,126,0
|
|
||||||
.stabs "int64_t:t(2,7)=(0,6)",128,0,128,0
|
|
||||||
.stabs "uint64_t:t(2,8)=(0,7)",128,0,129,0
|
|
||||||
.stabs "intptr_t:t(2,9)=(2,3)",128,0,142,0
|
|
||||||
.stabs "uintptr_t:t(2,10)=(2,4)",128,0,147,0
|
|
||||||
.stabs "int_least8_t:t(2,11)=(2,1)",128,0,159,0
|
|
||||||
.stabs "uint_least8_t:t(2,12)=(2,2)",128,0,164,0
|
|
||||||
.stabs "int_least16_t:t(2,13)=(2,3)",128,0,169,0
|
|
||||||
.stabs "uint_least16_t:t(2,14)=(2,4)",128,0,174,0
|
|
||||||
.stabs "int_least32_t:t(2,15)=(2,5)",128,0,179,0
|
|
||||||
.stabs "uint_least32_t:t(2,16)=(2,6)",128,0,184,0
|
|
||||||
.stabs "int_least64_t:t(2,17)=(2,7)",128,0,192,0
|
|
||||||
.stabs "uint_least64_t:t(2,18)=(2,8)",128,0,199,0
|
|
||||||
.stabs "int_fast8_t:t(2,19)=(2,1)",128,0,213,0
|
|
||||||
.stabs "uint_fast8_t:t(2,20)=(2,2)",128,0,218,0
|
|
||||||
.stabs "int_fast16_t:t(2,21)=(2,3)",128,0,223,0
|
|
||||||
.stabs "uint_fast16_t:t(2,22)=(2,4)",128,0,228,0
|
|
||||||
.stabs "int_fast32_t:t(2,23)=(2,5)",128,0,233,0
|
|
||||||
.stabs "uint_fast32_t:t(2,24)=(2,6)",128,0,238,0
|
|
||||||
.stabs "int_fast64_t:t(2,25)=(2,7)",128,0,246,0
|
|
||||||
.stabs "uint_fast64_t:t(2,26)=(2,8)",128,0,253,0
|
|
||||||
.stabs "intmax_t:t(2,27)=(2,7)",128,0,273,0
|
|
||||||
.stabs "uintmax_t:t(2,28)=(2,8)",128,0,278,0
|
|
||||||
.stabn 162,0,0,0
|
|
||||||
.stabs "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/io.h",130,0,0,0
|
|
||||||
.stabs "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/sfr_defs.h",130,0,0,0
|
|
||||||
.stabs "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/inttypes.h",130,0,0,0
|
|
||||||
.stabs "int_farptr_t:t(5,1)=(2,5)",128,0,77,0
|
|
||||||
.stabs "uint_farptr_t:t(5,2)=(2,6)",128,0,81,0
|
|
||||||
.stabn 162,0,0,0
|
|
||||||
.stabn 162,0,0,0
|
|
||||||
.stabs "/usr/lib/gcc/avr/4.4.1/../../../../avr/include/avr/fuse.h",130,0,0,0
|
|
||||||
.stabs "__fuse_t:t(6,1)=(6,2)=s3low:(0,11),0,8;high:(0,11),8,8;extended:(0,11),16,8;;",128,0,239,0
|
|
||||||
.stabn 162,0,0,0
|
|
||||||
.stabn 162,0,0,0
|
|
||||||
.stabs "ringbuffer.h",130,0,0,0
|
|
||||||
.stabs "ringbuffer:t(7,1)=(7,2)=s6read_pointer:(2,4),0,16;write_pointer:(2,4),16,16;size:(2,4),32,16;;",128,0,12,0
|
|
||||||
.stabn 162,0,0,0
|
|
||||||
.stabn 162,0,0,0
|
|
||||||
.section .text.serial_writeblock,"ax",@progbits
|
|
||||||
.stabs "serial_writeblock:F(0,15)",36,0,68,serial_writeblock
|
|
||||||
.stabs "data:P(0,16)=*(2,2)",64,0,68,18
|
|
||||||
.stabs "datalen:P(0,1)",64,0,68,20
|
|
||||||
.global serial_writeblock
|
|
||||||
.type serial_writeblock, @function
|
|
||||||
serial_writeblock:
|
|
||||||
.stabd 46,0,0
|
|
||||||
.stabn 68,0,69,.LM0-.LFBB1
|
|
||||||
.LM0:
|
|
||||||
.LFBB1:
|
|
||||||
/* prologue: function */
|
|
||||||
/* frame size = 0 */
|
|
||||||
movw r18,r24
|
|
||||||
movw r20,r22
|
|
||||||
.stabn 68,0,70,.LM1-.LFBB1
|
|
||||||
.LM1:
|
|
||||||
ldi r24,lo8(_tx_buffer)
|
|
||||||
ldi r25,hi8(_tx_buffer)
|
|
||||||
movw r22,r18
|
|
||||||
call ringbuffer_writeblock
|
|
||||||
.stabn 68,0,71,.LM2-.LFBB1
|
|
||||||
.LM2:
|
|
||||||
ldi r30,lo8(193)
|
|
||||||
ldi r31,hi8(193)
|
|
||||||
ld r24,Z
|
|
||||||
ori r24,lo8(32)
|
|
||||||
st Z,r24
|
|
||||||
/* epilogue start */
|
|
||||||
.stabn 68,0,72,.LM3-.LFBB1
|
|
||||||
.LM3:
|
|
||||||
ret
|
|
||||||
.size serial_writeblock, .-serial_writeblock
|
|
||||||
.Lscope1:
|
|
||||||
.stabs "",36,0,0,.Lscope1-.LFBB1
|
|
||||||
.stabd 78,0,0
|
|
||||||
.section .text.serial_writechar,"ax",@progbits
|
|
||||||
.stabs "serial_writechar:F(0,15)",36,0,62,serial_writechar
|
|
||||||
.stabs "data:P(2,2)",64,0,62,22
|
|
||||||
.global serial_writechar
|
|
||||||
.type serial_writechar, @function
|
|
||||||
serial_writechar:
|
|
||||||
.stabd 46,0,0
|
|
||||||
.stabn 68,0,63,.LM4-.LFBB2
|
|
||||||
.LM4:
|
|
||||||
.LFBB2:
|
|
||||||
/* prologue: function */
|
|
||||||
/* frame size = 0 */
|
|
||||||
mov r22,r24
|
|
||||||
.stabn 68,0,64,.LM5-.LFBB2
|
|
||||||
.LM5:
|
|
||||||
ldi r24,lo8(_tx_buffer)
|
|
||||||
ldi r25,hi8(_tx_buffer)
|
|
||||||
call ringbuffer_writechar
|
|
||||||
.stabn 68,0,65,.LM6-.LFBB2
|
|
||||||
.LM6:
|
|
||||||
ldi r30,lo8(193)
|
|
||||||
ldi r31,hi8(193)
|
|
||||||
ld r24,Z
|
|
||||||
ori r24,lo8(32)
|
|
||||||
st Z,r24
|
|
||||||
/* epilogue start */
|
|
||||||
.stabn 68,0,66,.LM7-.LFBB2
|
|
||||||
.LM7:
|
|
||||||
ret
|
|
||||||
.size serial_writechar, .-serial_writechar
|
|
||||||
.Lscope2:
|
|
||||||
.stabs "",36,0,0,.Lscope2-.LFBB2
|
|
||||||
.stabd 78,0,0
|
|
||||||
.section .text.__vector_18,"ax",@progbits
|
|
||||||
.stabs "__vector_18:F(0,15)",36,0,25,__vector_18
|
|
||||||
.global __vector_18
|
|
||||||
.type __vector_18, @function
|
|
||||||
__vector_18:
|
|
||||||
.stabd 46,0,0
|
|
||||||
.stabn 68,0,26,.LM8-.LFBB3
|
|
||||||
.LM8:
|
|
||||||
.LFBB3:
|
|
||||||
push __zero_reg__
|
|
||||||
push r0
|
|
||||||
in r0,__SREG__
|
|
||||||
push r0
|
|
||||||
clr __zero_reg__
|
|
||||||
push r18
|
|
||||||
push r19
|
|
||||||
push r20
|
|
||||||
push r21
|
|
||||||
push r22
|
|
||||||
push r23
|
|
||||||
push r24
|
|
||||||
push r25
|
|
||||||
push r26
|
|
||||||
push r27
|
|
||||||
push r30
|
|
||||||
push r31
|
|
||||||
/* prologue: Signal */
|
|
||||||
/* frame size = 0 */
|
|
||||||
.stabn 68,0,27,.LM9-.LFBB3
|
|
||||||
.LM9:
|
|
||||||
lds r22,198
|
|
||||||
ldi r24,lo8(_rx_buffer)
|
|
||||||
ldi r25,hi8(_rx_buffer)
|
|
||||||
call ringbuffer_writechar
|
|
||||||
/* epilogue start */
|
|
||||||
.stabn 68,0,28,.LM10-.LFBB3
|
|
||||||
.LM10:
|
|
||||||
pop r31
|
|
||||||
pop r30
|
|
||||||
pop r27
|
|
||||||
pop r26
|
|
||||||
pop r25
|
|
||||||
pop r24
|
|
||||||
pop r23
|
|
||||||
pop r22
|
|
||||||
pop r21
|
|
||||||
pop r20
|
|
||||||
pop r19
|
|
||||||
pop r18
|
|
||||||
pop r0
|
|
||||||
out __SREG__,r0
|
|
||||||
pop r0
|
|
||||||
pop __zero_reg__
|
|
||||||
reti
|
|
||||||
.size __vector_18, .-__vector_18
|
|
||||||
.Lscope3:
|
|
||||||
.stabs "",36,0,0,.Lscope3-.LFBB3
|
|
||||||
.stabd 78,0,0
|
|
||||||
.section .text.serial_recvblock,"ax",@progbits
|
|
||||||
.stabs "serial_recvblock:F(2,4)",36,0,57,serial_recvblock
|
|
||||||
.stabs "block:P(0,16)",64,0,57,18
|
|
||||||
.stabs "blocksize:P(0,1)",64,0,57,20
|
|
||||||
.global serial_recvblock
|
|
||||||
.type serial_recvblock, @function
|
|
||||||
serial_recvblock:
|
|
||||||
.stabd 46,0,0
|
|
||||||
.stabn 68,0,58,.LM11-.LFBB4
|
|
||||||
.LM11:
|
|
||||||
.LFBB4:
|
|
||||||
/* prologue: function */
|
|
||||||
/* frame size = 0 */
|
|
||||||
movw r18,r24
|
|
||||||
movw r20,r22
|
|
||||||
.stabn 68,0,59,.LM12-.LFBB4
|
|
||||||
.LM12:
|
|
||||||
ldi r24,lo8(_rx_buffer)
|
|
||||||
ldi r25,hi8(_rx_buffer)
|
|
||||||
movw r22,r18
|
|
||||||
call ringbuffer_readblock
|
|
||||||
/* epilogue start */
|
|
||||||
.stabn 68,0,60,.LM13-.LFBB4
|
|
||||||
.LM13:
|
|
||||||
ret
|
|
||||||
.size serial_recvblock, .-serial_recvblock
|
|
||||||
.Lscope4:
|
|
||||||
.stabs "",36,0,0,.Lscope4-.LFBB4
|
|
||||||
.stabd 78,0,0
|
|
||||||
.section .text.serial_popchar,"ax",@progbits
|
|
||||||
.stabs "serial_popchar:F(2,2)",36,0,52,serial_popchar
|
|
||||||
.global serial_popchar
|
|
||||||
.type serial_popchar, @function
|
|
||||||
serial_popchar:
|
|
||||||
.stabd 46,0,0
|
|
||||||
.stabn 68,0,53,.LM14-.LFBB5
|
|
||||||
.LM14:
|
|
||||||
.LFBB5:
|
|
||||||
/* prologue: function */
|
|
||||||
/* frame size = 0 */
|
|
||||||
.stabn 68,0,54,.LM15-.LFBB5
|
|
||||||
.LM15:
|
|
||||||
ldi r24,lo8(_rx_buffer)
|
|
||||||
ldi r25,hi8(_rx_buffer)
|
|
||||||
call ringbuffer_readchar
|
|
||||||
/* epilogue start */
|
|
||||||
.stabn 68,0,55,.LM16-.LFBB5
|
|
||||||
.LM16:
|
|
||||||
ret
|
|
||||||
.size serial_popchar, .-serial_popchar
|
|
||||||
.Lscope5:
|
|
||||||
.stabs "",36,0,0,.Lscope5-.LFBB5
|
|
||||||
.stabd 78,0,0
|
|
||||||
.section .text.serial_txchars,"ax",@progbits
|
|
||||||
.stabs "serial_txchars:F(2,4)",36,0,47,serial_txchars
|
|
||||||
.global serial_txchars
|
|
||||||
.type serial_txchars, @function
|
|
||||||
serial_txchars:
|
|
||||||
.stabd 46,0,0
|
|
||||||
.stabn 68,0,48,.LM17-.LFBB6
|
|
||||||
.LM17:
|
|
||||||
.LFBB6:
|
|
||||||
/* prologue: function */
|
|
||||||
/* frame size = 0 */
|
|
||||||
.stabn 68,0,49,.LM18-.LFBB6
|
|
||||||
.LM18:
|
|
||||||
ldi r24,lo8(_tx_buffer)
|
|
||||||
ldi r25,hi8(_tx_buffer)
|
|
||||||
call ringbuffer_canread
|
|
||||||
/* epilogue start */
|
|
||||||
.stabn 68,0,50,.LM19-.LFBB6
|
|
||||||
.LM19:
|
|
||||||
ret
|
|
||||||
.size serial_txchars, .-serial_txchars
|
|
||||||
.Lscope6:
|
|
||||||
.stabs "",36,0,0,.Lscope6-.LFBB6
|
|
||||||
.stabd 78,0,0
|
|
||||||
.section .text.serial_rxchars,"ax",@progbits
|
|
||||||
.stabs "serial_rxchars:F(2,4)",36,0,42,serial_rxchars
|
|
||||||
.global serial_rxchars
|
|
||||||
.type serial_rxchars, @function
|
|
||||||
serial_rxchars:
|
|
||||||
.stabd 46,0,0
|
|
||||||
.stabn 68,0,43,.LM20-.LFBB7
|
|
||||||
.LM20:
|
|
||||||
.LFBB7:
|
|
||||||
/* prologue: function */
|
|
||||||
/* frame size = 0 */
|
|
||||||
.stabn 68,0,44,.LM21-.LFBB7
|
|
||||||
.LM21:
|
|
||||||
ldi r24,lo8(_rx_buffer)
|
|
||||||
ldi r25,hi8(_rx_buffer)
|
|
||||||
call ringbuffer_canread
|
|
||||||
/* epilogue start */
|
|
||||||
.stabn 68,0,45,.LM22-.LFBB7
|
|
||||||
.LM22:
|
|
||||||
ret
|
|
||||||
.size serial_rxchars, .-serial_rxchars
|
|
||||||
.Lscope7:
|
|
||||||
.stabs "",36,0,0,.Lscope7-.LFBB7
|
|
||||||
.stabd 78,0,0
|
|
||||||
.section .text.__vector_19,"ax",@progbits
|
|
||||||
.stabs "__vector_19:F(0,15)",36,0,30,__vector_19
|
|
||||||
.global __vector_19
|
|
||||||
.type __vector_19, @function
|
|
||||||
__vector_19:
|
|
||||||
.stabd 46,0,0
|
|
||||||
.stabn 68,0,31,.LM23-.LFBB8
|
|
||||||
.LM23:
|
|
||||||
.LFBB8:
|
|
||||||
push __zero_reg__
|
|
||||||
push r0
|
|
||||||
in r0,__SREG__
|
|
||||||
push r0
|
|
||||||
clr __zero_reg__
|
|
||||||
push r18
|
|
||||||
push r19
|
|
||||||
push r20
|
|
||||||
push r21
|
|
||||||
push r22
|
|
||||||
push r23
|
|
||||||
push r24
|
|
||||||
push r25
|
|
||||||
push r26
|
|
||||||
push r27
|
|
||||||
push r30
|
|
||||||
push r31
|
|
||||||
/* prologue: Signal */
|
|
||||||
/* frame size = 0 */
|
|
||||||
.stabn 68,0,32,.LM24-.LFBB8
|
|
||||||
.LM24:
|
|
||||||
ldi r24,lo8(_tx_buffer)
|
|
||||||
ldi r25,hi8(_tx_buffer)
|
|
||||||
call ringbuffer_canread
|
|
||||||
sbiw r24,0
|
|
||||||
breq .L16
|
|
||||||
.stabn 68,0,34,.LM25-.LFBB8
|
|
||||||
.LM25:
|
|
||||||
ldi r24,lo8(_tx_buffer)
|
|
||||||
ldi r25,hi8(_tx_buffer)
|
|
||||||
call ringbuffer_readchar
|
|
||||||
sts 198,r24
|
|
||||||
rjmp .L18
|
|
||||||
.L16:
|
|
||||||
.stabn 68,0,38,.LM26-.LFBB8
|
|
||||||
.LM26:
|
|
||||||
lds r24,193
|
|
||||||
andi r24,lo8(-33)
|
|
||||||
sts 193,r24
|
|
||||||
.L18:
|
|
||||||
/* epilogue start */
|
|
||||||
.stabn 68,0,40,.LM27-.LFBB8
|
|
||||||
.LM27:
|
|
||||||
pop r31
|
|
||||||
pop r30
|
|
||||||
pop r27
|
|
||||||
pop r26
|
|
||||||
pop r25
|
|
||||||
pop r24
|
|
||||||
pop r23
|
|
||||||
pop r22
|
|
||||||
pop r21
|
|
||||||
pop r20
|
|
||||||
pop r19
|
|
||||||
pop r18
|
|
||||||
pop r0
|
|
||||||
out __SREG__,r0
|
|
||||||
pop r0
|
|
||||||
pop __zero_reg__
|
|
||||||
reti
|
|
||||||
.size __vector_19, .-__vector_19
|
|
||||||
.Lscope8:
|
|
||||||
.stabs "",36,0,0,.Lscope8-.LFBB8
|
|
||||||
.stabd 78,0,0
|
|
||||||
.section .text.serial_init,"ax",@progbits
|
|
||||||
.stabs "serial_init:F(0,15)",36,0,11,serial_init
|
|
||||||
.global serial_init
|
|
||||||
.type serial_init, @function
|
|
||||||
serial_init:
|
|
||||||
.stabd 46,0,0
|
|
||||||
.stabn 68,0,12,.LM28-.LFBB9
|
|
||||||
.LM28:
|
|
||||||
.LFBB9:
|
|
||||||
/* prologue: function */
|
|
||||||
/* frame size = 0 */
|
|
||||||
.stabn 68,0,13,.LM29-.LFBB9
|
|
||||||
.LM29:
|
|
||||||
ldi r24,lo8(_rx_buffer)
|
|
||||||
ldi r25,hi8(_rx_buffer)
|
|
||||||
ldi r22,lo8(70)
|
|
||||||
ldi r23,hi8(70)
|
|
||||||
call ringbuffer_init
|
|
||||||
.stabn 68,0,14,.LM30-.LFBB9
|
|
||||||
.LM30:
|
|
||||||
ldi r24,lo8(_tx_buffer)
|
|
||||||
ldi r25,hi8(_tx_buffer)
|
|
||||||
ldi r22,lo8(70)
|
|
||||||
ldi r23,hi8(70)
|
|
||||||
call ringbuffer_init
|
|
||||||
.stabn 68,0,16,.LM31-.LFBB9
|
|
||||||
.LM31:
|
|
||||||
sts 192,__zero_reg__
|
|
||||||
.stabn 68,0,17,.LM32-.LFBB9
|
|
||||||
.LM32:
|
|
||||||
ldi r30,lo8(193)
|
|
||||||
ldi r31,hi8(193)
|
|
||||||
ldi r24,lo8(24)
|
|
||||||
st Z,r24
|
|
||||||
.stabn 68,0,18,.LM33-.LFBB9
|
|
||||||
.LM33:
|
|
||||||
ldi r24,lo8(6)
|
|
||||||
sts 194,r24
|
|
||||||
.stabn 68,0,20,.LM34-.LFBB9
|
|
||||||
.LM34:
|
|
||||||
ldi r24,lo8(51)
|
|
||||||
ldi r25,hi8(51)
|
|
||||||
sts (196)+1,r25
|
|
||||||
sts 196,r24
|
|
||||||
.stabn 68,0,22,.LM35-.LFBB9
|
|
||||||
.LM35:
|
|
||||||
ld r24,Z
|
|
||||||
ori r24,lo8(-96)
|
|
||||||
st Z,r24
|
|
||||||
/* epilogue start */
|
|
||||||
.stabn 68,0,23,.LM36-.LFBB9
|
|
||||||
.LM36:
|
|
||||||
ret
|
|
||||||
.size serial_init, .-serial_init
|
|
||||||
.Lscope9:
|
|
||||||
.stabs "",36,0,0,.Lscope9-.LFBB9
|
|
||||||
.stabd 78,0,0
|
|
||||||
.comm _rx_buffer,70,1
|
|
||||||
.comm _tx_buffer,70,1
|
|
||||||
.stabs "_rx_buffer:G(0,17)=ar(0,18)=r(0,18);0;0177777;;0;69;(0,19)=B(2,2)",32,0,8,0
|
|
||||||
.stabs "_tx_buffer:G(0,17)",32,0,9,0
|
|
||||||
.text
|
|
||||||
.stabs "",100,0,0,.Letext0
|
|
||||||
.Letext0:
|
|
||||||
Loading…
Reference in New Issue