include/hcs12/board/arch/exit.h
author lbessard
Fri, 22 Aug 2008 14:17:31 +0200
changeset 511 34300a28ad27
parent 0 4472ee7c6c3e
permissions -rw-r--r--
Bug with x86_64 and gcc without -fPIC cflags fixed
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     1
/*
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     2
This file is part of CanFestival, a library implementing CanOpen Stack. 
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     3
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     4
Copyright (C): Edouard TISSERANT and Francis DUPIN
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     5
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     6
See COPYING file for copyrights details.
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     7
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     8
This library is free software; you can redistribute it and/or
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     9
modify it under the terms of the GNU Lesser General Public
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    10
License as published by the Free Software Foundation; either
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    11
version 2.1 of the License, or (at your option) any later version.
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    12
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    13
This library is distributed in the hope that it will be useful,
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    14
but WITHOUT ANY WARRANTY; without even the implied warranty of
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    15
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    16
Lesser General Public License for more details.
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    17
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    18
You should have received a copy of the GNU Lesser General Public
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    19
License along with this library; if not, write to the Free Software
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    20
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    21
*/
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    22
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    23
/* exit.h - 32K Board specific parameters
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    24
   Copyright (C) 2002 Free Software Foundation, Inc.
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    25
   Written by Stephane Carrez (stcarrez@nerim.fr)	
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    26
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    27
This file is free software; you can redistribute it and/or modify it
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    28
under the terms of the GNU General Public License as published by the
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    29
Free Software Foundation; either version 2, or (at your option) any
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    30
later version.
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    31
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    32
In addition to the permissions in the GNU General Public License, the
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    33
Free Software Foundation gives you unlimited permission to link the
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    34
compiled version of this file with other programs, and to distribute
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    35
those programs without any restriction coming from the use of this
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    36
file.  (The General Public License restrictions do apply in other
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    37
respects; for example, they cover modification of the file, and
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    38
distribution when not linked into another program.)
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    39
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    40
This file is distributed in the hope that it will be useful, but
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    41
WITHOUT ANY WARRANTY; without even the implied warranty of
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    42
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    43
General Public License for more details.
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    44
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    45
You should have received a copy of the GNU General Public License
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    46
along with this program; see the file COPYING.  If not, write to
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    47
the Free Software Foundation, 59 Temple Place - Suite 330,
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    48
Boston, MA 02111-1307, USA.  */
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    49
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    50
#ifndef _M68HC11_ARCH_32K_EXIT_H
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    51
#define _M68HC11_ARCH_32K_EXIT_H
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    52
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    53
extern void _exit (short status) __attribute__((noreturn));
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    54
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    55
/* For the simulator, the wai stops everything and exits with the
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    56
   error code stored in register d.
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    57
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    58
   For a real 68HC11, enable interrupts and wait forever.  */
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    59
extern inline void
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    60
_exit (short status)
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    61
{
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    62
  /* Use 'd' constraint to force the status to be in the D
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    63
     register before execution of the asm.  */
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    64
  while (1)
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    65
    {
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    66
      __asm__ __volatile__ ("cli\n"
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    67
                            "wai" : : "d"(status));
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    68
    }
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    69
}
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    70
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    71
#endif