X-Git-Url: http://cvs.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/6658905f18a1eebc148836f26c731dea9c1377dc..9d8f56e35d83e7691f6b018b01342419b7e0360b:/armsrc/start.c diff --git a/armsrc/start.c b/armsrc/start.c index 52296fc2..d7332bda 100644 --- a/armsrc/start.c +++ b/armsrc/start.c @@ -1,12 +1,33 @@ -//----------------------------------------------------------------------------- -// Just vector to AppMain(). This is in its own file so that I can place it -// with the linker script. -// Jonathan Westhues, Mar 2006 -//----------------------------------------------------------------------------- -#include -#include "apps.h" - -void Vector(void) -{ - AppMain(); -} +//----------------------------------------------------------------------------- +// Jonathan Westhues, Mar 2006 +// +// This code is licensed to you under the terms of the GNU GPL, version 2 or, +// at your option, any later version. See the LICENSE.txt file for the text of +// the license. +//----------------------------------------------------------------------------- +// Just vector to AppMain(). This is in its own file so that I can place it +// with the linker script. +//----------------------------------------------------------------------------- + +#include "proxmark3.h" +#include "apps.h" + +extern char __data_start__, __data_src_start__, __data_end__, __bss_start__, __bss_end__; +void __attribute__((section(".startos"))) Vector(void) +{ + /* Stack should have been set up by the bootloader */ + char *src, *dst, *end; + + /* Set up (that is: clear) BSS. */ + dst = &__bss_start__; + end = &__bss_end__; + while(dst < end) *dst++ = 0; + + /* Set up data segment: Copy from flash to ram */ + src = &__data_src_start__; + dst = &__data_start__; + end = &__data_end__; + while(dst < end) *dst++ = *src++; + + AppMain(); +}