OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [newlib-1.17.0/] [libgloss/] [arm/] [swi.h] - Blame information for rev 866

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 148 jeremybenn
/* SWI numbers for RDP (Demon) monitor.  */
2
#define SWI_WriteC                 0x0
3
#define SWI_Write0                 0x2
4
#define SWI_ReadC                  0x4
5
#define SWI_CLI                    0x5
6
#define SWI_GetEnv                 0x10
7
#define SWI_Exit                   0x11
8
#define SWI_EnterOS                0x16
9
 
10
#define SWI_GetErrno               0x60
11
#define SWI_Clock                  0x61
12
#define SWI_Time                   0x63
13
#define SWI_Remove                 0x64
14
#define SWI_Rename                 0x65
15
#define SWI_Open                   0x66
16
 
17
#define SWI_Close                  0x68
18
#define SWI_Write                  0x69
19
#define SWI_Read                   0x6a
20
#define SWI_Seek                   0x6b
21
#define SWI_Flen                   0x6c
22
 
23
#define SWI_IsTTY                  0x6e
24
#define SWI_TmpNam                 0x6f
25
#define SWI_InstallHandler         0x70
26
#define SWI_GenerateError          0x71
27
 
28
 
29
/* Now the SWI numbers and reason codes for RDI (Angel) monitors.  */
30
#define AngelSWI_ARM                    0x123456
31
#ifdef __thumb__
32
#define AngelSWI                        0xAB
33
#else
34
#define AngelSWI                        AngelSWI_ARM
35
#endif
36
/* For Thumb-2 code use the BKPT instruction instead of SWI.  */
37
#ifdef __thumb2__
38
#define AngelSWIInsn                    "bkpt"
39
#define AngelSWIAsm                     bkpt
40
#else
41
#define AngelSWIInsn                    "swi"
42
#define AngelSWIAsm                     swi
43
#endif
44
 
45
/* The reason codes:  */
46
#define AngelSWI_Reason_Open            0x01
47
#define AngelSWI_Reason_Close           0x02
48
#define AngelSWI_Reason_WriteC          0x03
49
#define AngelSWI_Reason_Write0          0x04
50
#define AngelSWI_Reason_Write           0x05
51
#define AngelSWI_Reason_Read            0x06
52
#define AngelSWI_Reason_ReadC           0x07
53
#define AngelSWI_Reason_IsTTY           0x09
54
#define AngelSWI_Reason_Seek            0x0A
55
#define AngelSWI_Reason_FLen            0x0C
56
#define AngelSWI_Reason_TmpNam          0x0D
57
#define AngelSWI_Reason_Remove          0x0E
58
#define AngelSWI_Reason_Rename          0x0F
59
#define AngelSWI_Reason_Clock           0x10
60
#define AngelSWI_Reason_Time            0x11
61
#define AngelSWI_Reason_System          0x12
62
#define AngelSWI_Reason_Errno           0x13
63
#define AngelSWI_Reason_GetCmdLine      0x15
64
#define AngelSWI_Reason_HeapInfo        0x16
65
#define AngelSWI_Reason_EnterSVC        0x17
66
#define AngelSWI_Reason_ReportException 0x18
67
#define ADP_Stopped_ApplicationExit     ((2 << 16) + 38)
68
#define ADP_Stopped_RunTimeError        ((2 << 16) + 35)
69
 
70
#if defined(ARM_RDI_MONITOR) && !defined(__ASSEMBLER__)
71
 
72
static inline int
73
do_AngelSWI (int reason, void * arg)
74
{
75
  int value;
76
  asm volatile ("mov r0, %1; mov r1, %2; " AngelSWIInsn " %a3; mov %0, r0"
77
       : "=r" (value) /* Outputs */
78
       : "r" (reason), "r" (arg), "i" (AngelSWI) /* Inputs */
79
       : "r0", "r1", "r2", "r3", "ip", "lr", "memory", "cc"
80
                /* Clobbers r0 and r1, and lr if in supervisor mode */);
81
                /* Accordingly to page 13-77 of ARM DUI 0040D other registers
82
                   can also be clobbered.  Some memory positions may also be
83
                   changed by a system call, so they should not be kept in
84
                   registers. Note: we are assuming the manual is right and
85
                   Angel is respecting the APCS.  */
86
  return value;
87
}
88
 
89
#endif

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.