summaryrefslogtreecommitdiffstats
path: root/tools/ghidra/gsp-fwimage-570.144/scripts/Disasm.java
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-03 14:05:38 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-03 14:05:38 -0400
commit32b551d43781dc7b8ac4587ca2ba1554b0cbd5e5 (patch)
treed1cab6bcc35e461610cd5dfcf3f51ba679a576fc /tools/ghidra/gsp-fwimage-570.144/scripts/Disasm.java
parentfa71f1b53b524e5f6c6c1fbff1088d610b9f3236 (diff)
downloadopen-iov-32b551d43781dc7b8ac4587ca2ba1554b0cbd5e5.tar.gz
open-iov-32b551d43781dc7b8ac4587ca2ba1554b0cbd5e5.zip
vgsp: host CUDA bridge + sema release recovery; greeneye simulator wave
- kernel: gsp_cuda_bridge (QMD launch capture, debugfs job/out/done, param+output resolution cached from inline writes), sema drain fixes (never hold/starve a channel), GR ring autopin + counter autoreg, per-page push reads, counter-derive gate; module builds clean - tools/cuda-bridge: CUDA driver-API daemon executing mail/vadd kernels on the physical GPU, CUBB2/CBD2 v2 protocol, layout check + self-tests - tools/guest-diag + tools/cuda-ab: scanner/pin fixes, victory push-only mode - debug/risc-v-gsp-rm-vm: Phase S simulator wave (GSP device model, boot ladder, triage/re-demo harnesses, docs 30-41), GPGPU-sim scaffolding - STATE-CURRENT/docs updates
Diffstat (limited to 'tools/ghidra/gsp-fwimage-570.144/scripts/Disasm.java')
-rw-r--r--tools/ghidra/gsp-fwimage-570.144/scripts/Disasm.java29
1 files changed, 29 insertions, 0 deletions
diff --git a/tools/ghidra/gsp-fwimage-570.144/scripts/Disasm.java b/tools/ghidra/gsp-fwimage-570.144/scripts/Disasm.java
new file mode 100644
index 0000000..68a8a52
--- /dev/null
+++ b/tools/ghidra/gsp-fwimage-570.144/scripts/Disasm.java
@@ -0,0 +1,29 @@
+import ghidra.app.script.GhidraScript;
+import ghidra.program.model.address.Address;
+import ghidra.program.model.listing.Instruction;
+import ghidra.program.model.listing.Listing;
+
+public class Disasm extends GhidraScript {
+ @Override
+ protected void run() throws Exception {
+ Listing listing = currentProgram.getListing();
+ String[] args = getScriptArgs();
+ for (String arg : args) {
+ String[] parts = arg.split(":");
+ Address start = toAddr(parts[0]);
+ int count = parts.length > 1 ? Integer.decode(parts[1]) : 60;
+ println("### DISASM " + start + " count=" + count);
+ Address cur = start;
+ for (int i = 0; i < count; i++) {
+ Instruction insn = listing.getInstructionAt(cur);
+ if (insn == null) {
+ try { disassemble(cur); } catch (Exception e) { println(" disasm stop: " + e); break; }
+ insn = listing.getInstructionAt(cur);
+ }
+ if (insn == null) { println(" no instruction at " + cur); break; }
+ println(" " + insn.getAddress() + ": " + insn.toString());
+ cur = insn.getMaxAddress().add(1);
+ }
+ }
+ }
+}