/*  armos.h -- ARMulator OS definitions:  ARM6 Instruction Emulator.
    Copyright (C) 1994 Advanced RISC Machines Ltd.
 
    This program 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 2 of the License, or
    (at your option) any later version.
 
    This program 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, write to the Free Software
    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */

/***************************************************************************\
*                   Define the initial layout of memory                     *
\***************************************************************************/

#define ADDRSUPERSTACK          0x800L   /* supervisor stack space */
#define ADDRUSERSTACK           0x80000L /* default user stack start */
#define ADDRSOFTVECTORS         0x840L   /* soft vectors are here */
#define ADDRCMDLINE             0xf00L   /* command line is here after a SWI GetEnv */
#define ADDRSOFHANDLERS         0xad0L   /* address and workspace for installed handlers */
#define SOFTVECTORCODE          0xb80L   /* default handlers */

/***************************************************************************\
*                               SWI numbers                                 *
\***************************************************************************/

#define SWI_WriteC                 0x0
#define SWI_Write0                 0x2
#define SWI_ReadC                  0x4
#define SWI_CLI                    0x5
#define SWI_GetEnv                 0x10
#define SWI_Exit                   0x11
#define SWI_EnterOS                0x16

#define SWI_GetErrno               0x60
#define SWI_Clock                  0x61
#define SWI_Time                   0x63
#define SWI_Remove                 0x64
#define SWI_Rename                 0x65
#define SWI_Open                   0x66

#define SWI_Close                  0x68
#define SWI_Write                  0x69
#define SWI_Read                   0x6a
#define SWI_Seek                   0x6b
#define SWI_Flen                   0x6c

#define SWI_IsTTY                  0x6e
#define SWI_TmpNam                 0x6f
#define SWI_InstallHandler         0x70
#define SWI_GenerateError          0x71

#define SWI_Breakpoint             0x180000 /* see gdb's tm-arm.h */

#define AngelSWI_ARM		   0x123456
#define AngelSWI_Thumb		   0xAB

/* The reason codes: */
#define AngelSWI_Reason_Open		(0x01)
#define AngelSWI_Reason_Close		(0x02)
#define AngelSWI_Reason_WriteC		(0x03)
#define AngelSWI_Reason_Write0		(0x04)
#define AngelSWI_Reason_Write		(0x05)
#define AngelSWI_Reason_Read		(0x06)
#define AngelSWI_Reason_ReadC		(0x07)
#define AngelSWI_Reason_IsTTY		(0x09)
#define AngelSWI_Reason_Seek		(0x0A)
#define AngelSWI_Reason_FLen		(0x0C)
#define AngelSWI_Reason_TmpNam		(0x0D)
#define AngelSWI_Reason_Remove		(0x0E)
#define AngelSWI_Reason_Rename		(0x0F)
#define AngelSWI_Reason_Clock		(0x10)
#define AngelSWI_Reason_Time		(0x11)
#define AngelSWI_Reason_System		(0x12)
#define AngelSWI_Reason_Errno		(0x13)
#define AngelSWI_Reason_GetCmdLine 	(0x15)
#define AngelSWI_Reason_HeapInfo 	(0x16)
#define AngelSWI_Reason_EnterSVC 	(0x17)
#define AngelSWI_Reason_ReportException (0x18)
#define ADP_Stopped_ApplicationExit 	((2 << 16) + 38)
#define ADP_Stopped_RunTimeError 	((2 << 16) + 34)

#define FPESTART 0x2000L
#define FPEEND 0x8000L
#define FPEOLDVECT FPESTART + 0x100L + 8L * 16L + 4L /* stack + 8 regs + fpsr */
#define FPENEWVECT(addr) 0xea000000L + ((addr) >> 2) - 3L /* branch from 4 to 0x2400 */

extern unsigned long fpecode[] ;
extern unsigned long fpesize ;
