X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Flpc%2Fao_interrupt.c;h=3e0119c6e6639b674925acb08b291718b939501d;hb=refs%2Fheads%2Fbdale-ui;hp=c4dc786760b460f17bd8f20a9100e36cba7b0652;hpb=4ff54bb96f6c00c0c2c7dd32f81403bac331621a;p=fw%2Faltos diff --git a/src/lpc/ao_interrupt.c b/src/lpc/ao_interrupt.c index c4dc7867..a479ec6d 100644 --- a/src/lpc/ao_interrupt.c +++ b/src/lpc/ao_interrupt.c @@ -3,7 +3,8 @@ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of @@ -31,7 +32,7 @@ extern void main(void); extern char __stack__; extern char __text_start__, __text_end__; -extern char __data_start__, __data_end__; +extern char _start__, _end__; extern char __bss_start__, __bss_end__; #if RELOCATE_INTERRUPT extern char __interrupt_rom__, __interrupt_start__, __interrupt_end__; @@ -52,15 +53,18 @@ void start(void) { #ifdef AO_BOOT_CHAIN if (ao_boot_check_chain()) { #ifdef AO_BOOT_PIN - ao_boot_check_pin(); + if (ao_boot_check_pin()) #endif + { + ao_boot_chain(AO_BOOT_APPLICATION_BASE); + } } #endif #if RELOCATE_INTERRUPT memcpy(&__interrupt_start__, &__interrupt_rom__, &__interrupt_end__ - &__interrupt_start__); lpc_scb.sysmemremap = LPC_SCB_SYSMEMREMAP_MAP_RAM << LPC_SCB_SYSMEMREMAP_MAP; #endif - memcpy(&__data_start__, &__text_end__, &__data_end__ - &__data_start__); + memcpy(&_start__, &__text_end__, &_end__ - &_start__); memset(&__bss_start__, '\0', &__bss_end__ - &__bss_start__); main(); } @@ -172,5 +176,5 @@ const void *lpc_interrupt_vector[] = { i(0xb0, hardfault), /* IRQ28 */ i(0xb4, hardfault), i(0xb8, usb_wakeup), - i(0xbc, hardfault), + i(0xbc, hardfault), };