File : s-macres-8349e.adb


   1 ------------------------------------------------------------------------------
   2 --                                                                          --
   3 --                         GNAT RUN-TIME COMPONENTS                         --
   4 --                                                                          --
   5 --                   S Y S T E M .  M A C H I N E _ R E S E T               --
   6 --                                                                          --
   7 --                                 B o d y                                  --
   8 --                                                                          --
   9 --            Copyright (C) 2011-2016, Free Software Foundation, Inc.       --
  10 --                                                                          --
  11 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  12 -- terms of the  GNU General Public License as published  by the Free Soft- --
  13 -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  14 -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  15 -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
  16 -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
  17 --                                                                          --
  18 --                                                                          --
  19 --                                                                          --
  20 --                                                                          --
  21 --                                                                          --
  22 -- You should have received a copy of the GNU General Public License and    --
  23 -- a copy of the GCC Runtime Library Exception along with this program;     --
  24 -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
  25 -- <http://www.gnu.org/licenses/>.                                          --
  26 --                                                                          --
  27 -- GNAT was originally developed  by the GNAT team at  New York University. --
  28 -- Extensive contributions were provided by Ada Core Technologies Inc.      --
  29 --                                                                          --
  30 ------------------------------------------------------------------------------
  31 
  32 with System.BB.Board_Parameters; use System.BB.Board_Parameters;
  33 with Interfaces; use Interfaces;
  34 
  35 package body System.Machine_Reset is
  36    procedure OS_Exit;
  37    pragma Export (Ada, OS_Exit, "_exit");
  38    pragma No_Return (OS_Exit);
  39    --  Reset the board or shut-down the simulator
  40 
  41    procedure OS_Abort;
  42    pragma Export (Ada, OS_Abort, "abort");
  43    pragma No_Return (OS_Abort);
  44    --  Same as OS_Exit (rename in body to allow multiple pragma Export)
  45 
  46    --------------
  47    -- OS_Abort --
  48    --------------
  49 
  50    procedure OS_Abort renames OS_Exit;
  51 
  52    -------------
  53    -- OS_Exit --
  54    -------------
  55 
  56    procedure OS_Exit is
  57       RPR : Unsigned_32;
  58       for RPR'Address use IMMRBAR + 16#0918#;
  59       pragma Volatile (RPR);
  60       pragma Import (Ada, RPR);
  61 
  62       RCR : Unsigned_32;
  63       for RCR'Address use IMMRBAR + 16#091C#;
  64       pragma Volatile (RCR);
  65       pragma Import (Ada, RCR);
  66 
  67    begin
  68       --  Enable access
  69       RPR := 16#52535445#;
  70 
  71       --  Trigger an hard reset
  72 
  73       RCR := 16#2#;
  74       --  Make sure we don't return before reset takes effect
  75 
  76       loop
  77          null;
  78       end loop;
  79    end OS_Exit;
  80 
  81    ----------
  82    -- Stop --
  83    ----------
  84 
  85    procedure Stop renames OS_Exit;
  86 end System.Machine_Reset;