@@ -15,6 +15,7 @@ use crate::ops::{Deref, DerefMut};
15
15
not( target_arch = "aarch64" ) ,
16
16
not( target_arch = "powerpc" ) ,
17
17
not( target_arch = "s390x" ) ,
18
+ not( target_arch = "xtensa" ) ,
18
19
not( target_arch = "x86_64" )
19
20
) ,
20
21
all( target_arch = "aarch64" , target_vendor = "apple" ) ,
@@ -37,6 +38,7 @@ pub struct VaListImpl<'f> {
37
38
not( target_arch = "aarch64" ) ,
38
39
not( target_arch = "powerpc" ) ,
39
40
not( target_arch = "s390x" ) ,
41
+ not( target_arch = "xtensa" ) ,
40
42
not( target_arch = "x86_64" )
41
43
) ,
42
44
all( target_arch = "aarch64" , target_vendor = "apple" ) ,
@@ -113,6 +115,24 @@ pub struct VaListImpl<'f> {
113
115
_marker : PhantomData < & ' f mut & ' f c_void > ,
114
116
}
115
117
118
+ /// Xtensa ABI implementation of a `va_list`.
119
+ #[ cfg( target_arch = "xtensa" ) ]
120
+ #[ repr( C ) ]
121
+ #[ derive( Debug ) ]
122
+ #[ unstable(
123
+ feature = "c_variadic" ,
124
+ reason = "the `c_variadic` feature has not been properly tested on \
125
+ all supported platforms",
126
+ issue = "44930"
127
+ ) ]
128
+ #[ lang = "va_list" ]
129
+ pub struct VaListImpl < ' f > {
130
+ stk : * mut i32 ,
131
+ reg : * mut i32 ,
132
+ ndx : i32 ,
133
+ _marker : PhantomData < & ' f mut & ' f i32 > ,
134
+ }
135
+
116
136
/// A wrapper for a `va_list`
117
137
#[ repr( transparent) ]
118
138
#[ derive( Debug ) ]
@@ -122,6 +142,7 @@ pub struct VaList<'a, 'f: 'a> {
122
142
not( target_arch = "aarch64" ) ,
123
143
not( target_arch = "powerpc" ) ,
124
144
not( target_arch = "s390x" ) ,
145
+ not( target_arch = "xtensa" ) ,
125
146
not( target_arch = "x86_64" )
126
147
) ,
127
148
all( target_arch = "aarch64" , target_vendor = "apple" ) ,
@@ -136,6 +157,7 @@ pub struct VaList<'a, 'f: 'a> {
136
157
target_arch = "aarch64" ,
137
158
target_arch = "powerpc" ,
138
159
target_arch = "s390x" ,
160
+ target_arch = "xtensa" ,
139
161
target_arch = "x86_64"
140
162
) ,
141
163
any( not( target_arch = "aarch64" ) , not( target_vendor = "apple" ) ) ,
@@ -153,6 +175,7 @@ pub struct VaList<'a, 'f: 'a> {
153
175
not( target_arch = "aarch64" ) ,
154
176
not( target_arch = "powerpc" ) ,
155
177
not( target_arch = "s390x" ) ,
178
+ not( target_arch = "xtensa" ) ,
156
179
not( target_arch = "x86_64" )
157
180
) ,
158
181
all( target_arch = "aarch64" , target_vendor = "apple" ) ,
@@ -173,6 +196,7 @@ impl<'f> VaListImpl<'f> {
173
196
target_arch = "aarch64" ,
174
197
target_arch = "powerpc" ,
175
198
target_arch = "s390x" ,
199
+ target_arch = "xtensa" ,
176
200
target_arch = "x86_64"
177
201
) ,
178
202
any( not( target_arch = "aarch64" ) , not( target_vendor = "apple" ) ) ,
0 commit comments