mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-09-28 17:11:11 -09:00
GP-183_emteere split cspec for SH2A which includes floating point
registers. Couldn't use superh.cspec. 1/2 don't have these floating point registers
This commit is contained in:
@@ -29,19 +29,6 @@
|
||||
<default_proto>
|
||||
<prototype name="__stdcall" extrapop="0" stackshift="0">
|
||||
<input>
|
||||
<pentry minsize="4" maxsize="4" metatype="float">
|
||||
<register name="fr4"/>
|
||||
</pentry>
|
||||
<pentry minsize="4" maxsize="4" metatype="float">
|
||||
<register name="fr5"/>
|
||||
</pentry>
|
||||
<pentry minsize="4" maxsize="4" metatype="float">
|
||||
<register name="fr6"/>
|
||||
</pentry>
|
||||
<pentry minsize="4" maxsize="4" metatype="float">
|
||||
<register name="fr7"/>
|
||||
</pentry>
|
||||
|
||||
<pentry minsize="1" maxsize="4" extension="inttype">
|
||||
<register name="r4"/>
|
||||
</pentry>
|
||||
@@ -59,9 +46,6 @@
|
||||
</pentry>
|
||||
</input>
|
||||
<output killedbycall="true">
|
||||
<pentry minsize="4" maxsize="4" metatype="float">
|
||||
<register name="fr0"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4" extension="inttype">
|
||||
<register name="r0"/>
|
||||
</pentry>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
processorspec="superh.pspec"
|
||||
id="SuperH:BE:32:SH-2A">
|
||||
<description>SuperH SH-2A processor 32-bit big-endian</description>
|
||||
<compiler name="default" spec="superh.cspec" id="default"/>
|
||||
<compiler name="default" spec="superh2a.cspec" id="default"/>
|
||||
</language>
|
||||
<language processor="SuperH"
|
||||
endian="big"
|
||||
|
||||
88
Ghidra/Processors/SuperH/data/languages/superh2a.cspec
Normal file
88
Ghidra/Processors/SuperH/data/languages/superh2a.cspec
Normal file
@@ -0,0 +1,88 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<compiler_spec>
|
||||
<data_organization> <!-- These tags were taken from https://gcc-renesas.com/manuals/SH-ABI-Specification.html-->
|
||||
<absolute_max_alignment value="0" />
|
||||
<machine_alignment value="2" />
|
||||
<default_alignment value="1" />
|
||||
<default_pointer_alignment value="4" />
|
||||
<pointer_size value="4" />
|
||||
<wchar_size value="2" />
|
||||
<short_size value="2" />
|
||||
<integer_size value="4" />
|
||||
<long_size value="4" />
|
||||
<long_long_size value="8" />
|
||||
<float_size value="4" />
|
||||
<double_size value="8" />
|
||||
<long_double_size value="8" />
|
||||
<size_alignment_map>
|
||||
<entry size="1" alignment="1" />
|
||||
<entry size="2" alignment="2" />
|
||||
<entry size="4" alignment="4" />
|
||||
<entry size="8" alignment="4" />
|
||||
</size_alignment_map>
|
||||
</data_organization>
|
||||
<global>
|
||||
<range space="ram"/>
|
||||
</global>
|
||||
<stackpointer register="r15" space="ram"/>
|
||||
<default_proto>
|
||||
<prototype name="__stdcall" extrapop="0" stackshift="0">
|
||||
<input>
|
||||
<pentry minsize="4" maxsize="4" metatype="float">
|
||||
<register name="fr4"/>
|
||||
</pentry>
|
||||
<pentry minsize="4" maxsize="4" metatype="float">
|
||||
<register name="fr5"/>
|
||||
</pentry>
|
||||
<pentry minsize="4" maxsize="4" metatype="float">
|
||||
<register name="fr6"/>
|
||||
</pentry>
|
||||
<pentry minsize="4" maxsize="4" metatype="float">
|
||||
<register name="fr7"/>
|
||||
</pentry>
|
||||
|
||||
<pentry minsize="1" maxsize="4" extension="inttype">
|
||||
<register name="r4"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4" extension="inttype">
|
||||
<register name="r5"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4" extension="inttype">
|
||||
<register name="r6"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4" extension="inttype">
|
||||
<register name="r7"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="500" align="4">
|
||||
<addr offset="0" space="stack"/>
|
||||
</pentry>
|
||||
</input>
|
||||
<output killedbycall="true">
|
||||
<pentry minsize="4" maxsize="4" metatype="float">
|
||||
<register name="fr0"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4" extension="inttype">
|
||||
<register name="r0"/>
|
||||
</pentry>
|
||||
<pentry minsize="5" maxsize="8">
|
||||
<addr space="join" piece1="r1" piece2="r0"/>
|
||||
</pentry>
|
||||
</output>
|
||||
<unaffected>
|
||||
<register name="r8"/>
|
||||
<register name="r9"/>
|
||||
<register name="r10"/>
|
||||
<register name="r11"/>
|
||||
<register name="r12"/>
|
||||
<register name="r13"/>
|
||||
<register name="r14"/>
|
||||
<register name="r15"/>
|
||||
</unaffected>
|
||||
<killedbycall>
|
||||
<register name="r2"/>
|
||||
<register name="r3"/>
|
||||
</killedbycall>
|
||||
</prototype>
|
||||
</default_proto>
|
||||
</compiler_spec>
|
||||
Reference in New Issue
Block a user