summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/avr/avrtest/start/start.S
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/avr/avrtest/start/start.S')
-rw-r--r--c/src/lib/libbsp/avr/avrtest/start/start.S291
1 files changed, 0 insertions, 291 deletions
diff --git a/c/src/lib/libbsp/avr/avrtest/start/start.S b/c/src/lib/libbsp/avr/avrtest/start/start.S
deleted file mode 100644
index 22853a26b3..0000000000
--- a/c/src/lib/libbsp/avr/avrtest/start/start.S
+++ /dev/null
@@ -1,291 +0,0 @@
-/* Copyright (c) 2002, Marek Michalkiewicz <marekm@amelek.gda.pl>
- Copyright (c) 2007, Eric B. Weddington
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in
- the documentation and/or other materials provided with the
- distribution.
-
- * Neither the name of the copyright holders nor the names of
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE. */
-
-
-#if (__GNUC__ < 3) || (__GNUC__ == 3 && __GNUC_MINOR__ < 3)
-#error "GCC version >= 3.3 required"
-#endif
-
-#include "macros.inc"
-
- .macro vector name
- .if (. - __vectors < _VECTORS_SIZE)
- .weak \name
- .set \name, __bad_interrupt
- XJMP \name
- .endif
- .endm
-
- .section .vectors,"ax",@progbits
- .global __vectors
- .func __vectors
-__vectors:
- XJMP __init
- vector __vector_1
- vector __vector_2
- vector __vector_3
- vector __vector_4
- vector __vector_5
- vector __vector_6
- vector __vector_7
- vector __vector_8
- vector __vector_9
- vector __vector_10
- vector __vector_11
- vector __vector_12
- vector __vector_13
- vector __vector_14
- vector __vector_15
- vector __vector_16
- vector __vector_17
- vector __vector_18
- vector __vector_19
- vector __vector_20
- vector __vector_21
- vector __vector_22
- vector __vector_23
- vector __vector_24
- vector __vector_25
- vector __vector_26
- vector __vector_27
- vector __vector_28
- vector __vector_29
- vector __vector_30
- vector __vector_31
- vector __vector_32
- vector __vector_33
- vector __vector_34
- vector __vector_35
- vector __vector_36
- vector __vector_37
- vector __vector_38
- vector __vector_39
- vector __vector_40
- vector __vector_41
- vector __vector_42
- vector __vector_43
- vector __vector_44
- vector __vector_45
- vector __vector_46
- vector __vector_47
- vector __vector_48
- vector __vector_49
- vector __vector_50
- vector __vector_51
- vector __vector_52
- vector __vector_53
- vector __vector_54
- vector __vector_55
- vector __vector_56
- vector __vector_57
- vector __vector_58
- vector __vector_59
- vector __vector_60
- vector __vector_61
- vector __vector_62
- vector __vector_63
- vector __vector_64
- vector __vector_65
- vector __vector_66
- vector __vector_67
- vector __vector_68
- vector __vector_69
- vector __vector_70
- vector __vector_71
- vector __vector_72
- vector __vector_73
- vector __vector_74
- vector __vector_75
- vector __vector_76
- vector __vector_77
- vector __vector_78
- vector __vector_79
- vector __vector_80
- vector __vector_81
- vector __vector_82
- vector __vector_83
- vector __vector_84
- vector __vector_85
- vector __vector_86
- vector __vector_87
- vector __vector_88
- vector __vector_89
- vector __vector_90
- vector __vector_91
- vector __vector_92
- vector __vector_93
- vector __vector_94
- vector __vector_95
- vector __vector_96
- vector __vector_97
- vector __vector_98
- vector __vector_99
- vector __vector_100
- vector __vector_101
- vector __vector_102
- vector __vector_103
- vector __vector_104
- vector __vector_105
- vector __vector_106
- vector __vector_107
- vector __vector_108
- vector __vector_109
- vector __vector_110
- vector __vector_111
- vector __vector_112
- vector __vector_113
- vector __vector_114
- vector __vector_115
- vector __vector_116
- vector __vector_117
- vector __vector_118
- vector __vector_119
- vector __vector_120
- vector __vector_121
- vector __vector_122
- vector __vector_123
- vector __vector_124
- vector __vector_125
- .endfunc
-
- /* Handle unexpected interrupts (enabled and no handler), which
- usually indicate a bug. Jump to the __vector_default function
- if defined by the user, otherwise jump to the reset address.
-
- This must be in a different section, otherwise the assembler
- will resolve "rjmp" offsets and there will be no relocs. */
-
- .text
- .global __bad_interrupt
- .func __bad_interrupt
-__bad_interrupt:
- .weak __vector_default
- .set __vector_default, __vectors
- XJMP __vector_default
- .endfunc
-
- .section .init0,"ax",@progbits
- .weak __init
-; .func __init
-__init:
-
-#ifndef __AVR_ASM_ONLY__
- .weak __stack
-
- /* By default, malloc() uses the current value of the stack pointer
- minus __malloc_margin as the highest available address.
-
- In some applications with external SRAM, the stack can be below
- the data section (in the internal SRAM - faster), and __heap_end
- should be set to the highest address available for malloc(). */
- .weak __heap_end
- .set __heap_end, 0
-
- .section .init2,"ax",@progbits
- clr __zero_reg__
- out AVR_STATUS_ADDR, __zero_reg__
- ldi r28,lo8(__stack)
-#ifdef _HAVE_AVR_STACK_POINTER_HI
- ldi r29,hi8(__stack)
- out AVR_STACK_POINTER_HI_ADDR, r29
-#endif /* _HAVE_AVR_STACK_POINTER_HI */
- out AVR_STACK_POINTER_LO_ADDR, r28
-
-#ifdef __AVR_3_BYTE_PC__
- ldi r16, hh8(pm(__vectors))
- out _SFR_IO_ADDR(EIND), r16
-#endif /* __AVR_3_BYTE_PC__ */
-
-#ifdef __AVR_HAVE_RAMPD__
- out AVR_RAMPD_ADDR, __zero_reg__
- out AVR_RAMPX_ADDR, __zero_reg__
- out AVR_RAMPY_ADDR, __zero_reg__
- out AVR_RAMPZ_ADDR, __zero_reg__
-#endif
-
-#if BIG_CODE
- /* Only for >64K devices with RAMPZ, replaces the default code
- provided by libgcc.S which is only linked in if necessary. */
-
- .section .init4,"ax",@progbits
- .global __do_copy_data
-__do_copy_data:
- ldi r17, hi8(__data_end)
- ldi r26, lo8(__data_start)
- ldi r27, hi8(__data_start)
- ldi r30, lo8(__data_load_start)
- ldi r31, hi8(__data_load_start)
-
- /* On the enhanced core, "elpm" with post-increment updates RAMPZ
- automatically. Otherwise we have to handle it ourselves. */
-
-#ifdef __AVR_ENHANCED__
- ldi r16, hh8(__data_load_start)
-#else
- ldi r16, hh8(__data_load_start - 0x10000)
-.L__do_copy_data_carry:
- inc r16
-#endif
- out AVR_RAMPZ_ADDR, r16
- rjmp .L__do_copy_data_start
-.L__do_copy_data_loop:
-#ifdef __AVR_ENHANCED__
- elpm r0, Z+
-#else
- elpm
-#endif
- st X+, r0
-#ifndef __AVR_ENHANCED__
- adiw r30, 1
- brcs .L__do_copy_data_carry
-#endif
-.L__do_copy_data_start:
- cpi r26, lo8(__data_end)
- cpc r27, r17
- brne .L__do_copy_data_loop
-#ifdef __AVR_HAVE_RAMPD__
- out AVR_RAMPZ_ADDR, __zero_reg__
-#endif /* __AVR_HAVE_RAMPD__*/
-
-#endif /* BIG_CODE */
-
- .set __stack, RAMEND
-#endif /* !__AVR_ASM_ONLY__ */
-
- .section .init9,"ax",@progbits
-#ifdef __AVR_ASM_ONLY__
- XJMP boot_card
-#else /* !__AVR_ASM_ONLY__ */
- XCALL boot_card
- XJMP exit
-#endif /* __AVR_ASM_ONLY__ */
-; .endfunc
-