Patchwork Load primitive in linux-user/signal.c

login
register
mail settings
Submitter =?utf-8?Q?Llu=C3=ADs?=
Date Oct. 6, 2010, 7:44 p.m.
Message ID <87fwwj14ye.fsf@ginnungagap.bsc.es>
Download mbox | patch
Permalink /patch/66964/
State New
Headers show

Comments

=?utf-8?Q?Llu=C3=ADs?= - Oct. 6, 2010, 7:44 p.m.
I'm still not very tuned-in into the code, but I think this piece should
use _raw access primitives:


I triggered it while capturing "lduw" and the like in both softmmu and
linux-user to intercept memory access information coming from
non-generated code (I'm not capturing neither _raw nor _code, as they do
not seem to relate to "real" memory access events on the guest).

What I've found is that this is the only place where a ld* primitive is
not being passed a "target_ulong" as argument.

Thanks,
   Lluis
Mulyadi Santosa - Oct. 7, 2010, 5:21 a.m.
Hi :)

On Thu, Oct 7, 2010 at 02:44, LluĂ­s <xscript@gmx.net> wrote:
> I'm still not very tuned-in into the code, but I think this piece should
> use _raw access primitives:

I know nothing about your patch, but I suggest to rewrite this post so
it follows patch submission format e.g comment, signed off then the
patch itself.... :)

No offense, ok? :)
=?utf-8?Q?Llu=C3=ADs?= - Oct. 7, 2010, 5:21 p.m.
Mulyadi Santosa writes:

> I know nothing about your patch, but I suggest to rewrite this post so
> it follows patch submission format e.g comment, signed off then the
> patch itself.... :)

> No offense, ok? :)

None taken. I've sent it again with (I suppose) the adequate format.

Lluis

Patch

diff --git a/linux-user/signal.c b/linux-user/signal.c
index 77683f7..097da9d 100644
--- a/linux-user/signal.c
+++ b/linux-user/signal.c
@@ -982,8 +982,8 @@  restore_sigcontext(CPUX86State *env, struct target_sigcontext *sc, int *peax)
         env->regs[R_ECX] = tswapl(sc->ecx);
         env->eip = tswapl(sc->eip);
 
-        cpu_x86_load_seg(env, R_CS, lduw(&sc->cs) | 3);
-        cpu_x86_load_seg(env, R_SS, lduw(&sc->ss) | 3);
+        cpu_x86_load_seg(env, R_CS, lduw_raw(&sc->cs) | 3);
+        cpu_x86_load_seg(env, R_SS, lduw_raw(&sc->ss) | 3);
 
         tmpflags = tswapl(sc->eflags);
         env->eflags = (env->eflags & ~0x40DD5) | (tmpflags & 0x40DD5);