From 845216dae25a5ec7b9e3e5fdf2441b619cbe4b53 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Thu, 26 Nov 2009 21:36:09 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1331 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/ports/GCC/ARM7/AT91SAM7/vectors.s | 74 ++++++++++++++++++++++++++++++++++++ os/ports/GCC/ARM7/AT91SAM7/wfi.h | 35 +++++++++++++++++ 2 files changed, 109 insertions(+) create mode 100644 os/ports/GCC/ARM7/AT91SAM7/vectors.s create mode 100644 os/ports/GCC/ARM7/AT91SAM7/wfi.h (limited to 'os/ports/GCC/ARM7') diff --git a/os/ports/GCC/ARM7/AT91SAM7/vectors.s b/os/ports/GCC/ARM7/AT91SAM7/vectors.s new file mode 100644 index 000000000..29271daf1 --- /dev/null +++ b/os/ports/GCC/ARM7/AT91SAM7/vectors.s @@ -0,0 +1,74 @@ +/* + ChibiOS/RT - Copyright (C) 2006-2007 Giovanni Di Sirio. + + This file is part of ChibiOS/RT. + + ChibiOS/RT 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; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/RT is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +.section vectors +.code 32 +.balign 4 +/* + * System entry points. + */ +_start: + ldr pc, _reset + ldr pc, _undefined + ldr pc, _swi + ldr pc, _prefetch + ldr pc, _abort + nop + ldr pc, [pc,#-0xF20] /* AIC - AIC_IVR */ + ldr pc, [pc,#-0xF20] /* AIC - AIC_FVR */ + +_reset: + .word ResetHandler /* In crt0.s */ +_undefined: + .word UndHandler +_swi: + .word SwiHandler +_prefetch: + .word PrefetchHandler +_abort: + .word AbortHandler + .word 0 + .word 0 + .word 0 + +.text +.code 32 +.balign 4 + +/* + * Default exceptions handlers. The handlers are declared weak in order to be + * replaced by the real handling code. Everything is defaulted to an infinite + * loop. + */ +.weak UndHandler +UndHandler: + +.weak SwiHandler +SwiHandler: + +.weak PrefetchHandler +PrefetchHandler: + +.weak AbortHandler +AbortHandler: + +.weak FiqHandler +FiqHandler: + +.loop: b .loop diff --git a/os/ports/GCC/ARM7/AT91SAM7/wfi.h b/os/ports/GCC/ARM7/AT91SAM7/wfi.h new file mode 100644 index 000000000..56b251957 --- /dev/null +++ b/os/ports/GCC/ARM7/AT91SAM7/wfi.h @@ -0,0 +1,35 @@ +/* + ChibiOS/RT - Copyright (C) 2006-2007 Giovanni Di Sirio. + + This file is part of ChibiOS/RT. + + ChibiOS/RT 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; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/RT is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifndef _WFI_H_ +#define _WFI_H_ + +#include "board.h" + +#ifndef port_wait_for_interrupt +#if ENABLE_WFI_IDLE != 0 +#define port_wait_for_interrupt() { \ + AT91C_BASE_SYS->PMC_SCDR = AT91C_PMC_PCK; \ +} +#else +#define port_wait_for_interrupt() +#endif +#endif + +#endif /* _WFI_H_ */ -- cgit v1.2.3