@@ -5,7 +5,7 @@ use rustc_data_structures::fx::{FxHashMap, FxIndexSet};
5
5
use rustc_macros:: { Decodable , Encodable , HashStable_Generic } ;
6
6
use rustc_span:: Symbol ;
7
7
8
- use crate :: abi:: Size ;
8
+ use crate :: abi:: { Endian , Size } ;
9
9
use crate :: spec:: { RelocModel , Target } ;
10
10
11
11
pub struct ModifierInfo {
@@ -893,6 +893,7 @@ pub enum InlineAsmClobberAbi {
893
893
RiscV ,
894
894
LoongArch ,
895
895
S390x ,
896
+ PowerPC64ElfV2 ,
896
897
}
897
898
898
899
impl InlineAsmClobberAbi {
@@ -946,6 +947,12 @@ impl InlineAsmClobberAbi {
946
947
"C" | "system" => Ok ( InlineAsmClobberAbi :: S390x ) ,
947
948
_ => Err ( & [ "C" , "system" ] ) ,
948
949
} ,
950
+ InlineAsmArch :: PowerPC64 => match name {
951
+ "C" | "system" if target. endian == Endian :: Little => {
952
+ Ok ( InlineAsmClobberAbi :: PowerPC64ElfV2 )
953
+ }
954
+ _ => Err ( & [ "C" , "system" ] ) ,
955
+ } ,
949
956
_ => Err ( & [ ] ) ,
950
957
}
951
958
}
@@ -1125,6 +1132,13 @@ impl InlineAsmClobberAbi {
1125
1132
a8, a9, a10, a11, a12, a13, a14, a15,
1126
1133
}
1127
1134
} ,
1135
+ InlineAsmClobberAbi :: PowerPC64ElfV2 => clobbered_regs ! {
1136
+ PowerPC PowerPCInlineAsmReg {
1137
+ r0, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12,
1138
+ xer, cr0, cr1, cr5, cr6, cr7,
1139
+ f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13,
1140
+ }
1141
+ } ,
1128
1142
}
1129
1143
}
1130
1144
}
0 commit comments