mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-02-16 07:30:16 +00:00
Moved SuperH4 processor for release.
This commit is contained in:
parent
70b5c0478c
commit
864235ee7d
0
Ghidra/Processors/SuperH4/Module.manifest
Normal file
0
Ghidra/Processors/SuperH4/Module.manifest
Normal file
11
Ghidra/Processors/SuperH4/build.gradle
Normal file
11
Ghidra/Processors/SuperH4/build.gradle
Normal file
@ -0,0 +1,11 @@
|
||||
apply from: "$rootProject.projectDir/gradle/distributableGhidraModule.gradle"
|
||||
apply from: "$rootProject.projectDir/gradle/javaProject.gradle"
|
||||
apply from: "$rootProject.projectDir/gradle/jacocoProject.gradle"
|
||||
apply from: "$rootProject.projectDir/gradle/javaTestProject.gradle"
|
||||
apply from: "$rootProject.projectDir/gradle/processorProject.gradle"
|
||||
apply plugin: 'eclipse'
|
||||
eclipse.project.name = 'Processors SuperH4'
|
||||
|
||||
dependencies {
|
||||
compile project(':Base')
|
||||
}
|
19
Ghidra/Processors/SuperH4/certification.manifest
Normal file
19
Ghidra/Processors/SuperH4/certification.manifest
Normal file
@ -0,0 +1,19 @@
|
||||
##VERSION: 2.0
|
||||
.project||GHIDRA||||END|
|
||||
Module.manifest||GHIDRA||||END|
|
||||
build.gradle||GHIDRA||||END|
|
||||
data/build.xml||GHIDRA||||END|
|
||||
data/languages/SuperH4.cspec||GHIDRA||||END|
|
||||
data/languages/SuperH4.ldefs||GHIDRA||||END|
|
||||
data/languages/SuperH4.opinion||GHIDRA||||END|
|
||||
data/languages/SuperH4.pspec||GHIDRA||||END|
|
||||
data/languages/SuperH4.sinc||GHIDRA||||END|
|
||||
data/languages/SuperH4_be.slaspec||GHIDRA||||END|
|
||||
data/languages/SuperH4_le.slaspec||GHIDRA||||END|
|
||||
data/languages/old/SuperH4-BE-16.lang||GHIDRA||||END|
|
||||
data/languages/old/SuperH4-BE-16.trans||GHIDRA||||END|
|
||||
data/languages/old/SuperH4-LE-16.lang||GHIDRA||||END|
|
||||
data/languages/old/SuperH4-LE-16.trans||GHIDRA||||END|
|
||||
data/manuals/superh4.idx||GHIDRA||||END|
|
||||
data/patterns/SuperH4_patterns.xml||GHIDRA||||END|
|
||||
data/patterns/patternconstraints.xml||GHIDRA||||END|
|
212
Ghidra/Processors/SuperH4/data/languages/SuperH4.cspec
Normal file
212
Ghidra/Processors/SuperH4/data/languages/SuperH4.cspec
Normal file
@ -0,0 +1,212 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<compiler_spec>
|
||||
<data_organization>
|
||||
<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="4" />
|
||||
<short_size value="2" />
|
||||
<integer_size value="4" />
|
||||
<long_size value="4" />
|
||||
<float_size value="4" />
|
||||
<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" growth="negative"/>
|
||||
<default_proto>
|
||||
<prototype name="__stdcall" extrapop="0" stackshift="0" strategy="register">
|
||||
<input>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="r4"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="r5"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="r6"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="r7"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="fr4"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="fr5"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="fr6"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="fr7"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="dr4"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="dr6"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="dr8"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="dr10"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="500" align="4">
|
||||
<addr offset="0" space="stack"/>
|
||||
</pentry>
|
||||
</input>
|
||||
<output>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="r0"/>
|
||||
</pentry>
|
||||
</output>
|
||||
<unaffected>
|
||||
<register name="r15"/>
|
||||
<register name="r14"/>
|
||||
<register name="r13"/>
|
||||
<register name="r12"/>
|
||||
<register name="r11"/>
|
||||
<register name="r10"/>
|
||||
<register name="r9"/>
|
||||
<register name="r8"/>
|
||||
</unaffected>
|
||||
<killedbycall>
|
||||
<register name="r0"/>
|
||||
</killedbycall>
|
||||
</prototype>
|
||||
</default_proto>
|
||||
<prototype name="__floatret" extrapop="0" stackshift="0" strategy="register">
|
||||
<input>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="r4"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="r5"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="r6"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="r7"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="fr4"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="fr5"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="fr6"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="fr7"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="dr4"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="dr6"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="dr8"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="dr10"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="500" align="4">
|
||||
<addr offset="0" space="stack"/>
|
||||
</pentry>
|
||||
</input>
|
||||
<output>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="fr0"/>
|
||||
</pentry>
|
||||
</output>
|
||||
<unaffected>
|
||||
<register name="r15"/>
|
||||
<register name="r14"/>
|
||||
<register name="r13"/>
|
||||
<register name="r12"/>
|
||||
<register name="r11"/>
|
||||
<register name="r10"/>
|
||||
<register name="r9"/>
|
||||
<register name="r8"/>
|
||||
</unaffected>
|
||||
<killedbycall>
|
||||
<register name="fr0"/>
|
||||
</killedbycall>
|
||||
</prototype>
|
||||
<prototype name="__doubleret" extrapop="0" stackshift="0" strategy="register">
|
||||
<input>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="r4"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="r5"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="r6"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="r7"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="fr4"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="fr5"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="fr6"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="fr7"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="dr4"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="dr6"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="dr8"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="dr10"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="500" align="4">
|
||||
<addr offset="0" space="stack"/>
|
||||
</pentry>
|
||||
</input>
|
||||
<output>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="dr0"/>
|
||||
</pentry>
|
||||
</output>
|
||||
<unaffected>
|
||||
<register name="r15"/>
|
||||
<register name="r14"/>
|
||||
<register name="r13"/>
|
||||
<register name="r12"/>
|
||||
<register name="r11"/>
|
||||
<register name="r10"/>
|
||||
<register name="r9"/>
|
||||
<register name="r8"/>
|
||||
</unaffected>
|
||||
<killedbycall>
|
||||
<register name="dr0"/>
|
||||
</killedbycall>
|
||||
</prototype>
|
||||
</compiler_spec>
|
31
Ghidra/Processors/SuperH4/data/languages/SuperH4.ldefs
Normal file
31
Ghidra/Processors/SuperH4/data/languages/SuperH4.ldefs
Normal file
@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<language_definitions>
|
||||
<language processor="SuperH4"
|
||||
endian="big"
|
||||
size="32"
|
||||
variant="default"
|
||||
version="1.01"
|
||||
slafile="SuperH4_be.sla"
|
||||
processorspec="SuperH4.pspec"
|
||||
manualindexfile="../manuals/superh4.idx"
|
||||
id="SuperH4:BE:32:default">
|
||||
<description>SuperH-4(a) (SH4) big endian</description>
|
||||
<compiler name="default" spec="SuperH4.cspec" id="default"/>
|
||||
<external_name tool="IDA-PRO" name="sh4b"/>
|
||||
</language>
|
||||
<language processor="SuperH4"
|
||||
endian="little"
|
||||
size="32"
|
||||
variant="default"
|
||||
version="1.01"
|
||||
slafile="SuperH4_le.sla"
|
||||
processorspec="SuperH4.pspec"
|
||||
manualindexfile="../manuals/superh4.idx"
|
||||
id="SuperH4:LE:32:default">
|
||||
<description>SuperH-4(a) (SH4) little endian</description>
|
||||
<compiler name="default" spec="SuperH4.cspec" id="default"/>
|
||||
<compiler name="Visual Studio" spec="SuperH4.cspec" id="windows"/>
|
||||
<external_name tool="IDA-PRO" name="sh4"/>
|
||||
</language>
|
||||
</language_definitions>
|
12
Ghidra/Processors/SuperH4/data/languages/SuperH4.opinion
Normal file
12
Ghidra/Processors/SuperH4/data/languages/SuperH4.opinion
Normal file
@ -0,0 +1,12 @@
|
||||
<opinions>
|
||||
<constraint loader="Portable Executable (PE)" compilerSpecID="windows">
|
||||
<constraint primary="422" processor="SuperH4" endian="little" size="32" />
|
||||
</constraint>
|
||||
<constraint loader="MS Common Object File Format (COFF)" compilerSpecID="windows">
|
||||
<constraint primary="422" processor="SuperH4" endian="little" size="32" />
|
||||
</constraint>
|
||||
<constraint loader="Executable and Linking Format (ELF)" compilerSpecID="default">
|
||||
<constraint primary="42" processor="SuperH4" endian="little" size="32" />
|
||||
<constraint primary="42" processor="SuperH4" endian="big" size="32" />
|
||||
</constraint>
|
||||
</opinions>
|
9
Ghidra/Processors/SuperH4/data/languages/SuperH4.pspec
Normal file
9
Ghidra/Processors/SuperH4/data/languages/SuperH4.pspec
Normal file
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<processor_spec>
|
||||
<properties>
|
||||
<property key="assemblyRating:SuperH4:BE:32:default" value="PLATINUM"/>
|
||||
<property key="assemblyRating:SuperH4:LE:32:default" value="PLATINUM"/>
|
||||
</properties>
|
||||
<programcounter register="PC"/>
|
||||
</processor_spec>
|
4001
Ghidra/Processors/SuperH4/data/languages/SuperH4.sinc
Normal file
4001
Ghidra/Processors/SuperH4/data/languages/SuperH4.sinc
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,8 @@
|
||||
# This module defines SuperH version 4a, but should work against versions 1,2, and 3.
|
||||
# DSP Extensions are not yet added
|
||||
|
||||
# Based on "Renesas SH-4 Software Manual: Rev 6.00 2006.09 (i.e. rej09b0318_sh_4sm.pdf)
|
||||
|
||||
@define ENDIAN "big"
|
||||
|
||||
@include "SuperH4.sinc"
|
@ -0,0 +1,9 @@
|
||||
# This module defines SuperH version 4, but should work against versions 1,2, and 3.
|
||||
# There is a SuperH version 4A (which has 4 byte instruction length) which has instructions incompatable
|
||||
# with this.
|
||||
|
||||
# Based on "Renesas SH-4 Software Manual: Rev 6.00 2006.09 (i.e. rej09b0318_sh_4sm.pdf)
|
||||
|
||||
@define ENDIAN "little"
|
||||
|
||||
@include "SuperH4.sinc"
|
131
Ghidra/Processors/SuperH4/data/languages/old/SuperH4-BE-16.lang
Normal file
131
Ghidra/Processors/SuperH4/data/languages/old/SuperH4-BE-16.lang
Normal file
@ -0,0 +1,131 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<language version="1" endian="big">
|
||||
<description>
|
||||
<id>SuperH4:BE:16:default</id>
|
||||
<processor>SuperH4</processor>
|
||||
<variant>default</variant>
|
||||
<size>16</size>
|
||||
</description>
|
||||
<compiler name="default" id="default" />
|
||||
<spaces>
|
||||
<space name="ram" type="ram" size="4" default="yes" />
|
||||
<space name="register" type="register" size="4" />
|
||||
</spaces>
|
||||
<registers>
|
||||
<context_register name="FPSCR" offset="0x810" bitsize="32">
|
||||
<field name="doubleWidthMoveMode" range="1,1" />
|
||||
<field name="doublePrecMode" range="0,0" />
|
||||
</context_register>
|
||||
<register name="r0" offset="0x0" bitsize="32" />
|
||||
<register name="r1" offset="0x4" bitsize="32" />
|
||||
<register name="r2" offset="0x8" bitsize="32" />
|
||||
<register name="r3" offset="0xc" bitsize="32" />
|
||||
<register name="r4" offset="0x10" bitsize="32" />
|
||||
<register name="r5" offset="0x14" bitsize="32" />
|
||||
<register name="r6" offset="0x18" bitsize="32" />
|
||||
<register name="r7" offset="0x1c" bitsize="32" />
|
||||
<register name="r8" offset="0x20" bitsize="32" />
|
||||
<register name="r9" offset="0x24" bitsize="32" />
|
||||
<register name="r10" offset="0x28" bitsize="32" />
|
||||
<register name="r11" offset="0x2c" bitsize="32" />
|
||||
<register name="r12" offset="0x30" bitsize="32" />
|
||||
<register name="r13" offset="0x34" bitsize="32" />
|
||||
<register name="r14" offset="0x38" bitsize="32" />
|
||||
<register name="r15" offset="0x3c" bitsize="32" />
|
||||
<register name="R0_BANK" offset="0x40" bitsize="32" />
|
||||
<register name="R1_BANK" offset="0x44" bitsize="32" />
|
||||
<register name="R2_BANK" offset="0x48" bitsize="32" />
|
||||
<register name="R3_BANK" offset="0x4c" bitsize="32" />
|
||||
<register name="R4_BANK" offset="0x50" bitsize="32" />
|
||||
<register name="R5_BANK" offset="0x54" bitsize="32" />
|
||||
<register name="R6_BANK" offset="0x58" bitsize="32" />
|
||||
<register name="R7_BANK" offset="0x5c" bitsize="32" />
|
||||
<register name="R_BANK0" offset="0x0" bitsize="256" />
|
||||
<register name="R_UNBANKED" offset="0x20" bitsize="256" />
|
||||
<register name="R_BANK1" offset="0x40" bitsize="256" />
|
||||
<register name="fr0" offset="0x200" bitsize="32" />
|
||||
<register name="fr1" offset="0x204" bitsize="32" />
|
||||
<register name="fr2" offset="0x208" bitsize="32" />
|
||||
<register name="fr3" offset="0x20c" bitsize="32" />
|
||||
<register name="fr4" offset="0x210" bitsize="32" />
|
||||
<register name="fr5" offset="0x214" bitsize="32" />
|
||||
<register name="fr6" offset="0x218" bitsize="32" />
|
||||
<register name="fr7" offset="0x21c" bitsize="32" />
|
||||
<register name="fr8" offset="0x220" bitsize="32" />
|
||||
<register name="fr9" offset="0x224" bitsize="32" />
|
||||
<register name="fr10" offset="0x228" bitsize="32" />
|
||||
<register name="fr11" offset="0x22c" bitsize="32" />
|
||||
<register name="fr12" offset="0x230" bitsize="32" />
|
||||
<register name="fr13" offset="0x234" bitsize="32" />
|
||||
<register name="fr14" offset="0x238" bitsize="32" />
|
||||
<register name="fr15" offset="0x23c" bitsize="32" />
|
||||
<register name="xf0" offset="0x240" bitsize="32" />
|
||||
<register name="xf1" offset="0x244" bitsize="32" />
|
||||
<register name="xf2" offset="0x248" bitsize="32" />
|
||||
<register name="xf3" offset="0x24c" bitsize="32" />
|
||||
<register name="xf4" offset="0x250" bitsize="32" />
|
||||
<register name="xf5" offset="0x254" bitsize="32" />
|
||||
<register name="xf6" offset="0x258" bitsize="32" />
|
||||
<register name="xf7" offset="0x25c" bitsize="32" />
|
||||
<register name="xf8" offset="0x260" bitsize="32" />
|
||||
<register name="xf9" offset="0x264" bitsize="32" />
|
||||
<register name="xf10" offset="0x268" bitsize="32" />
|
||||
<register name="xf11" offset="0x26c" bitsize="32" />
|
||||
<register name="xf12" offset="0x270" bitsize="32" />
|
||||
<register name="xf13" offset="0x274" bitsize="32" />
|
||||
<register name="xf14" offset="0x278" bitsize="32" />
|
||||
<register name="xf15" offset="0x27c" bitsize="32" />
|
||||
<register name="dr0" offset="0x200" bitsize="64" />
|
||||
<register name="dr2" offset="0x208" bitsize="64" />
|
||||
<register name="dr4" offset="0x210" bitsize="64" />
|
||||
<register name="dr6" offset="0x218" bitsize="64" />
|
||||
<register name="dr8" offset="0x220" bitsize="64" />
|
||||
<register name="dr10" offset="0x228" bitsize="64" />
|
||||
<register name="dr12" offset="0x230" bitsize="64" />
|
||||
<register name="dr14" offset="0x238" bitsize="64" />
|
||||
<register name="xd0" offset="0x240" bitsize="64" />
|
||||
<register name="xd2" offset="0x248" bitsize="64" />
|
||||
<register name="xd4" offset="0x250" bitsize="64" />
|
||||
<register name="xd6" offset="0x258" bitsize="64" />
|
||||
<register name="xd8" offset="0x260" bitsize="64" />
|
||||
<register name="xd10" offset="0x268" bitsize="64" />
|
||||
<register name="xd12" offset="0x270" bitsize="64" />
|
||||
<register name="xd14" offset="0x278" bitsize="64" />
|
||||
<register name="fv0" offset="0x200" bitsize="128" />
|
||||
<register name="fv4" offset="0x210" bitsize="128" />
|
||||
<register name="fv8" offset="0x220" bitsize="128" />
|
||||
<register name="fv12" offset="0x230" bitsize="128" />
|
||||
<register name="FPR_BANK0" offset="0x200" bitsize="512" />
|
||||
<register name="FPR_BANK1" offset="0x240" bitsize="512" />
|
||||
<register name="GBR" offset="0x400" bitsize="32" />
|
||||
<register name="SR" offset="0x404" bitsize="32" />
|
||||
<register name="SSR" offset="0x408" bitsize="32" />
|
||||
<register name="SPC" offset="0x40c" bitsize="32" />
|
||||
<register name="VBR" offset="0x410" bitsize="32" />
|
||||
<register name="SGR" offset="0x414" bitsize="32" />
|
||||
<register name="DBR" offset="0x418" bitsize="32" />
|
||||
<register name="MD" offset="0x600" bitsize="8" />
|
||||
<register name="RB" offset="0x601" bitsize="8" />
|
||||
<register name="BL" offset="0x602" bitsize="8" />
|
||||
<register name="FD" offset="0x603" bitsize="8" />
|
||||
<register name="M" offset="0x604" bitsize="8" />
|
||||
<register name="Q" offset="0x605" bitsize="8" />
|
||||
<register name="IMASK" offset="0x606" bitsize="8" />
|
||||
<register name="S" offset="0x607" bitsize="8" />
|
||||
<register name="T" offset="0x608" bitsize="8" />
|
||||
<register name="MACH" offset="0x800" bitsize="32" />
|
||||
<register name="MACL" offset="0x804" bitsize="32" />
|
||||
<register name="PR" offset="0x808" bitsize="32" />
|
||||
<register name="PC" offset="0x80c" bitsize="32" />
|
||||
<register name="FPUL" offset="0x814" bitsize="32" />
|
||||
<register name="FPSCR_RM" offset="0xa00" bitsize="8" />
|
||||
<register name="FPSCR_FLAG" offset="0xa01" bitsize="8" />
|
||||
<register name="FPSCR_ENABLE" offset="0xa02" bitsize="8" />
|
||||
<register name="FPSCR_CAUSE" offset="0xa03" bitsize="8" />
|
||||
<register name="FPSCR_DN" offset="0xa04" bitsize="8" />
|
||||
<register name="FPSCR_PR" offset="0xa05" bitsize="8" />
|
||||
<register name="FPSCR_SZ" offset="0xa06" bitsize="8" />
|
||||
<register name="FPSCR_FR" offset="0xa07" bitsize="8" />
|
||||
</registers>
|
||||
</language>
|
||||
|
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<language_translation>
|
||||
<from_language version="1">SuperH4:BE:16:default</from_language>
|
||||
<to_language version="1">SuperH4:BE:32:default</to_language>
|
||||
<map_compiler_spec from="default" to="default" />
|
||||
</language_translation>
|
||||
|
131
Ghidra/Processors/SuperH4/data/languages/old/SuperH4-LE-16.lang
Normal file
131
Ghidra/Processors/SuperH4/data/languages/old/SuperH4-LE-16.lang
Normal file
@ -0,0 +1,131 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<language version="1" endian="little">
|
||||
<description>
|
||||
<id>SuperH4:LE:16:default</id>
|
||||
<processor>SuperH4</processor>
|
||||
<variant>default</variant>
|
||||
<size>16</size>
|
||||
</description>
|
||||
<compiler name="default" id="default" />
|
||||
<spaces>
|
||||
<space name="ram" type="ram" size="4" default="yes" />
|
||||
<space name="register" type="register" size="4" />
|
||||
</spaces>
|
||||
<registers>
|
||||
<context_register name="FPSCR" offset="0x810" bitsize="32">
|
||||
<field name="doubleWidthMoveMode" range="1,1" />
|
||||
<field name="doublePrecMode" range="0,0" />
|
||||
</context_register>
|
||||
<register name="r0" offset="0x0" bitsize="32" />
|
||||
<register name="r1" offset="0x4" bitsize="32" />
|
||||
<register name="r2" offset="0x8" bitsize="32" />
|
||||
<register name="r3" offset="0xc" bitsize="32" />
|
||||
<register name="r4" offset="0x10" bitsize="32" />
|
||||
<register name="r5" offset="0x14" bitsize="32" />
|
||||
<register name="r6" offset="0x18" bitsize="32" />
|
||||
<register name="r7" offset="0x1c" bitsize="32" />
|
||||
<register name="r8" offset="0x20" bitsize="32" />
|
||||
<register name="r9" offset="0x24" bitsize="32" />
|
||||
<register name="r10" offset="0x28" bitsize="32" />
|
||||
<register name="r11" offset="0x2c" bitsize="32" />
|
||||
<register name="r12" offset="0x30" bitsize="32" />
|
||||
<register name="r13" offset="0x34" bitsize="32" />
|
||||
<register name="r14" offset="0x38" bitsize="32" />
|
||||
<register name="r15" offset="0x3c" bitsize="32" />
|
||||
<register name="R0_BANK" offset="0x40" bitsize="32" />
|
||||
<register name="R1_BANK" offset="0x44" bitsize="32" />
|
||||
<register name="R2_BANK" offset="0x48" bitsize="32" />
|
||||
<register name="R3_BANK" offset="0x4c" bitsize="32" />
|
||||
<register name="R4_BANK" offset="0x50" bitsize="32" />
|
||||
<register name="R5_BANK" offset="0x54" bitsize="32" />
|
||||
<register name="R6_BANK" offset="0x58" bitsize="32" />
|
||||
<register name="R7_BANK" offset="0x5c" bitsize="32" />
|
||||
<register name="R_BANK0" offset="0x0" bitsize="256" />
|
||||
<register name="R_UNBANKED" offset="0x20" bitsize="256" />
|
||||
<register name="R_BANK1" offset="0x40" bitsize="256" />
|
||||
<register name="fr0" offset="0x200" bitsize="32" />
|
||||
<register name="fr1" offset="0x204" bitsize="32" />
|
||||
<register name="fr2" offset="0x208" bitsize="32" />
|
||||
<register name="fr3" offset="0x20c" bitsize="32" />
|
||||
<register name="fr4" offset="0x210" bitsize="32" />
|
||||
<register name="fr5" offset="0x214" bitsize="32" />
|
||||
<register name="fr6" offset="0x218" bitsize="32" />
|
||||
<register name="fr7" offset="0x21c" bitsize="32" />
|
||||
<register name="fr8" offset="0x220" bitsize="32" />
|
||||
<register name="fr9" offset="0x224" bitsize="32" />
|
||||
<register name="fr10" offset="0x228" bitsize="32" />
|
||||
<register name="fr11" offset="0x22c" bitsize="32" />
|
||||
<register name="fr12" offset="0x230" bitsize="32" />
|
||||
<register name="fr13" offset="0x234" bitsize="32" />
|
||||
<register name="fr14" offset="0x238" bitsize="32" />
|
||||
<register name="fr15" offset="0x23c" bitsize="32" />
|
||||
<register name="xf0" offset="0x240" bitsize="32" />
|
||||
<register name="xf1" offset="0x244" bitsize="32" />
|
||||
<register name="xf2" offset="0x248" bitsize="32" />
|
||||
<register name="xf3" offset="0x24c" bitsize="32" />
|
||||
<register name="xf4" offset="0x250" bitsize="32" />
|
||||
<register name="xf5" offset="0x254" bitsize="32" />
|
||||
<register name="xf6" offset="0x258" bitsize="32" />
|
||||
<register name="xf7" offset="0x25c" bitsize="32" />
|
||||
<register name="xf8" offset="0x260" bitsize="32" />
|
||||
<register name="xf9" offset="0x264" bitsize="32" />
|
||||
<register name="xf10" offset="0x268" bitsize="32" />
|
||||
<register name="xf11" offset="0x26c" bitsize="32" />
|
||||
<register name="xf12" offset="0x270" bitsize="32" />
|
||||
<register name="xf13" offset="0x274" bitsize="32" />
|
||||
<register name="xf14" offset="0x278" bitsize="32" />
|
||||
<register name="xf15" offset="0x27c" bitsize="32" />
|
||||
<register name="dr0" offset="0x200" bitsize="64" />
|
||||
<register name="dr2" offset="0x208" bitsize="64" />
|
||||
<register name="dr4" offset="0x210" bitsize="64" />
|
||||
<register name="dr6" offset="0x218" bitsize="64" />
|
||||
<register name="dr8" offset="0x220" bitsize="64" />
|
||||
<register name="dr10" offset="0x228" bitsize="64" />
|
||||
<register name="dr12" offset="0x230" bitsize="64" />
|
||||
<register name="dr14" offset="0x238" bitsize="64" />
|
||||
<register name="xd0" offset="0x240" bitsize="64" />
|
||||
<register name="xd2" offset="0x248" bitsize="64" />
|
||||
<register name="xd4" offset="0x250" bitsize="64" />
|
||||
<register name="xd6" offset="0x258" bitsize="64" />
|
||||
<register name="xd8" offset="0x260" bitsize="64" />
|
||||
<register name="xd10" offset="0x268" bitsize="64" />
|
||||
<register name="xd12" offset="0x270" bitsize="64" />
|
||||
<register name="xd14" offset="0x278" bitsize="64" />
|
||||
<register name="fv0" offset="0x200" bitsize="128" />
|
||||
<register name="fv4" offset="0x210" bitsize="128" />
|
||||
<register name="fv8" offset="0x220" bitsize="128" />
|
||||
<register name="fv12" offset="0x230" bitsize="128" />
|
||||
<register name="FPR_BANK0" offset="0x200" bitsize="512" />
|
||||
<register name="FPR_BANK1" offset="0x240" bitsize="512" />
|
||||
<register name="GBR" offset="0x400" bitsize="32" />
|
||||
<register name="SR" offset="0x404" bitsize="32" />
|
||||
<register name="SSR" offset="0x408" bitsize="32" />
|
||||
<register name="SPC" offset="0x40c" bitsize="32" />
|
||||
<register name="VBR" offset="0x410" bitsize="32" />
|
||||
<register name="SGR" offset="0x414" bitsize="32" />
|
||||
<register name="DBR" offset="0x418" bitsize="32" />
|
||||
<register name="MD" offset="0x600" bitsize="8" />
|
||||
<register name="RB" offset="0x601" bitsize="8" />
|
||||
<register name="BL" offset="0x602" bitsize="8" />
|
||||
<register name="FD" offset="0x603" bitsize="8" />
|
||||
<register name="M" offset="0x604" bitsize="8" />
|
||||
<register name="Q" offset="0x605" bitsize="8" />
|
||||
<register name="IMASK" offset="0x606" bitsize="8" />
|
||||
<register name="S" offset="0x607" bitsize="8" />
|
||||
<register name="T" offset="0x608" bitsize="8" />
|
||||
<register name="MACH" offset="0x800" bitsize="32" />
|
||||
<register name="MACL" offset="0x804" bitsize="32" />
|
||||
<register name="PR" offset="0x808" bitsize="32" />
|
||||
<register name="PC" offset="0x80c" bitsize="32" />
|
||||
<register name="FPUL" offset="0x814" bitsize="32" />
|
||||
<register name="FPSCR_RM" offset="0xa00" bitsize="8" />
|
||||
<register name="FPSCR_FLAG" offset="0xa01" bitsize="8" />
|
||||
<register name="FPSCR_ENABLE" offset="0xa02" bitsize="8" />
|
||||
<register name="FPSCR_CAUSE" offset="0xa03" bitsize="8" />
|
||||
<register name="FPSCR_DN" offset="0xa04" bitsize="8" />
|
||||
<register name="FPSCR_PR" offset="0xa05" bitsize="8" />
|
||||
<register name="FPSCR_SZ" offset="0xa06" bitsize="8" />
|
||||
<register name="FPSCR_FR" offset="0xa07" bitsize="8" />
|
||||
</registers>
|
||||
</language>
|
||||
|
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<language_translation>
|
||||
<from_language version="1">SuperH4:LE:16:default</from_language>
|
||||
<to_language version="1">SuperH4:LE:32:default</to_language>
|
||||
<map_compiler_spec from="default" to="default" />
|
||||
</language_translation>
|
||||
|
132
Ghidra/Processors/SuperH4/data/manuals/superh4.idx
Normal file
132
Ghidra/Processors/SuperH4/data/manuals/superh4.idx
Normal file
@ -0,0 +1,132 @@
|
||||
@ rej09b0318_sh_4sm.pdf[SH-4 Software Manual Rev 6.00 2006.09]
|
||||
add, 229
|
||||
addc, 231
|
||||
addv, 232
|
||||
and, 234
|
||||
and.b, 234
|
||||
bf, 236
|
||||
bf/s, 238
|
||||
bra, 240
|
||||
braf, 242
|
||||
bsr, 244
|
||||
bsrf, 246
|
||||
bt, 248
|
||||
bt/s, 250
|
||||
clrmac, 252
|
||||
clrs, 253
|
||||
clrt, 254
|
||||
cmp/eq, 255
|
||||
cmp/ge, 255
|
||||
cmp/gt, 255
|
||||
cmp/hi, 255
|
||||
cmp/hs, 255
|
||||
cmp/pl, 255
|
||||
cmp/pz, 255
|
||||
cmp/str, 255
|
||||
cmp/eq, 255
|
||||
cmp/str, 255
|
||||
div0s, 259
|
||||
div0u, 260
|
||||
div1, 261
|
||||
dmuls.l, 266
|
||||
dmulu.l, 268
|
||||
dt, 270
|
||||
exts.b, 271
|
||||
exts.w, 271
|
||||
extu.b, 273
|
||||
extu.w, 273
|
||||
jmp, 331
|
||||
jsr, 332
|
||||
ldc, 334
|
||||
ldc.l, 334
|
||||
lds, 339
|
||||
lds.l, 339
|
||||
ldtlb, 343
|
||||
mac.l, 345
|
||||
mac, 349
|
||||
mac.w, 349
|
||||
mov, 352
|
||||
mov.b, 352
|
||||
mov.w, 352
|
||||
mov.l, 352
|
||||
mova, 367
|
||||
movca.l, 368
|
||||
movt, 369
|
||||
mul.l, 370
|
||||
muls.w, 371
|
||||
muls, 371
|
||||
mulu.w, 372
|
||||
mulu, 372
|
||||
neg, 373
|
||||
negc, 374
|
||||
nop, 375
|
||||
not, 376
|
||||
ocbi, 377
|
||||
ocbp, 378
|
||||
ocbwb, 379
|
||||
or, 380
|
||||
or.b, 380
|
||||
pref, 382
|
||||
rotcl, 383
|
||||
rotcr, 384
|
||||
rotl, 385
|
||||
rotr, 386
|
||||
rte, 387
|
||||
rts, 389
|
||||
sets, 391
|
||||
sett, 392
|
||||
shad, 393
|
||||
shal, 395
|
||||
shar, 396
|
||||
shld, 397
|
||||
shll, 399
|
||||
shll2, 400
|
||||
shll8, 400
|
||||
shll16, 400
|
||||
shlr, 402
|
||||
shlr2, 403
|
||||
shlr8, 403
|
||||
shlr16, 403
|
||||
sleep, 405
|
||||
stc, 406
|
||||
stc.l, 406
|
||||
sts, 411
|
||||
sts.l, 411
|
||||
sub, 416
|
||||
subc, 417
|
||||
subv, 418
|
||||
swap.b, 420
|
||||
swap.w, 420
|
||||
tas.b, 422
|
||||
trapa, 424
|
||||
tst, 426
|
||||
tst.b, 426
|
||||
xor, 428
|
||||
xor.b, 428
|
||||
xtrct, 430
|
||||
fabs, 275
|
||||
fadd, 276
|
||||
fcmp/eq, 279
|
||||
fcmp/gt, 279
|
||||
fcnvds, 283
|
||||
fcnvsd, 286
|
||||
fdiv, 288
|
||||
fipr, 292
|
||||
fldi0, 294
|
||||
fldi1, 295
|
||||
flds, 296
|
||||
float, 297
|
||||
fmac, 299
|
||||
fmov, 305
|
||||
fmov.s, 305
|
||||
fmul, 312
|
||||
fneg, 315
|
||||
frchg, 316
|
||||
fschg, 317
|
||||
fsqrt, 318
|
||||
fsts, 321
|
||||
fsub, 322
|
||||
ftrc, 325
|
||||
ftrv, 328
|
||||
|
||||
|
17
Ghidra/Processors/SuperH4/data/patterns/SuperH4_patterns.xml
Normal file
17
Ghidra/Processors/SuperH4/data/patterns/SuperH4_patterns.xml
Normal file
@ -0,0 +1,17 @@
|
||||
<patternlist>
|
||||
<patternpairs totalbits="32" postbits="16">
|
||||
<prepatterns>
|
||||
<data>0x0b 0x00 0x09 0x00 </data> <!-- rts _nop -->
|
||||
<data>0x0b 0x00 0xf6 0x6. </data> <!-- rts _mov.l @r15+,<rx> -->
|
||||
<data>0x0b 0x00 0x09 0x00 0x00 0x00 </data> <!-- rts _nop filler -->
|
||||
<data>0x0b 0x00 0x.. 0x7f </data> <!-- rts add <#x>,r15 -->
|
||||
</prepatterns>
|
||||
<postpatterns>
|
||||
<data>10011101 11100011 10111... ........</data> <!-- save sp, xx, sp -->
|
||||
<data>0x22 0x4f </data> <!-- sts.l pr,@-r15 -->
|
||||
<data>0x22 0x4f 1....... 0x7f </data> <!-- sts.l pr,@-r15 add#-<x>,r15 -->
|
||||
<data> 1....... 0x7f </data> <!-- add #-<x>, r15 -->
|
||||
<funcstart/>
|
||||
</postpatterns>
|
||||
</patternpairs>
|
||||
</patternlist>
|
@ -0,0 +1,5 @@
|
||||
<patternconstraints>
|
||||
<language id="SuperH4:LE:32:*">
|
||||
<patternfile>SuperH4_patterns.xml</patternfile>
|
||||
</language>
|
||||
</patternconstraints>
|
@ -0,0 +1,41 @@
|
||||
/* ###
|
||||
* IP: GHIDRA
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.test.processors;
|
||||
|
||||
import ghidra.test.processors.support.ProcessorEmulatorTestAdapter;
|
||||
import junit.framework.Test;
|
||||
|
||||
public class SuperH4_BE_O0_EmulatorTest extends ProcessorEmulatorTestAdapter {
|
||||
|
||||
private static final String LANGUAGE_ID = "SuperH4:BE:32:default";
|
||||
private static final String COMPILER_SPEC_ID = "default";
|
||||
|
||||
private static final String[] REG_DUMP_SET = new String[] {};
|
||||
|
||||
public SuperH4_BE_O0_EmulatorTest(String name) throws Exception {
|
||||
super(name, LANGUAGE_ID, COMPILER_SPEC_ID, REG_DUMP_SET);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getProcessorDesignator() {
|
||||
return "SH4_GCC_O0";
|
||||
}
|
||||
|
||||
public static Test suite() {
|
||||
return ProcessorEmulatorTestAdapter.buildEmulatorTestSuite(
|
||||
SuperH4_BE_O0_EmulatorTest.class);
|
||||
}
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
/* ###
|
||||
* IP: GHIDRA
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.test.processors;
|
||||
|
||||
import ghidra.test.processors.support.ProcessorEmulatorTestAdapter;
|
||||
import junit.framework.Test;
|
||||
|
||||
public class SuperH4_BE_O3_EmulatorTest extends ProcessorEmulatorTestAdapter {
|
||||
|
||||
private static final String LANGUAGE_ID = "SuperH4:BE:32:default";
|
||||
private static final String COMPILER_SPEC_ID = "default";
|
||||
|
||||
private static final String[] REG_DUMP_SET = new String[] {};
|
||||
|
||||
public SuperH4_BE_O3_EmulatorTest(String name) throws Exception {
|
||||
super(name, LANGUAGE_ID, COMPILER_SPEC_ID, REG_DUMP_SET);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getProcessorDesignator() {
|
||||
return "SH4_GCC_O3";
|
||||
}
|
||||
|
||||
public static Test suite() {
|
||||
return ProcessorEmulatorTestAdapter.buildEmulatorTestSuite(
|
||||
SuperH4_BE_O3_EmulatorTest.class);
|
||||
}
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
/* ###
|
||||
* IP: GHIDRA
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.test.processors;
|
||||
|
||||
import ghidra.test.processors.support.ProcessorEmulatorTestAdapter;
|
||||
import junit.framework.Test;
|
||||
|
||||
public class SuperH4_O0_EmulatorTest extends ProcessorEmulatorTestAdapter {
|
||||
|
||||
private static final String LANGUAGE_ID = "SuperH4:LE:32:default";
|
||||
private static final String COMPILER_SPEC_ID = "default";
|
||||
|
||||
private static final String[] REG_DUMP_SET = new String[] {};
|
||||
|
||||
public SuperH4_O0_EmulatorTest(String name) throws Exception {
|
||||
super(name, LANGUAGE_ID, COMPILER_SPEC_ID, REG_DUMP_SET);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getProcessorDesignator() {
|
||||
return "SH4_LE_GCC_O0";
|
||||
}
|
||||
|
||||
public static Test suite() {
|
||||
return ProcessorEmulatorTestAdapter.buildEmulatorTestSuite(SuperH4_O0_EmulatorTest.class);
|
||||
}
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
/* ###
|
||||
* IP: GHIDRA
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package ghidra.test.processors;
|
||||
|
||||
import ghidra.test.processors.support.ProcessorEmulatorTestAdapter;
|
||||
import junit.framework.Test;
|
||||
|
||||
public class SuperH4_O3_EmulatorTest extends ProcessorEmulatorTestAdapter {
|
||||
|
||||
private static final String LANGUAGE_ID = "SuperH4:LE:32:default";
|
||||
private static final String COMPILER_SPEC_ID = "default";
|
||||
|
||||
private static final String[] REG_DUMP_SET = new String[] {};
|
||||
|
||||
public SuperH4_O3_EmulatorTest(String name) throws Exception {
|
||||
super(name, LANGUAGE_ID, COMPILER_SPEC_ID, REG_DUMP_SET);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getProcessorDesignator() {
|
||||
return "SH4_LE_GCC_O3";
|
||||
}
|
||||
|
||||
public static Test suite() {
|
||||
return ProcessorEmulatorTestAdapter.buildEmulatorTestSuite(SuperH4_O3_EmulatorTest.class);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user