Skip to content

Commit e1a2362

Browse files
committed
GP-4319 minor improvements
1 parent 7ceb740 commit e1a2362

File tree

1 file changed

+11
-70
lines changed

1 file changed

+11
-70
lines changed

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

+11-70
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,11 @@
3434

3535
<stackpointer register="a10" space="ram"/>
3636
<default_proto>
37-
<prototype name="__stdcall" extrapop="0" stackshift="0" strategy="register">
37+
<prototype name="__stdcall" extrapop="0" stackshift="0">
3838
<input>
39+
<pentry minsize="4" maxsize="4" storage="hiddenret">
40+
<register name="a4"/>
41+
</pentry>
3942
<pentry minsize="4" maxsize="4" metatype="ptr"> <!-- This is the first pointer -->
4043
<register name="a4"/>
4144
</pentry>
@@ -63,16 +66,13 @@
6366
<pentry minsize="5" maxsize="8"> <!-- This is the first >4 byte non pointer -->
6467
<register name="e4"/>
6568
</pentry>
69+
<pentry minsize="5" maxsize="8">
70+
<register name="e6"/>
71+
</pentry>
6672
<pentry minsize="1" maxsize="500" align="4">
67-
<addr offset="16" space="stack"/>
73+
<addr offset="0" space="stack"/>
6874
</pentry>
6975
</input>
70-
71-
<!-- There are issues with locking in function signatures with multiple possible
72-
return locations. When the signature is committed/locked, Ghidra will apply the
73-
first available location, which is incorrect. The decompiler can figure
74-
out between two variable locations but doesn't currently pass back the
75-
return storage location. A fix is needed, or use custom storage. -->
7676

7777
<output>
7878
<pentry minsize="4" maxsize="4" metatype="ptr">
@@ -105,68 +105,9 @@
105105
</prototype>
106106
</default_proto>
107107

108-
<!-- This will no longer be necessary once fixes are made to support the
109-
correct choice of storage location when there are multiple return types -->
110-
111-
<prototype name="__stdcall_data" extrapop="0" stackshift="0" strategy="register">
112-
<input>
113-
<pentry minsize="1" maxsize="4" extension="inttype">
114-
<register name="a4"/>
115-
</pentry>
116-
<pentry minsize="1" maxsize="4" extension="inttype">
117-
<register name="d4"/>
118-
</pentry>
119-
<pentry minsize="1" maxsize="4" extension="inttype">
120-
<register name="d5"/>
121-
</pentry>
122-
<pentry minsize="1" maxsize="4" extension="inttype">
123-
<register name="a5"/>
124-
</pentry>
125-
<pentry minsize="1" maxsize="4" extension="inttype">
126-
<register name="a6"/>
127-
</pentry>
128-
<pentry minsize="1" maxsize="4" extension="inttype">
129-
<register name="d6"/>
130-
</pentry>
131-
<pentry minsize="1" maxsize="4" extension="inttype">
132-
<register name="a7"/>
133-
</pentry>
134-
<pentry minsize="1" maxsize="4" extension="inttype">
135-
<register name="d7"/>
136-
</pentry>
137-
<pentry minsize="5" maxsize="8"> <!-- This is the first >4 byte non pointer -->
138-
<register name="e4"/>
139-
</pentry>
140-
<pentry minsize="1" maxsize="500" align="4">
141-
<addr offset="16" space="stack"/>
142-
</pentry>
143-
</input>
144-
<output>
145-
<pentry minsize="1" maxsize="8" extension="inttype">
146-
<register name="e2"/>
147-
</pentry>
148-
</output>
149-
<unaffected>
150-
<register name="d8"/>
151-
<register name="d9"/>
152-
<register name="d10"/>
153-
<register name="d11"/>
154-
<register name="d12"/>
155-
<register name="d13"/>
156-
<register name="d14"/>
157-
<register name="d15"/>
158-
<register name="a0"/>
159-
<register name="a1"/>
160-
<register name="a8"/>
161-
<register name="a9"/>
162-
<register name="a10"/>
163-
<register name="a11"/>
164-
<register name="a12"/>
165-
<register name="a13"/>
166-
<register name="a14"/>
167-
<register name="a15"/>
168-
</unaffected>
169-
</prototype>
108+
<!-- __stdcall_data calling convention removed, no longer necessary as decompiler will return
109+
the correct return storage location when there are multiple return location types
110+
-->
170111

171112
<callotherfixup targetop="saveCallerState">
172113
<pcode>

0 commit comments

Comments
 (0)