From b99da12d6a5b79320e1c7db49b09e020c1cba6cc Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Wed, 13 Mar 2013 22:33:40 +0100 Subject: digital/ucoolib/ucoolib/arch: add arch_reset --- digital/ucoolib/ucoolib/arch/arch.hh | 4 ++++ digital/ucoolib/ucoolib/arch/arch.host.cc | 7 +++++++ digital/ucoolib/ucoolib/arch/arch.stm32.cc | 7 +++++++ 3 files changed, 18 insertions(+) (limited to 'digital/ucoolib/ucoolib') diff --git a/digital/ucoolib/ucoolib/arch/arch.hh b/digital/ucoolib/ucoolib/arch/arch.hh index 92aa115f..ecf123fb 100644 --- a/digital/ucoolib/ucoolib/arch/arch.hh +++ b/digital/ucoolib/ucoolib/arch/arch.hh @@ -30,6 +30,10 @@ namespace ucoo { void arch_init (int argc, const char **argv); +/// Reset. +void +arch_reset (); + #ifdef TARGET_host /// Retrieve program arguments. diff --git a/digital/ucoolib/ucoolib/arch/arch.host.cc b/digital/ucoolib/ucoolib/arch/arch.host.cc index ed8c503e..06bb2bdb 100644 --- a/digital/ucoolib/ucoolib/arch/arch.host.cc +++ b/digital/ucoolib/ucoolib/arch/arch.host.cc @@ -41,6 +41,13 @@ arch_init (int argc, const char **argv) arch_stored_argv = argv; } +void +arch_reset () +{ + // Not supported. + halt (); +} + void arch_get_args (int &argc, const char **&argv) { diff --git a/digital/ucoolib/ucoolib/arch/arch.stm32.cc b/digital/ucoolib/ucoolib/arch/arch.stm32.cc index 23c772ab..869b1d90 100644 --- a/digital/ucoolib/ucoolib/arch/arch.stm32.cc +++ b/digital/ucoolib/ucoolib/arch/arch.stm32.cc @@ -25,6 +25,7 @@ #include "ucoolib/common.hh" #include +#include namespace ucoo { @@ -34,6 +35,12 @@ arch_init (int argc, const char **argv) rcc_clock_setup_hse_3v3 (&hse_8mhz_3v3[CLOCK_3V3_120MHZ]); } +void +arch_reset () +{ + SCB_AIRCR = SCB_AIRCR_VECTKEY | SCB_AIRCR_SYSRESETREQ; +} + void halt () { -- cgit v1.2.3