Skip to content

Commit 256165f

Browse files
committed
Initial support for PPC e200
1 parent 5c82908 commit 256165f

File tree

5 files changed

+1389
-6
lines changed

5 files changed

+1389
-6
lines changed

pypcode/processors/PowerPC/data/languages/ppc.ldefs

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@
143143
<external_name tool="IDA-PRO" name="ppc"/>
144144
<external_name tool="DWARF.register.mapping.file" name="ppc.dwarf"/>
145145
</language>
146-
<language processor="PowerPC"
146+
<language processor="PowerPC"
147147
endian="big"
148148
size="32"
149149
variant="PowerQUICC-III"
@@ -206,6 +206,24 @@
206206
<external_name tool="IDA-PRO" name="ppc"/>
207207
<external_name tool="DWARF.register.mapping.file" name="ppc.dwarf"/>
208208
</language>
209+
210+
<language processor="PowerPC"
211+
endian="big"
212+
size="32"
213+
variant="PowerPC-e200"
214+
version="1.5"
215+
slafile="ppc_32_e200.sla"
216+
processorspec="ppc_32_e200.pspec"
217+
manualindexfile="../manuals/PowerPC.idx"
218+
id="PowerPC:BE:32:e200">
219+
<description>Power ISA e200 32-bit big-endian embedded core w/VLE</description>
220+
<truncate_space space="ram" size="4"/>
221+
<compiler name="default" spec="ppc_32_e200.cspec" id="default"/>
222+
<external_name tool="gnu" name="powerpc:e200"/>
223+
<external_name tool="IDA-PRO" name="ppc"/>
224+
<external_name tool="DWARF.register.mapping.file" name="ppc.dwarf"/>
225+
</language>
226+
209227
<language processor="PowerPC"
210228
endian="big"
211229
size="32"
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<compiler_spec>
4+
<global>
5+
<range space="ram"/>
6+
</global>
7+
<stackpointer register="r1" space="ram"/>
8+
<default_proto>
9+
<prototype name="__stdcall" extrapop="0" stackshift="0">
10+
<input pointermax="8">
11+
<pentry minsize="1" maxsize="8" metatype="float" extension="float">
12+
<register name="f1"/>
13+
</pentry>
14+
<pentry minsize="1" maxsize="8" metatype="float" extension="float">
15+
<register name="f2"/>
16+
</pentry>
17+
<pentry minsize="1" maxsize="8" metatype="float" extension="float">
18+
<register name="f3"/>
19+
</pentry>
20+
<pentry minsize="1" maxsize="8" metatype="float" extension="float">
21+
<register name="f4"/>
22+
</pentry>
23+
<pentry minsize="1" maxsize="8" metatype="float" extension="float">
24+
<register name="f5"/>
25+
</pentry>
26+
<pentry minsize="1" maxsize="8" metatype="float" extension="float">
27+
<register name="f6"/>
28+
</pentry>
29+
<pentry minsize="1" maxsize="8" metatype="float" extension="float">
30+
<register name="f7"/>
31+
</pentry>
32+
<pentry minsize="1" maxsize="8" metatype="float" extension="float">
33+
<register name="f8"/>
34+
</pentry>
35+
<pentry minsize="1" maxsize="8" metatype="float" extension="float">
36+
<register name="f9"/>
37+
</pentry>
38+
<pentry minsize="1" maxsize="8" metatype="float" extension="float">
39+
<register name="f10"/>
40+
</pentry>
41+
<pentry minsize="1" maxsize="8" metatype="float" extension="float">
42+
<register name="f11"/>
43+
</pentry>
44+
<pentry minsize="1" maxsize="8" metatype="float" extension="float">
45+
<register name="f12"/>
46+
</pentry>
47+
<pentry minsize="1" maxsize="8" metatype="float" extension="float">
48+
<register name="f13"/>
49+
</pentry>
50+
<pentry minsize="1" maxsize="4">
51+
<register name="r3"/>
52+
</pentry>
53+
<pentry minsize="1" maxsize="4">
54+
<register name="r4"/>
55+
</pentry>
56+
<pentry minsize="1" maxsize="4">
57+
<register name="r5"/>
58+
</pentry>
59+
<pentry minsize="1" maxsize="4">
60+
<register name="r6"/>
61+
</pentry>
62+
<pentry minsize="1" maxsize="4">
63+
<register name="r7"/>
64+
</pentry>
65+
<pentry minsize="1" maxsize="4">
66+
<register name="r8"/>
67+
</pentry>
68+
<pentry minsize="1" maxsize="4">
69+
<register name="r9"/>
70+
</pentry>
71+
<pentry minsize="1" maxsize="4">
72+
<register name="r10"/>
73+
</pentry>
74+
<pentry minsize="1" maxsize="500" align="4">
75+
<addr offset="8" space="stack"/>
76+
</pentry>
77+
</input>
78+
<output>
79+
<pentry minsize="1" maxsize="8" metatype="float" extension="float">
80+
<register name="f1"/>
81+
</pentry>
82+
<pentry minsize="1" maxsize="4" extension="inttype">
83+
<register name="r3"/>
84+
</pentry>
85+
<pentry minsize="5" maxsize="8">
86+
<addr space="join" piece1="r3" piece2="r4"/>
87+
</pentry>
88+
</output>
89+
<unaffected>
90+
<register name="r1"/> <!-- stack pointer -->
91+
<register name="r2"/> <!-- _SDA2_BASE_ -->
92+
<register name="r13"/> <!-- _SDA_BASE_ -->
93+
<register name="r14"/>
94+
<register name="r15"/>
95+
<register name="r16"/>
96+
<register name="r17"/>
97+
<register name="r18"/>
98+
<register name="r19"/>
99+
<register name="r20"/>
100+
<register name="r21"/>
101+
<register name="r22"/>
102+
<register name="r23"/>
103+
<register name="r24"/>
104+
<register name="r25"/>
105+
<register name="r26"/>
106+
<register name="r27"/>
107+
<register name="r28"/>
108+
<register name="r29"/>
109+
<register name="r30"/>
110+
<register name="r31"/>
111+
<register name="cr2"/>
112+
<register name="cr3"/>
113+
<register name="cr4"/>
114+
</unaffected>
115+
</prototype>
116+
</default_proto>
117+
118+
<callfixup name="get_pc_thunk_lr">
119+
<pcode>
120+
<body><![CDATA[
121+
LR = inst_dest + 4;
122+
]]></body>
123+
</pcode>
124+
</callfixup>
125+
126+
</compiler_spec>

0 commit comments

Comments
 (0)