diff options
author | cpldcpu <cpldcpu@gmail.com> | 2013-12-06 15:46:47 +0100 |
---|---|---|
committer | cpldcpu <cpldcpu@gmail.com> | 2013-12-06 15:46:47 +0100 |
commit | 5eec4f6815221e78c06cc132df258f38d5b46cd8 (patch) | |
tree | 6d889eb28478fce751f75ec96edfd4f2b666d840 /firmware/crt1.S | |
parent | 598ca1ed69747777b2df560f37529eb242b23c43 (diff) | |
download | micronucleus-5eec4f6815221e78c06cc132df258f38d5b46cd8.tar.gz micronucleus-5eec4f6815221e78c06cc132df258f38d5b46cd8.tar.bz2 micronucleus-5eec4f6815221e78c06cc132df258f38d5b46cd8.zip |
custom crt, remove tiny85flashinit, UNTESTED
Diffstat (limited to 'firmware/crt1.S')
-rw-r--r-- | firmware/crt1.S | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/firmware/crt1.S b/firmware/crt1.S new file mode 100644 index 0000000..bb7b8e0 --- /dev/null +++ b/firmware/crt1.S @@ -0,0 +1,102 @@ + +/* Copyright (c) 2002, Marek Michalkiewicz <marekm@amelek.gda.pl> + Copyright (c) 2007, 2008 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. */ + +/* $Id$ */ + +#if (__GNUC__ < 3) || (__GNUC__ == 3 && __GNUC_MINOR__ < 3) +#error "GCC version >= 3.3 required" +#endif +/* +#include IOSYMFILE + +#include "macros.inc" +*/ + + #define XJMP rjmp + #define XCALL rcall + + .macro vector name + .weak \name + .set \name, __init + XJMP \name + .endm + + .section .vectors,"ax",@progbits + .global __vectors + .global __bad_interrupt + .func __vectors +__bad_interrupt: +__vectors: + XJMP __init + vector __vector_1 + vector __vector_2 + vector __vector_3 + .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. */ + + .section .init0,"ax",@progbits + .weak __init +; .func __init +__init: + + .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 R1 + out 0x3f,r1 + + .section .init9,"ax",@progbits + XJMP main +; .endfunc + + + .section .zerotable,"ax",@progbits +zerovectors: + XJMP __init + XJMP __vector_1 + XJMP __vector_2 + XJMP __vector_3 |