source: rtems/c/src/lib/libbsp/arm/lpc24xx/misc/restart.c @ c499856

4.115
Last change on this file since c499856 was c499856, checked in by Chris Johns <chrisj@…>, on 03/20/14 at 21:10:47

Change all references of rtems.com to rtems.org.

  • Property mode set to 100644
File size: 912 bytes
Line 
1/**
2 * @file
3 *
4 * @ingroup lpc24xx
5 *
6 * @brief Restart implementation.
7 */
8
9/*
10 * Copyright (c) 2011-2012 embedded brains GmbH.  All rights reserved.
11 *
12 *  embedded brains GmbH
13 *  Obere Lagerstr. 30
14 *  82178 Puchheim
15 *  Germany
16 *  <rtems@embedded-brains.de>
17 *
18 * The license and distribution terms for this file may be
19 * found in the file LICENSE in this distribution or at
20 * http://www.rtems.org/license/LICENSE.
21 */
22
23#include <rtems.h>
24
25#include <bsp.h>
26
27void bsp_restart(void *addr)
28{
29  #ifdef ARM_MULTILIB_ARCH_V4
30    ARM_SWITCH_REGISTERS;
31    rtems_interrupt_level level;
32
33    rtems_interrupt_disable(level);
34
35    asm volatile (
36      ARM_SWITCH_TO_ARM
37      "mov pc, %[addr]\n"
38      ARM_SWITCH_BACK
39      : ARM_SWITCH_OUTPUT
40      : [addr] "r" (addr)
41    );
42  #else
43    rtems_interrupt_level level;
44    void (*start)(void) = addr;
45
46    rtems_interrupt_disable(level);
47    (*start)();
48  #endif
49}
Note: See TracBrowser for help on using the repository browser.