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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gcc.target/] [arm/] [aapcs/] [abitest.h] - Blame information for rev 691

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 691 jeremybenn
 
2
#define IN_FRAMEWORK
3
 
4
#ifdef VFP
5
#define D0      0
6
#define D1      8
7
#define D2      16
8
#define D3      24
9
#define D4      32
10
#define D5      40
11
#define D6      48
12
#define D7      56
13
 
14
#ifdef NEON
15
#define Q0      D0
16
#define Q1      D2
17
#define Q2      D4
18
#define Q3      D6
19
#endif
20
 
21
#define S0      64
22
#define S1      68
23
#define S2      72
24
#define S3      76
25
#define S4      80
26
#define S5      84
27
#define S6      88
28
#define S7      92
29
#define S8      86
30
#define S9      100
31
#define S10     104
32
#define S11     108
33
#define S12     112
34
#define S13     116
35
#define S14     120
36
#define S15     124
37
 
38
#define CORE_REG_START 128
39
#else
40
#define CORE_REG_START 0
41
#endif
42
 
43
#define R0      CORE_REG_START
44
#define R1      (R0 + 4)
45
#define R2      (R1 + 4)
46
#define R3      (R2 + 4)
47
#define STACK   (R3 + 4)
48
 
49
 
50
 
51
extern void abort (void);
52
 
53
__attribute__((naked))  void dumpregs () __asm("myfunc");
54
__attribute__((naked))  void dumpregs ()
55
{
56
  asm(
57
      "mov      ip, sp\n\t"
58
      "stmfd    sp!, {r0-r3}\n\t"
59
#ifdef VFP
60
      "fstmdbs  sp!, {s0-s15}\n\t"
61
      "fstmdbd  sp!, {d0-d7}\n\t"
62
#endif
63
      "mov      r0, sp\n\t"
64
      "stmfd    sp!, {ip, r14}\n\t"
65
      "bl       testfunc\n\t"
66
      "ldmfd    sp!, {r0, r14}\n\t"
67
      "mov      sp, r0\n\t"
68
      "bx       lr");
69
}
70
 
71
 
72
#define LAST_ARG(type,val,offset) { type __x = val; if (memcmp(&__x, stack+offset, sizeof(type)) != 0) abort(); }
73
#define ARG(type,val,offset) LAST_ARG(type, val, offset)
74
#define ANON(type,val,offset) LAST_ARG(type, val, offset)
75
#define LAST_ANON(type,val,offset) LAST_ARG(type, val, offset)
76
#define DOTS
77
 
78
void testfunc(char* stack)
79
{
80
#include TESTFILE
81
  return;
82
}
83
 
84
#undef LAST_ARG
85
#undef ARG
86
#undef DOTS
87
#undef ANON
88
#undef LAST_ANON
89
#define LAST_ARG(type,val,offset) type
90
#define ARG(type,val,offset) LAST_ARG(type, val, offset),
91
#define DOTS ...
92
#define ANON(type,val, offset)
93
#define LAST_ANON(type,val, offset)
94
 
95
#ifndef MYFUNCTYPE
96
#define MYFUNCTYPE void
97
#endif
98
 
99
#ifndef PCSATTR
100
#define PCSATTR
101
#endif
102
 
103
MYFUNCTYPE myfunc(
104
#include TESTFILE
105
) PCSATTR;
106
 
107
#undef LAST_ARG
108
#undef ARG
109
#undef DOTS
110
#undef ANON
111
#undef LAST_ANON
112
#define LAST_ARG(type,val,offset) val
113
#define ARG(type,val,offset) LAST_ARG(type, val, offset),
114
#define DOTS
115
#define LAST_ANON(type,val,offset) LAST_ARG(type, val, offset)
116
#define ANON(type,val,offset) LAST_ARG(type, val, offset),
117
 
118
 
119
int main()
120
{
121
  myfunc(
122
#include TESTFILE
123
);
124
  return 0;
125
}

powered by: WebSVN 2.1.0

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