Skip to content

Commit c8246d6

Browse files
committed
Tricore: add support for FCALL routines
1 parent 14527b0 commit c8246d6

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed

Ghidra/Processors/tricore/data/languages/tricore.cspec

+79
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,85 @@
124124
the correct return storage location when there are multiple return location types
125125
-->
126126

127+
<!-- The same as __stdcall, but with a different stackshift to support FCALL / FRET opcodes -->
128+
<prototype name="__fastcall" extrapop="4" stackshift="4">
129+
<input>
130+
<pentry minsize="4" maxsize="4" storage="hiddenret">
131+
<register name="a4"/>
132+
</pentry>
133+
<pentry minsize="4" maxsize="4" metatype="ptr"> <!-- This is the first pointer -->
134+
<register name="a4"/>
135+
</pentry>
136+
<pentry minsize="4" maxsize="4" metatype="ptr">
137+
<register name="a5"/>
138+
</pentry>
139+
<pentry minsize="4" maxsize="4" metatype="ptr">
140+
<register name="a6"/>
141+
</pentry>
142+
<pentry minsize="4" maxsize="4" metatype="ptr">
143+
<register name="a7"/>
144+
</pentry>
145+
<pentry minsize="1" maxsize="4" extension="inttype"> <!-- This is the first non pointer -->
146+
<register name="d4"/>
147+
</pentry>
148+
<pentry minsize="1" maxsize="4" extension="inttype">
149+
<register name="d5"/>
150+
</pentry>
151+
<pentry minsize="5" maxsize="8"> <!-- This is the first >4 byte non pointer -->
152+
<register name="e4"/>
153+
</pentry>
154+
<pentry minsize="1" maxsize="4" extension="inttype">
155+
<register name="d6"/>
156+
</pentry>
157+
<pentry minsize="1" maxsize="4" extension="inttype">
158+
<register name="d7"/>
159+
</pentry>
160+
<pentry minsize="5" maxsize="8">
161+
<register name="e6"/>
162+
</pentry>
163+
<pentry minsize="1" maxsize="500" align="4">
164+
<addr offset="0" space="stack"/>
165+
</pentry>
166+
<rule>
167+
<datatype name="struct" minsize="17"/>
168+
<convert_to_ptr/>
169+
</rule>
170+
</input>
171+
172+
<output>
173+
<pentry minsize="4" maxsize="4" metatype="ptr">
174+
<register name="a2"/>
175+
</pentry>
176+
<pentry minsize="1" maxsize="4" extension="inttype">
177+
<register name="d2"/>
178+
</pentry>
179+
<pentry minsize="5" maxsize="8">
180+
<register name="e2"/>
181+
</pentry>
182+
</output>
183+
<unaffected>
184+
<register name="d8"/>
185+
<register name="d9"/>
186+
<register name="d10"/>
187+
<register name="d11"/>
188+
<register name="d12"/>
189+
<register name="d13"/>
190+
<register name="d14"/>
191+
<register name="d15"/>
192+
<register name="a0"/>
193+
<register name="a1"/>
194+
<register name="a8"/>
195+
<register name="a9"/>
196+
<register name="a10"/>
197+
<register name="a11"/>
198+
<register name="a12"/>
199+
<register name="a13"/>
200+
<register name="a14"/>
201+
<register name="a15"/>
202+
</unaffected>
203+
</prototype>
204+
205+
127206
<callotherfixup targetop="saveCallerState">
128207
<pcode>
129208
<input name="fcx"/>

0 commit comments

Comments
 (0)