1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
|
#include <stdio.h>
#include <libmpu.h>
/* Capture the LibMPU values before the public assembler header is included. */
enum
{
LIBMPU_EUNKNOWN = __EUNKNOWN__,
LIBMPU_I_ESIZE = __I_ESIZE__,
LIBMPU_I_ESHIFT = __I_ESHIFT__,
LIBMPU_I_ENUMBER = __I_ENUMBER__,
LIBMPU_I_ERADIX = __I_ERADIX__,
LIBMPU_I_MAX_ERRNO = __I_MAX_ERRNO,
LIBMPU_R_ESIZE = __R_ESIZE__,
LIBMPU_R_ETRUNC = __R_ETRUNC__,
LIBMPU_R_MAX_ERRNO = __R_MAX_ERRNO,
LIBMPU_C_EDIVZEROBYZERO = __C_EDIVZEROBYZERO__,
LIBMPU_C_ELOGOFZERO = __C_ELOGOFZERO__,
LIBMPU_C_EPOWOFZERO = __C_EPOWOFZERO__,
LIBMPU_C_MAX_ERRNO = __C_MAX_ERRNO,
LIBMPU_DOMAIN = __DOMAIN__,
LIBMPU_SING = __SING__,
LIBMPU_OVERFLOW = __OVERFLOW__,
LIBMPU_UNDERFLOW = __UNDERFLOW__,
LIBMPU_TLOSS = __TLOSS__,
LIBMPU_PLOSS = __PLOSS__,
LIBMPU_INVALID = __INVALID__,
LIBMPU_INEXACT = __INEXACT__,
LIBMPU_M_MAX_ERRNO = __M_MAX_ERRNO
};
#include "../cpu/cpu-errno.h"
#include <sys/asm/errno.h>
#include <sys/asm/mpu-errno.h>
#define CHECK_SYSTEM_ERRNO(name) \
do { \
if( (name) != (__MCPU_ ## name) ) \
{ \
fprintf( stderr, #name " ABI mismatch: public=%d internal=%d\n", \
(int)(name), (int)(__MCPU_ ## name) ); \
return( 1 ); \
} \
} while( 0 )
int
main( void )
{
CHECK_SYSTEM_ERRNO( EPERM );
CHECK_SYSTEM_ERRNO( ENOENT );
CHECK_SYSTEM_ERRNO( ESRCH );
CHECK_SYSTEM_ERRNO( EINTR );
CHECK_SYSTEM_ERRNO( EIO );
CHECK_SYSTEM_ERRNO( ENXIO );
CHECK_SYSTEM_ERRNO( E2BIG );
CHECK_SYSTEM_ERRNO( ENOEXEC );
CHECK_SYSTEM_ERRNO( EBADF );
CHECK_SYSTEM_ERRNO( ECHILD );
CHECK_SYSTEM_ERRNO( EAGAIN );
CHECK_SYSTEM_ERRNO( ENOMEM );
CHECK_SYSTEM_ERRNO( EACCES );
CHECK_SYSTEM_ERRNO( EFAULT );
CHECK_SYSTEM_ERRNO( ENOTBLK );
CHECK_SYSTEM_ERRNO( EBUSY );
CHECK_SYSTEM_ERRNO( EEXIST );
CHECK_SYSTEM_ERRNO( EXDEV );
CHECK_SYSTEM_ERRNO( ENODEV );
CHECK_SYSTEM_ERRNO( ENOTDIR );
CHECK_SYSTEM_ERRNO( EISDIR );
CHECK_SYSTEM_ERRNO( EINVAL );
CHECK_SYSTEM_ERRNO( ENFILE );
CHECK_SYSTEM_ERRNO( EMFILE );
CHECK_SYSTEM_ERRNO( ENOTTY );
CHECK_SYSTEM_ERRNO( ETXTBSY );
CHECK_SYSTEM_ERRNO( EFBIG );
CHECK_SYSTEM_ERRNO( ENOSPC );
CHECK_SYSTEM_ERRNO( ESPIPE );
CHECK_SYSTEM_ERRNO( EROFS );
CHECK_SYSTEM_ERRNO( EMLINK );
CHECK_SYSTEM_ERRNO( EPIPE );
CHECK_SYSTEM_ERRNO( EDOM );
CHECK_SYSTEM_ERRNO( ERANGE );
CHECK_SYSTEM_ERRNO( EDEADLK );
CHECK_SYSTEM_ERRNO( ENAMETOOLONG );
CHECK_SYSTEM_ERRNO( ENOLCK );
CHECK_SYSTEM_ERRNO( ENOSYS );
CHECK_SYSTEM_ERRNO( ENOTEMPTY );
CHECK_SYSTEM_ERRNO( ELOOP );
CHECK_SYSTEM_ERRNO( ENOMSG );
CHECK_SYSTEM_ERRNO( EIDRM );
CHECK_SYSTEM_ERRNO( ECHRNG );
CHECK_SYSTEM_ERRNO( EL2NSYNC );
CHECK_SYSTEM_ERRNO( EL3HLT );
CHECK_SYSTEM_ERRNO( EL3RST );
CHECK_SYSTEM_ERRNO( ELNRNG );
CHECK_SYSTEM_ERRNO( EUNATCH );
CHECK_SYSTEM_ERRNO( ENOCSI );
CHECK_SYSTEM_ERRNO( EL2HLT );
CHECK_SYSTEM_ERRNO( EBADE );
CHECK_SYSTEM_ERRNO( EBADR );
CHECK_SYSTEM_ERRNO( EXFULL );
CHECK_SYSTEM_ERRNO( ENOANO );
CHECK_SYSTEM_ERRNO( EBADRQC );
CHECK_SYSTEM_ERRNO( EBADSLT );
CHECK_SYSTEM_ERRNO( EBFONT );
CHECK_SYSTEM_ERRNO( ENOSTR );
CHECK_SYSTEM_ERRNO( ENODATA );
CHECK_SYSTEM_ERRNO( ETIME );
CHECK_SYSTEM_ERRNO( ENOSR );
CHECK_SYSTEM_ERRNO( ENONET );
CHECK_SYSTEM_ERRNO( ENOPKG );
CHECK_SYSTEM_ERRNO( EREMOTE );
CHECK_SYSTEM_ERRNO( ENOLINK );
CHECK_SYSTEM_ERRNO( EADV );
CHECK_SYSTEM_ERRNO( ESRMNT );
CHECK_SYSTEM_ERRNO( ECOMM );
CHECK_SYSTEM_ERRNO( EPROTO );
CHECK_SYSTEM_ERRNO( EMULTIHOP );
CHECK_SYSTEM_ERRNO( EDOTDOT );
CHECK_SYSTEM_ERRNO( EBADMSG );
CHECK_SYSTEM_ERRNO( EOVERFLOW );
CHECK_SYSTEM_ERRNO( ENOTUNIQ );
CHECK_SYSTEM_ERRNO( EBADFD );
CHECK_SYSTEM_ERRNO( EREMCHG );
CHECK_SYSTEM_ERRNO( ELIBACC );
CHECK_SYSTEM_ERRNO( ELIBBAD );
CHECK_SYSTEM_ERRNO( ELIBSCN );
CHECK_SYSTEM_ERRNO( ELIBMAX );
CHECK_SYSTEM_ERRNO( ELIBEXEC );
CHECK_SYSTEM_ERRNO( EILSEQ );
CHECK_SYSTEM_ERRNO( ERESTART );
CHECK_SYSTEM_ERRNO( ESTRPIPE );
CHECK_SYSTEM_ERRNO( EUSERS );
CHECK_SYSTEM_ERRNO( ENOTSOCK );
CHECK_SYSTEM_ERRNO( EDESTADDRREQ );
CHECK_SYSTEM_ERRNO( EMSGSIZE );
CHECK_SYSTEM_ERRNO( EPROTOTYPE );
CHECK_SYSTEM_ERRNO( ENOPROTOOPT );
CHECK_SYSTEM_ERRNO( EPROTONOSUPPORT );
CHECK_SYSTEM_ERRNO( ESOCKTNOSUPPORT );
CHECK_SYSTEM_ERRNO( EOPNOTSUPP );
CHECK_SYSTEM_ERRNO( EPFNOSUPPORT );
CHECK_SYSTEM_ERRNO( EAFNOSUPPORT );
CHECK_SYSTEM_ERRNO( EADDRINUSE );
CHECK_SYSTEM_ERRNO( EADDRNOTAVAIL );
CHECK_SYSTEM_ERRNO( ENETDOWN );
CHECK_SYSTEM_ERRNO( ENETUNREACH );
CHECK_SYSTEM_ERRNO( ENETRESET );
CHECK_SYSTEM_ERRNO( ECONNABORTED );
CHECK_SYSTEM_ERRNO( ECONNRESET );
CHECK_SYSTEM_ERRNO( ENOBUFS );
CHECK_SYSTEM_ERRNO( EISCONN );
CHECK_SYSTEM_ERRNO( ENOTCONN );
CHECK_SYSTEM_ERRNO( ESHUTDOWN );
CHECK_SYSTEM_ERRNO( ETOOMANYREFS );
CHECK_SYSTEM_ERRNO( ETIMEDOUT );
CHECK_SYSTEM_ERRNO( ECONNREFUSED );
CHECK_SYSTEM_ERRNO( EHOSTDOWN );
CHECK_SYSTEM_ERRNO( EHOSTUNREACH );
CHECK_SYSTEM_ERRNO( EALREADY );
CHECK_SYSTEM_ERRNO( EINPROGRESS );
CHECK_SYSTEM_ERRNO( ESTALE );
CHECK_SYSTEM_ERRNO( EUCLEAN );
CHECK_SYSTEM_ERRNO( ENOTNAM );
CHECK_SYSTEM_ERRNO( ENAVAIL );
CHECK_SYSTEM_ERRNO( EISNAM );
CHECK_SYSTEM_ERRNO( EREMOTEIO );
CHECK_SYSTEM_ERRNO( EDQUOT );
CHECK_SYSTEM_ERRNO( ENOMEDIUM );
CHECK_SYSTEM_ERRNO( EMEDIUMTYPE );
CHECK_SYSTEM_ERRNO( ECANCELED );
CHECK_SYSTEM_ERRNO( ENOKEY );
CHECK_SYSTEM_ERRNO( EKEYEXPIRED );
CHECK_SYSTEM_ERRNO( EKEYREVOKED );
CHECK_SYSTEM_ERRNO( EKEYREJECTED );
CHECK_SYSTEM_ERRNO( EOWNERDEAD );
CHECK_SYSTEM_ERRNO( ENOTRECOVERABLE );
CHECK_SYSTEM_ERRNO( ERFKILL );
CHECK_SYSTEM_ERRNO( EHWPOISON );
CHECK_SYSTEM_ERRNO( EFTYPE );
CHECK_SYSTEM_ERRNO( EUNKNOWN );
if( EWOULDBLOCK != EAGAIN || __MCPU_EWOULDBLOCK != __MCPU_EAGAIN )
return( 1 );
if( EDEADLOCK != EDEADLK || __MCPU_EDEADLOCK != __MCPU_EDEADLK )
return( 1 );
if( ENOTSUP != EOPNOTSUPP || __MCPU_ENOTSUP != __MCPU_EOPNOTSUPP )
return( 1 );
if( __EUNKNOWN__ != LIBMPU_EUNKNOWN ) return( 1 );
if( __I_ESIZE__ != LIBMPU_I_ESIZE ||
__I_ESHIFT__ != LIBMPU_I_ESHIFT ||
__I_ENUMBER__ != LIBMPU_I_ENUMBER ||
__I_ERADIX__ != LIBMPU_I_ERADIX ||
__I_MAX_ERRNO != LIBMPU_I_MAX_ERRNO )
return( 1 );
if( __R_ESIZE__ != LIBMPU_R_ESIZE ||
__R_ETRUNC__ != LIBMPU_R_ETRUNC ||
__R_MAX_ERRNO != LIBMPU_R_MAX_ERRNO )
return( 1 );
if( __C_EDIVZEROBYZERO__ != LIBMPU_C_EDIVZEROBYZERO ||
__C_ELOGOFZERO__ != LIBMPU_C_ELOGOFZERO ||
__C_EPOWOFZERO__ != LIBMPU_C_EPOWOFZERO ||
__C_MAX_ERRNO != LIBMPU_C_MAX_ERRNO )
return( 1 );
if( __DOMAIN__ != LIBMPU_DOMAIN || __SING__ != LIBMPU_SING ||
__OVERFLOW__ != LIBMPU_OVERFLOW ||
__UNDERFLOW__ != LIBMPU_UNDERFLOW || __TLOSS__ != LIBMPU_TLOSS ||
__PLOSS__ != LIBMPU_PLOSS || __INVALID__ != LIBMPU_INVALID ||
__INEXACT__ != LIBMPU_INEXACT || __M_MAX_ERRNO != LIBMPU_M_MAX_ERRNO )
return( 1 );
return( 0 );
} /* End of main() */
|