This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
PATCH: stfiwx implementation for PowerPC gdb simulator
- From: Tom Marn <tom dot marn at telargo dot com>
- To: gdb-patches at sourceware dot org
- Cc: matej dot kupljen at telargo dot com
- Date: Wed, 22 Nov 2006 12:04:33 +0100
- Subject: PATCH: stfiwx implementation for PowerPC gdb simulator
- Reply-to: tom dot marn at telargo dot com
Hi
I append new optional instruction "stfiwx" for PowerPC 603/603e/604 needed by gdb inside sim/ppc simulator. GNU gcc already generates binaries with this instruction and the patch is essential for properly running binaries on gdb simulator (target sim). Without this patch you will get: program interrupt - illegal instruction (optional instruction not supported)
Tom Marn
2006-11-22 Tom Marn <tom.marn@telargo.com>
* ppc-instructions: implementation of optional PowerPC stfiwx
instruction for gdb and insight source to avoid
illegal instruction code interrupt
--- gdb-6.5/sim/ppc/ppc-instructions.orig 2006-11-22 09:25:56.000000000 +0100
+++ gdb-6.5/sim/ppc/ppc-instructions 2006-11-22 09:42:34.000000000 +0100
@@ -3644,6 +3644,18 @@
STORE(EA, 8, *frS);
PPC_INSN_INT_FLOAT(0, 0, (RA_BITMASK & ~1) | RB_BITMASK, FRS_BITMASK);
+0.31,6.FRS,11.RA,16.RB,21.983,31./:X:f::Store Floating-Point Integer Word Indexed
+*603: PPC_UNIT_LSU, PPC_UNIT_LSU, 1, 2, 0
+*603e:PPC_UNIT_LSU, PPC_UNIT_LSU, 1, 2, 0
+*604: PPC_UNIT_LSU, PPC_UNIT_LSU, 1, 3, 0
+ unsigned_word b;
+ unsigned_word EA;
+ if (RA_is_0) b = 0;
+ else b = *rA;
+ EA = b + *rB;
+ STORE(EA, 4, *frS);
+ PPC_INSN_INT_FLOAT(0, 0, (RA_BITMASK & ~1) | RB_BITMASK, FRS_BITMASK);
+
0.55,6.FRS,11.RA,16.D:D:f::Store Floating-Point Double with Update
*601: PPC_UNIT_IU, PPC_UNIT_IU, 1, 1, 0
*603: PPC_UNIT_LSU, PPC_UNIT_LSU, 1, 2, 0
@@ -4682,13 +4694,6 @@
FPSCR |= bit;
FPSCR_END(Rc);
-
-#
-# I.A.1.1 Floating-Point Store Instruction
-#
-0.31,6.FRS,11.RA,16.RB,21.983,31./:X:f,o::Store Floating-Point as Integer Word Indexed
- program_interrupt(processor, cia, optional_instruction_program_interrupt);
-
#
# I.A.1.2 Floating-Point Arithmetic Instructions
#