From: paawan oza <paawan1982@yahoo.com>
To: Hui Zhu <teawater@gmail.com>
Cc: Michael Snyder <msnyder@vmware.com>,
Mark Kettenis <mark.kettenis@xs4all.nl>,
"pedro@codesourcery.com" <pedro@codesourcery.com>,
"gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
Subject: Re: i386.record.floating.point.patch : with more testing and assurity
Date: Mon, 06 Jul 2009 19:05:00 -0000 [thread overview]
Message-ID: <978078.82017.qm@web112508.mail.gq1.yahoo.com> (raw)
Hi,
please find the latest patch and ChangeLog as follows.
********************
ChangeLog
********************
Current: gdb-6.8.50.20090706
2009-07-06 Oza <paawan1982@yahoo.com>
* i386-tdep.c: Support for floating point recording.
***************************
i386.records.floats.patch
***************************
diff -urN ./gdb.orig/i386-tdep.c gdb.new/i386-tdep.c
--- ./gdb.orig/i386-tdep.c 2009-07-02 13:25:54.000000000 -0400
+++ gdb.new/i386-tdep.c 2009-07-06 23:44:07.000000000 -0400
@@ -3056,6 +3056,66 @@
return 0;
}
+
+/* Defines contents to record. */
+#define I386_SAVE_FPU_REGS 0xfffd
+#define I386_SAVE_FPU_ENV 0xfffe
+#define I386_SAVE_FPU_ENV_REG_STACK 0xffff
+
+/* Record the value of floating point registers which will be changed by the
+ Current instruction to "record_arch_list".
+ Return -1 if something is wrong. */
+
+static int i386_record_floats(struct gdbarch *gdbarch,
+ struct i386_record_s *ir,
+ uint32_t iregnum)
+{
+ struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+ int i;
+
+ /* Oza : because of floating point insn push/pop of fpu stack
+ Is going to happen. currently we store st0-st7 registers,
+ But we need not store all registers all the time, In future
+ We use ftag register and record only those who are not marked as an empty.
+ */
+ if (I386_SAVE_FPU_REGS == iregnum)
+ {
+ for (i = I387_ST0_REGNUM (tdep);i <= I387_ST0_REGNUM (tdep) + 7;i++)
+ {
+ if (record_arch_list_add_reg (ir->regcache,i))
+ return -1;
+ }
+ }
+ else if (I386_SAVE_FPU_ENV == iregnum)
+ {
+ for (i = I387_FCTRL_REGNUM(tdep);i <= I387_FOP_REGNUM(tdep);i++)
+ {
+ if (record_arch_list_add_reg (ir->regcache,i))
+ return -1;
+ }
+ }
+ else if (I386_SAVE_FPU_ENV_REG_STACK == iregnum)
+ {
+ for (i = I387_ST0_REGNUM (tdep);i <= I387_FOP_REGNUM(tdep);i++)
+ {
+ if (record_arch_list_add_reg (ir->regcache,i))
+ return -1;
+ }
+ }
+ else if ((iregnum >= I387_ST0_REGNUM (tdep)) &&
+ (iregnum <= I387_FOP_REGNUM(tdep)))
+ {
+ if (record_arch_list_add_reg (ir->regcache,iregnum))
+ return -1;
+ }
+ else
+ {
+ /* Parameter error. */
+ return -1;
+ }
+ return 0;
+}
+
/* Parse the current instruction and record the values of the registers and
memory that will be changed in current instruction to "record_arch_list".
Return -1 if something wrong. */
@@ -3070,6 +3130,7 @@
uint32_t tmpu32;
uint32_t opcode;
struct i386_record_s ir;
+ struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
memset (&ir, 0, sizeof (struct i386_record_s));
ir.regcache = regcache;
@@ -4105,8 +4166,7 @@
}
break;
- /* floats */
- /* It just record the memory change of instrcution. */
+ /* Floats. */
case 0xd8:
case 0xd9:
case 0xda:
@@ -4120,46 +4180,57 @@
ir.reg |= ((opcode & 7) << 3);
if (ir.mod != 3)
{
- /* memory */
+ /* Memory. */
uint32_t addr;
if (i386_record_lea_modrm_addr (&ir, &addr))
return -1;
switch (ir.reg)
{
- case 0x00:
- case 0x01:
case 0x02:
- case 0x03:
+ case 0x12:
+ case 0x22:
+ case 0x32:
+ /* For fcom, ficom nothing to do. */
+ break;
+ case 0x03:
+ case 0x13:
+ case 0x23:
+ case 0x33:
+ /* For fcomp, ficomp pop FPU stack, store all. */
+ if (i386_record_floats(gdbarch, &ir, I386_SAVE_FPU_REGS))
+ return -1;
+ break;
+ case 0x00:
+ case 0x01:
case 0x04:
case 0x05:
case 0x06:
case 0x07:
case 0x10:
- case 0x11:
- case 0x12:
- case 0x13:
+ case 0x11:
case 0x14:
case 0x15:
case 0x16:
case 0x17:
case 0x20:
case 0x21:
- case 0x22:
- case 0x23:
case 0x24:
case 0x25:
case 0x26:
case 0x27:
case 0x30:
case 0x31:
- case 0x32:
- case 0x33:
case 0x34:
case 0x35:
case 0x36:
case 0x37:
- break;
+ /* For fadd, fmul, fsub, fsubr, fdiv, fdivr, fiadd, fimul,
+ fisub, fisubr, fidiv, fidivr, modR/M.reg is an extension of code,
+ Always affects st(0) register. */
+ if (i386_record_floats(gdbarch, &ir, I387_ST0_REGNUM (tdep)))
+ return -1;
+ break;
case 0x08:
case 0x0a:
case 0x0b:
@@ -4167,6 +4238,7 @@
case 0x19:
case 0x1a:
case 0x1b:
+ case 0x1d:
case 0x28:
case 0x29:
case 0x2a:
@@ -4174,11 +4246,16 @@
case 0x38:
case 0x39:
case 0x3a:
- case 0x3b:
+ case 0x3b:
+ case 0x3c:
+ case 0x3d:
switch (ir.reg & 7)
{
case 0:
- break;
+ /* Handling fld, fild. */
+ if (i386_record_floats(gdbarch, &ir, I386_SAVE_FPU_REGS))
+ return -1;
+ break;
case 1:
switch (ir.reg >> 4)
{
@@ -4191,6 +4268,7 @@
return -1;
break;
case 3:
+ break;
default:
if (record_arch_list_add_mem (addr, 2))
return -1;
@@ -4201,15 +4279,48 @@
switch (ir.reg >> 4)
{
case 0:
+ if (record_arch_list_add_mem (addr, 4))
+ return -1;
+ if (3 == (ir.reg & 7))
+ {
+ /* For fstp m32fp */
+ if (i386_record_floats(gdbarch, &ir, \
+ I386_SAVE_FPU_REGS))
+ return -1;
+ }
+ break;
case 1:
if (record_arch_list_add_mem (addr, 4))
return -1;
+ if ((3 == (ir.reg & 7)) \
+ || (5 == (ir.reg & 7)) \
+ || (7 == (ir.reg & 7)))
+ {
+ /* For fstp insn */
+ if (i386_record_floats(gdbarch, &ir, \
+ I386_SAVE_FPU_REGS))
+ return -1;
+ }
break;
case 2:
if (record_arch_list_add_mem (addr, 8))
return -1;
+ if (3 == (ir.reg & 7))
+ {
+ /* For fstp m64fp */
+ if (i386_record_floats(gdbarch, &ir, \
+ I386_SAVE_FPU_REGS))
+ return -1;
+ }
break;
case 3:
+ if ((3 <= (ir.reg & 7)) && (6 <= (ir.reg & 7)))
+ {
+ /* For fistp, fbld, fild, fbstp. */
+ if (i386_record_floats(gdbarch, &ir, \
+ I386_SAVE_FPU_REGS))
+ return -1;
+ }
default:
if (record_arch_list_add_mem (addr, 2))
return -1;
@@ -4218,54 +4329,74 @@
break;
}
break;
- case 0x0c:
- case 0x0d:
- case 0x1d:
- case 0x2c:
- case 0x3c:
- case 0x3d:
- break;
- case 0x0e:
+ case 0x0c:
+ /* Insn fldenv. */
+ if (i386_record_floats(gdbarch, &ir, \
+ I386_SAVE_FPU_ENV_REG_STACK))
+ return -1;
+ break;
+ case 0x0d:
+ /* Insn fldcw. */
+ if (i386_record_floats(gdbarch, &ir, I387_FCTRL_REGNUM (tdep)))
+ return -1;
+ break;
+ case 0x2c:
+ /* Insn frstor. */
+ if (i386_record_floats(gdbarch, &ir, \
+ I386_SAVE_FPU_ENV_REG_STACK))
+ return -1;
+ break;
+ case 0x0e:
if (ir.dflag)
{
- if (record_arch_list_add_mem (addr, 28))
- return -1;
+ if (record_arch_list_add_mem (addr, 28))
+ return -1;
}
else
{
- if (record_arch_list_add_mem (addr, 14))
- return -1;
+ if (record_arch_list_add_mem (addr, 14))
+ return -1;
}
break;
- case 0x0f:
- case 0x2f:
+ case 0x0f:
+ case 0x2f:
if (record_arch_list_add_mem (addr, 2))
return -1;
break;
- case 0x1f:
- case 0x3e:
+ case 0x1f:
+ case 0x3e:
if (record_arch_list_add_mem (addr, 10))
return -1;
+ /* Insn fstp, fbstp. */
+ if (i386_record_floats(gdbarch, &ir, I386_SAVE_FPU_REGS))
+ return -1;
break;
- case 0x2e:
+ case 0x2e:
if (ir.dflag)
{
- if (record_arch_list_add_mem (addr, 28))
- return -1;
- addr += 28;
+ if (record_arch_list_add_mem (addr, 28))
+ return -1;
+ addr += 28;
}
else
{
- if (record_arch_list_add_mem (addr, 14))
- return -1;
- addr += 14;
+ if (record_arch_list_add_mem (addr, 14))
+ return -1;
+ addr += 14;
}
if (record_arch_list_add_mem (addr, 80))
return -1;
+ /* Insn fsave. */
+ if (i386_record_floats(gdbarch, &ir, \
+ I386_SAVE_FPU_ENV_REG_STACK))
+ return -1;
break;
- case 0x3f:
+ case 0x3f:
if (record_arch_list_add_mem (addr, 8))
return -1;
+ /* Ins fistp. */
+ if (i386_record_floats(gdbarch, &ir, I386_SAVE_FPU_REGS))
+ return -1;
break;
default:
ir.addr -= 2;
@@ -4273,9 +4404,198 @@
goto no_support;
break;
}
- }
+ }
+ /* Opcode is an extension of modR/M byte. */
+ else
+ {
+ switch (opcode)
+ {
+ case 0xd8:
+ if (i386_record_floats(gdbarch, &ir, I387_ST0_REGNUM (tdep)))
+ return -1;
+ break;
+ case 0xd9:
+ if (0x0c == (ir.modrm >> 4))
+ {
+ if ((ir.modrm & 0x0f) <= 7)
+ {
+ if (i386_record_floats(gdbarch, &ir, I386_SAVE_FPU_REGS))
+ return -1;
+ }
+ else
+ {
+ if (i386_record_floats(gdbarch, &ir, \
+ I387_ST0_REGNUM (tdep)))
+ return -1;
+ /* If only st(0) is changing, then we have already recorded */
+ if ((ir.modrm & 0x0f) - 0x08)
+ {
+ if (i386_record_floats(gdbarch, &ir, \
+ I387_ST0_REGNUM (tdep) + ((ir.modrm & 0x0f) - 0x08)))
+ return -1;
+ }
+ }
+ }
+ else
+ {
+ switch(ir.modrm)
+ {
+ case 0xe0:
+ case 0xe1:
+ case 0xf0:
+ case 0xf5:
+ case 0xf8:
+ case 0xfa:
+ case 0xfc:
+ case 0xfe:
+ case 0xff:
+ if (i386_record_floats(gdbarch, &ir, \
+ I387_ST0_REGNUM (tdep)))
+ return -1;
+ break;
+ case 0xf1:
+ case 0xf2:
+ case 0xf3:
+ case 0xf4:
+ case 0xf6:
+ case 0xf7:
+ case 0xe8:
+ case 0xe9:
+ case 0xea:
+ case 0xeb:
+ case 0xec:
+ case 0xed:
+ case 0xee:
+ case 0xf9:
+ case 0xfb:
+ if (i386_record_floats(gdbarch, &ir, I386_SAVE_FPU_REGS))
+ return -1;
+ break;
+ case 0xfd:
+ if (i386_record_floats(gdbarch, &ir, \
+ I387_ST0_REGNUM (tdep)))
+ return -1;
+ if (i386_record_floats(gdbarch, &ir, \
+ I387_ST0_REGNUM (tdep) + 1))
+ return -1;
+ break;
+ }
+ }
+ break;
+ case 0xda:
+ if (0xe9 == ir.modrm)
+ {
+ if (i386_record_floats(gdbarch, &ir, I386_SAVE_FPU_REGS))
+ return -1;
+ }
+ else if ((0x0c == ir.modrm >> 4) || (0x0d == ir.modrm >> 4))
+ {
+ if (i386_record_floats(gdbarch, &ir, I387_ST0_REGNUM (tdep)))
+ return -1;
+ if (((ir.modrm & 0x0f) > 0) && ((ir.modrm & 0x0f) <= 7))
+ {
+ if (i386_record_floats(gdbarch, &ir, \
+ I387_ST0_REGNUM (tdep) + (ir.modrm & 0x0f)))
+ return -1;
+ }
+ else if ((ir.modrm & 0x0f) - 0x08)
+ {
+ if (i386_record_floats(gdbarch, &ir, \
+ I387_ST0_REGNUM (tdep) + ((ir.modrm & 0x0f) - 0x08)))
+ return -1;
+ }
+ }
+ break;
+ case 0xdb:
+ if (0xe3 == ir.modrm)
+ {
+ if (i386_record_floats(gdbarch, &ir, I386_SAVE_FPU_ENV))
+ return -1;
+ }
+ else if ((0x0c == ir.modrm >> 4) || (0x0d == ir.modrm >> 4))
+ {
+ if (i386_record_floats(gdbarch, &ir, I387_ST0_REGNUM (tdep)))
+ return -1;
+ if (((ir.modrm & 0x0f) > 0) && ((ir.modrm & 0x0f) <= 7))
+ {
+ if (i386_record_floats(gdbarch, &ir, \
+ I387_ST0_REGNUM (tdep) + (ir.modrm & 0x0f)))
+ return -1;
+ }
+ else if ((ir.modrm & 0x0f) - 0x08)
+ {
+ if (i386_record_floats(gdbarch, &ir, \
+ I387_ST0_REGNUM (tdep) + ((ir.modrm & 0x0f) - 0x08)))
+ return -1;
+ }
+ }
+ break;
+ case 0xdc:
+ if ( (0x0c == ir.modrm >> 4) \
+ || (0x0d == ir.modrm >> 4) \
+ || (0x0f == ir.modrm >> 4))
+ {
+ if ((ir.modrm & 0x0f) <= 7)
+ {
+ if (i386_record_floats(gdbarch, &ir, \
+ I387_ST0_REGNUM (tdep) + (ir.modrm & 0x0f)))
+ return -1;
+ }
+ else
+ {
+ if (i386_record_floats(gdbarch, &ir, \
+ I387_ST0_REGNUM (tdep) + ((ir.modrm & 0x0f) - 0x08)))
+ return -1;
+ }
+ }
+ break;
+ case 0xdd:
+ if (0x0c == ir.modrm >> 4)
+ {
+ if (i386_record_floats(gdbarch, &ir, \
+ I387_FTAG_REGNUM (tdep)))
+ return -1;
+ }
+ else if ((0x0d == ir.modrm >> 4) || (0x0e == ir.modrm >> 4))
+ {
+ if ((ir.modrm & 0x0f) <= 7)
+ {
+ if (i386_record_floats(gdbarch, &ir, \
+ I387_ST0_REGNUM (tdep) + (ir.modrm & 0x0f)))
+ return -1;
+ }
+ else
+ {
+ if (i386_record_floats(gdbarch, &ir, I386_SAVE_FPU_REGS))
+ return -1;
+ }
+ }
+ break;
+ case 0xde:
+ if ((0x0c == ir.modrm >> 4) \
+ || (0x0e == ir.modrm >> 4) \
+ || (0x0f == ir.modrm >> 4) \
+ || (0xd9 == ir.modrm))
+ {
+ if (i386_record_floats(gdbarch, &ir, I386_SAVE_FPU_REGS))
+ return -1;
+ }
+ break;
+ case 0xdf:
+ if (0xe0 == ir.modrm)
+ {
+ if (record_arch_list_add_reg (ir.regcache, I386_EAX_REGNUM))
+ return -1;
+ }
+ else if ((0x0f == ir.modrm >> 4) || (0x0e == ir.modrm >> 4))
+ {
+ if (i386_record_floats(gdbarch, &ir, I386_SAVE_FPU_REGS))
+ return -1;
+ }
+ break;
+ }
+ }
break;
-
/* string ops */
/* movsS */
case 0xa4:
@@ -4694,10 +5014,17 @@
/* fwait */
/* XXX */
case 0x9b:
- printf_unfiltered (_("Process record doesn't support instruction "
- "fwait.\n"));
- ir.addr -= 1;
- goto no_support;
+ if (target_read_memory (ir.addr, &tmpu8, 1))
+ {
+ if (record_debug)
+ printf_unfiltered (_("Process record: error reading memory at "
+ "addr 0x%s len = 1.\n"),
+ paddress (gdbarch, ir.addr));
+ return -1;
+ }
+ opcode = (uint32_t) tmpu8;
+ ir.addr++;
+ goto reswitch;
break;
/* int3 */
--- On Sun, 7/5/09, Hui Zhu <teawater@gmail.com> wrote:
> From: Hui Zhu <teawater@gmail.com>
> Subject: Re: i386.record.floating.point.patch : with more testing and assurity
> To: "paawan oza" <paawan1982@yahoo.com>
> Cc: "Michael Snyder" <msnyder@vmware.com>, "Mark Kettenis" <mark.kettenis@xs4all.nl>, "pedro@codesourcery.com" <pedro@codesourcery.com>, "gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
> Date: Sunday, July 5, 2009, 3:45 PM
> Hi Paawan,
>
> 1. gcc -g -O2 -I. -I../../src/gdb
> -I../../src/gdb/common
> -I../../src/gdb/config
> -DLOCALEDIR="\"/usr/local/share/locale\""
> -DHAVE_CONFIG_H -I../../src/gdb/../include/opcode
> -I../../src/gdb/../readline/.. -I../bfd
> -I../../src/gdb/../bfd
> -I../../src/gdb/../include -I../libdecnumber
> -I../../src/gdb/../libdecnumber
> -I../../src/gdb/gnulib -Ignulib
> -DMI_OUT=1 -DTUI=1 -Wall
> -Wdeclaration-after-statement
> -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign
> -Wno-unused
> -Wno-switch -Wno-char-subscripts -Werror -c -o i386-tdep.o
> -MT
> i386-tdep.o -MMD -MP -MF .deps/i386-tdep.Tpo
> ../../src/gdb/i386-tdep.c
> cc1: warnings being treated as errors
> ../../src/gdb/i386-tdep.c: In function
> 'i386_process_record':
> ../../src/gdb/i386-tdep.c:4985: warning: implicit
> declaration of
> function 'paddr_nz'
> ../../src/gdb/i386-tdep.c:4985: warning: format '%s'
> expects type
> 'char *', but argument 2 has type 'int'
> make[2]: *** [i386-tdep.o] Error 1
> make[2]: Leaving directory `/media/disk/gdb/bgdb/gdb'
> make[1]: *** [all-gdb] Error 2
> make[1]: Leaving directory `/media/disk/gdb/bgdb'
> make: *** [all] Error 2
>
> paddr_nz was removed. Please update your patch follow
> cvs-head.
>
> 2. +#define I386_SAVE_FPU_REGS
> 0xFFFD
> +#define I386_SAVE_FPU_ENV
> 0xFFFE
> +#define I386_SAVE_FPU_ENV_REG_STACK
> 0xFFFF
>
> They just used in prec right? Maybe you can move them
> close to record
> code in i386-tedp.c.
>
> 3. +static int i386_record_floats(struct i386_record_s *ir,
> uint32_t iregnum)
> +{
> + int i;
> +
> + /* Oza : push/pop of fpu stack is going to happen
> + currently we store st0-st7
> registers, but we need not store all
> registers all the time.
> + using fstatus, we use 11-13 bits
> which gives us stack top and
> hence we optimize our storage.
> + alternatively we can use ftag
> register too */
> + if (I386_SAVE_FPU_REGS == iregnum)
> + {
> + for
> (i=I386_ST0_REGNUM;i<=I386_ST0_REGNUM+7;i++)
> + {
> + if
> (record_arch_list_add_reg (ir->regcache,i))
> + return -1;
> + }
> + }
> About the number of fp regs. Please use the code:
> #define I387_ST0_REGNUM(tdep) ((tdep)->st0_regnum)
> #define I387_NUM_XMM_REGS(tdep) ((tdep)->num_xmm_regs)
> #define I387_MM0_REGNUM(tdep) ((tdep)->mm0_regnum)
>
> #define I387_FCTRL_REGNUM(tdep) (I387_ST0_REGNUM (tdep) +
> 8)
> #define I387_FSTAT_REGNUM(tdep) (I387_FCTRL_REGNUM (tdep) +
> 1)
> #define I387_FTAG_REGNUM(tdep) (I387_FCTRL_REGNUM (tdep) +
> 2)
> #define I387_FISEG_REGNUM(tdep) (I387_FCTRL_REGNUM (tdep) +
> 3)
> #define I387_FIOFF_REGNUM(tdep) (I387_FCTRL_REGNUM (tdep) +
> 4)
> #define I387_FOSEG_REGNUM(tdep) (I387_FCTRL_REGNUM (tdep) +
> 5)
> #define I387_FOOFF_REGNUM(tdep) (I387_FCTRL_REGNUM (tdep) +
> 6)
> #define I387_FOP_REGNUM(tdep) (I387_FCTRL_REGNUM (tdep) +
> 7)
> #define I387_XMM0_REGNUM(tdep) (I387_ST0_REGNUM (tdep) +
> 16)
> #define I387_MXCSR_REGNUM(tdep) \
> (I387_XMM0_REGNUM (tdep) + I387_NUM_XMM_REGS
> (tdep))
>
> They are in i387-tdep.h.
>
> And maybe you can try function i387_supply_fsave and
> i387_collect_fsave.
>
>
> 4. Your code's format is not very well. Please
> make it like the code in cvs.
>
>
>
> Thanks,
> Hui
>
>
>
>
> On Sat, Jul 4, 2009 at 13:19, paawan oza<paawan1982@yahoo.com>
> wrote:
> >
> > Hi,
> >
> > Actually, the initial patch which I submitted were
> using them.
> > but as I have incorporated Hui's comments I have
> removed those constants completely.
> > in the sense I have no longer extended the
> enumration.
> >
> > but of course, those registers are recorded as and
> when required.
> > e.g. (ffree insn changes FTAG register, so we record
> it)
> >
> > Regards,
> > Oza.
> >
> > --- On Sat, 7/4/09, Michael Snyder <msnyder@vmware.com>
> wrote:
> >
> >> From: Michael Snyder <msnyder@vmware.com>
> >> Subject: Re: i386.record.floating.point.patch :
> with more testing and assurity
> >> To: "paawan oza" <paawan1982@yahoo.com>
> >> Cc: "Mark Kettenis" <mark.kettenis@xs4all.nl>,
> "pedro@codesourcery.com"
> <pedro@codesourcery.com>,
> "teawater@gmail.com"
> <teawater@gmail.com>,
> "gdb-patches@sourceware.org"
> <gdb-patches@sourceware.org>
> >> Date: Saturday, July 4, 2009, 3:19 AM
> >> paawan oza wrote:
> >> > Hi,
> >> >
> >> > In My understanding the point was like
> below.
> >> > in the patch there were following register
> extended in
> >> enumeration in i386-tdep.h
> >> >
> >> > I386_FSTAT,
> >> > I386_FTAG, I386_FISEG,
> >> > I386_FIOFF,
> >> > I386_FOSEG,
> >> > I386_FOOFF,
> >> > I386_FOP
> >> >
> >> >
> >> > According to Hui in some of his previous
> mails...his
> >> idea was
> >> >> FCTRL, FOP and so on are the fp reg of
> >> amd64. For now, prec is still
> >> >> not support amd64 And amd64's support are
> in
> >> amd64-tedp.... files. >Change i386_regnum is
> not a
> >> good idea. I suggest you divide fp patch to 2
> >parts. One
> >> is for i386, the other for amd64. For now, just
> send i386
> >> patch >for review. And send amd64 patch when
> prec
> >> support amd64"
> >> >
> >> >
> >> > while, my idea/understanding is:
> >> > FCTRL, FOP registers are not only a part of
> amd64, but
> >> also part of i386 (x87 FPU unit) also.
> >> > so according to me these registers are part
> of i386
> >> also and it needed to be also in i386-tdep.h.
> >> >
> >> > Regards,
> >> > Oza.
> >>
> >> I'm not sure why you want to add those constants
> to
> >> i386-tdep.h,
> >> when the rest of your patch does not seem to use
> them.
> >>
> >>
> >
> >
> >
> >
>
next reply other threads:[~2009-07-06 19:05 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-06 19:05 paawan oza [this message]
2009-07-08 9:00 ` Hui Zhu
2009-07-12 9:52 ` Michael Snyder
2009-07-12 18:12 ` Michael Snyder
[not found] <992589.56162.qm@web112513.mail.gq1.yahoo.com>
2009-07-26 19:10 ` Mark Kettenis
-- strict thread matches above, loose matches on Subject: below --
2009-07-26 14:27 paawan oza
2009-07-26 22:51 ` Michael Snyder
2009-07-27 1:09 ` Michael Snyder
2009-07-27 2:33 ` Samuel Bronson
2009-07-06 19:09 paawan oza
2009-07-06 19:03 paawan oza
2009-07-06 19:01 paawan oza
2009-07-04 5:19 paawan oza
2009-07-05 10:15 ` Hui Zhu
2009-07-03 18:55 paawan oza
2009-07-03 21:52 ` Michael Snyder
2009-07-02 7:40 paawan oza
2009-07-02 3:39 paawan oza
2009-07-02 3:34 paawan oza
2009-07-01 16:17 paawan oza
2009-07-05 18:33 ` Mark Kettenis
2009-07-01 16:02 paawan oza
2009-07-01 16:14 ` Mark Kettenis
2009-07-01 16:01 paawan oza
2009-07-01 15:59 paawan oza
2009-07-02 2:02 ` Hui Zhu
2009-06-30 15:05 paawan oza
2009-07-01 5:53 ` Hui Zhu
2009-07-12 11:12 ` Michael Snyder
2009-07-12 17:47 ` paawan oza
2009-07-13 0:38 ` Michael Snyder
2009-07-13 17:03 ` Hui Zhu
2009-07-13 20:16 ` Michael Snyder
2009-07-15 9:21 ` Hui Zhu
2009-07-19 3:27 ` paawan oza
2009-07-18 23:36 ` paawan oza
2009-06-30 13:23 paawan oza
2009-06-30 13:38 ` Pedro Alves
2009-06-30 13:42 ` Mark Kettenis
2009-06-04 14:50 paawan oza
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=978078.82017.qm@web112508.mail.gq1.yahoo.com \
--to=paawan1982@yahoo.com \
--cc=gdb-patches@sourceware.org \
--cc=mark.kettenis@xs4all.nl \
--cc=msnyder@vmware.com \
--cc=pedro@codesourcery.com \
--cc=teawater@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox