mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-05 10:49:34 +02:00
Merge remote-tracking branch 'origin/patch'
This commit is contained in:
commit
fdbb69e712
6 changed files with 58 additions and 23 deletions
|
@ -167,7 +167,6 @@ void SegmentOp::restoreXml(const Element *el)
|
||||||
injectId = -1;
|
injectId = -1;
|
||||||
baseinsize = 0;
|
baseinsize = 0;
|
||||||
innerinsize = 0;
|
innerinsize = 0;
|
||||||
bool userdefined = false;
|
|
||||||
supportsfarpointer = false;
|
supportsfarpointer = false;
|
||||||
name = "segment"; // Default name, might be overridden by userop attribute
|
name = "segment"; // Default name, might be overridden by userop attribute
|
||||||
for(int4 i=0;i<el->getNumAttributes();++i) {
|
for(int4 i=0;i<el->getNumAttributes();++i) {
|
||||||
|
@ -177,19 +176,16 @@ void SegmentOp::restoreXml(const Element *el)
|
||||||
supportsfarpointer = true;
|
supportsfarpointer = true;
|
||||||
else if (nm == "userop") { // Based on existing sleigh op
|
else if (nm == "userop") { // Based on existing sleigh op
|
||||||
name = el->getAttributeValue(i);
|
name = el->getAttributeValue(i);
|
||||||
UserPcodeOp *otherop = glb->userops.getOp(name);
|
|
||||||
if (otherop != (UserPcodeOp *)0) {
|
|
||||||
userdefined = true;
|
|
||||||
useropindex = otherop->getIndex();
|
|
||||||
if (dynamic_cast<UnspecializedPcodeOp *>(otherop) == (UnspecializedPcodeOp *)0)
|
|
||||||
throw LowlevelError("Redefining userop "+name);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
throw LowlevelError("Bad segmentop tag attribute: "+nm);
|
throw LowlevelError("Bad segmentop tag attribute: "+nm);
|
||||||
}
|
}
|
||||||
if (!userdefined)
|
UserPcodeOp *otherop = glb->userops.getOp(name);
|
||||||
throw LowlevelError("Missing userop attribute in segmentop tag");
|
if (otherop == (UserPcodeOp *)0)
|
||||||
|
throw LowlevelError("<segmentop> unknown userop " + name);
|
||||||
|
useropindex = otherop->getIndex();
|
||||||
|
if (dynamic_cast<UnspecializedPcodeOp *>(otherop) == (UnspecializedPcodeOp *)0)
|
||||||
|
throw LowlevelError("Redefining userop "+name);
|
||||||
|
|
||||||
const List &list(el->getChildren());
|
const List &list(el->getChildren());
|
||||||
List::const_iterator iter;
|
List::const_iterator iter;
|
||||||
|
|
|
@ -3,6 +3,19 @@
|
||||||
<processor_spec>
|
<processor_spec>
|
||||||
<programcounter register="PC"/>
|
<programcounter register="PC"/>
|
||||||
|
|
||||||
|
<segmentop space="ram" userop="segment" farpointer="yes">
|
||||||
|
<pcode>
|
||||||
|
<input name="base" size="2"/>
|
||||||
|
<input name="inner" size="2"/>
|
||||||
|
<output name="res" size="2"/>
|
||||||
|
<body><![CDATA[
|
||||||
|
res = (base << 12) + inner;
|
||||||
|
]]></body>
|
||||||
|
</pcode>
|
||||||
|
<constresolve>
|
||||||
|
<register name="rBBR"/>
|
||||||
|
</constresolve>
|
||||||
|
</segmentop>
|
||||||
<context_data>
|
<context_data>
|
||||||
<tracked_set space="ram">
|
<tracked_set space="ram">
|
||||||
<set name="DECOMPILE_MODE" val="1"/>
|
<set name="DECOMPILE_MODE" val="1"/>
|
||||||
|
|
|
@ -1,6 +1,19 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
<processor_spec>
|
<processor_spec>
|
||||||
|
<segmentop space="ram" userop="segment" farpointer="yes">
|
||||||
|
<pcode>
|
||||||
|
<input name="base" size="2"/>
|
||||||
|
<input name="inner" size="2"/>
|
||||||
|
<output name="res" size="2"/>
|
||||||
|
<body><![CDATA[
|
||||||
|
res = (base << 12) + inner;
|
||||||
|
]]></body>
|
||||||
|
</pcode>
|
||||||
|
<constresolve>
|
||||||
|
<register name="rBBR"/>
|
||||||
|
</constresolve>
|
||||||
|
</segmentop>
|
||||||
<context_data>
|
<context_data>
|
||||||
<context_set space="ram">
|
<context_set space="ram">
|
||||||
<set name="assume8bitIOSpace" val="1"/>
|
<set name="assume8bitIOSpace" val="1"/>
|
||||||
|
|
|
@ -9,19 +9,6 @@
|
||||||
<range space="io"/>
|
<range space="io"/>
|
||||||
</global>
|
</global>
|
||||||
<stackpointer register="SP" space="ram"/>
|
<stackpointer register="SP" space="ram"/>
|
||||||
<segmentop space="ram" userop="segment" farpointer="yes">
|
|
||||||
<pcode>
|
|
||||||
<input name="base" size="2"/>
|
|
||||||
<input name="inner" size="2"/>
|
|
||||||
<output name="res" size="2"/>
|
|
||||||
<body><![CDATA[
|
|
||||||
res = (base << 12) + inner;
|
|
||||||
]]></body>
|
|
||||||
</pcode>
|
|
||||||
<constresolve>
|
|
||||||
<register name="rBBR"/>
|
|
||||||
</constresolve>
|
|
||||||
</segmentop>
|
|
||||||
<default_proto>
|
<default_proto>
|
||||||
<prototype name="__asmA" extrapop="2" stackshift="2" strategy="register">
|
<prototype name="__asmA" extrapop="2" stackshift="2" strategy="register">
|
||||||
<input>
|
<input>
|
||||||
|
|
|
@ -3,6 +3,19 @@
|
||||||
<processor_spec>
|
<processor_spec>
|
||||||
<programcounter register="PC"/>
|
<programcounter register="PC"/>
|
||||||
|
|
||||||
|
<segmentop space="ram" userop="segment" farpointer="yes">
|
||||||
|
<pcode>
|
||||||
|
<input name="base" size="2"/>
|
||||||
|
<input name="inner" size="2"/>
|
||||||
|
<output name="res" size="2"/>
|
||||||
|
<body><![CDATA[
|
||||||
|
res = (base << 12) + inner;
|
||||||
|
]]></body>
|
||||||
|
</pcode>
|
||||||
|
<constresolve>
|
||||||
|
<register name="rBBR"/>
|
||||||
|
</constresolve>
|
||||||
|
</segmentop>
|
||||||
<context_data>
|
<context_data>
|
||||||
<tracked_set space="ram">
|
<tracked_set space="ram">
|
||||||
<set name="DECOMPILE_MODE" val="1"/>
|
<set name="DECOMPILE_MODE" val="1"/>
|
||||||
|
|
|
@ -3,6 +3,19 @@
|
||||||
<processor_spec>
|
<processor_spec>
|
||||||
<programcounter register="PC"/>
|
<programcounter register="PC"/>
|
||||||
|
|
||||||
|
<segmentop space="ram" userop="segment" farpointer="yes">
|
||||||
|
<pcode>
|
||||||
|
<input name="base" size="2"/>
|
||||||
|
<input name="inner" size="2"/>
|
||||||
|
<output name="res" size="2"/>
|
||||||
|
<body><![CDATA[
|
||||||
|
res = (base << 12) + inner;
|
||||||
|
]]></body>
|
||||||
|
</pcode>
|
||||||
|
<constresolve>
|
||||||
|
<register name="rBBR"/>
|
||||||
|
</constresolve>
|
||||||
|
</segmentop>
|
||||||
<context_data>
|
<context_data>
|
||||||
<tracked_set space="ram">
|
<tracked_set space="ram">
|
||||||
<set name="DECOMPILE_MODE" val="1"/>
|
<set name="DECOMPILE_MODE" val="1"/>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue