X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=ffi%2Ftrap.c;fp=ffi%2Ftrap.c;h=301f2060ce47f5252bb4d2dfd73112efa069d9a7;hb=13cf9f65321881050edb99776f29eea8580ec457;hp=1058004a1046afe6432f82fbceb9ab3b4194066a;hpb=e77e74e6bbc04c523f1468d21b14167b7eb910f7;p=mate.git diff --git a/ffi/trap.c b/ffi/trap.c index 1058004..301f206 100644 --- a/ffi/trap.c +++ b/ffi/trap.c @@ -1,5 +1,6 @@ #include #include +#include #include "../debug.h" @@ -21,7 +22,7 @@ #include -unsigned int mateHandler(unsigned int, unsigned int, unsigned int, unsigned int); +ptrdiff_t mateHandler(ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t); #ifdef DBG_TRAP #define dprintf(args...) do { printf (args); } while (0); @@ -33,13 +34,13 @@ void chandler(int nSignal, siginfo_t *info, void *ctx) { mcontext_t *mctx = &((ucontext_t *) ctx)->uc_mcontext; - unsigned int eip = (unsigned int) mctx->gregs[REG_EIP]; - unsigned int eax = (unsigned int) mctx->gregs[REG_EAX]; - unsigned int ebx = (unsigned int) mctx->gregs[REG_EBX]; - unsigned int esp = (unsigned int) mctx->gregs[REG_ESP]; + ptrdiff_t eip = (ptrdiff_t) mctx->gregs[REG_EIP]; + ptrdiff_t eax = (ptrdiff_t) mctx->gregs[REG_EAX]; + ptrdiff_t ebx = (ptrdiff_t) mctx->gregs[REG_EBX]; + ptrdiff_t esp = (ptrdiff_t) mctx->gregs[REG_ESP]; dprintf("trap: type %d, eip 0x%08x, eax 0x%08x, ebx 0x%08x, " "esp 0x%08x, *esp 0x%08x\n", nSignal, eip, - eax, ebx, esp, *(unsigned int*) esp); + eax, ebx, esp, *(ptrdiff_t*) esp); mctx->gregs[REG_EIP] = mateHandler(eip, eax, ebx, esp); }