Ticket #7867: ucontext-more-registers.patch

File ucontext-more-registers.patch, 2.2 KB (added by dacha, 9 years ago)

proposed patch

  • src/system/kernel/arch/x86/arch_thread.cpp

     
    536536    signalFrameData->context.uc_mcontext.edi = frame->edi;
    537537    signalFrameData->context.uc_mcontext.esi = frame->esi;
    538538    signalFrameData->context.uc_mcontext.ebx = frame->ebx;
     539    signalFrameData->context.uc_mcontext.cs = frame->cs;
     540    signalFrameData->context.uc_mcontext.ds = frame->ds;
     541    signalFrameData->context.uc_mcontext.es = frame->es;
     542    signalFrameData->context.uc_mcontext.fs = frame->fs;
     543    signalFrameData->context.uc_mcontext.gs = frame->gs;
     544    signalFrameData->context.uc_mcontext.ss = frame->ss;
     545    signalFrameData->context.uc_mcontext.vector = frame->vector;
     546    signalFrameData->context.uc_mcontext.error_code = frame->error_code;
    539547    i386_fnsave((void *)(&signalFrameData->context.uc_mcontext.xregs));
    540548
    541549    // fill in signalFrameData->context.uc_stack
     
    604612    frame->edi = signalFrameData->context.uc_mcontext.edi;
    605613    frame->esi = signalFrameData->context.uc_mcontext.esi;
    606614    frame->ebx = signalFrameData->context.uc_mcontext.ebx;
     615    frame->cs = signalFrameData->context.uc_mcontext.cs;
     616    frame->ds = signalFrameData->context.uc_mcontext.ds;
     617    frame->es = signalFrameData->context.uc_mcontext.es;
     618    frame->fs = signalFrameData->context.uc_mcontext.fs;
     619    frame->gs = signalFrameData->context.uc_mcontext.gs;
     620    frame->ss = signalFrameData->context.uc_mcontext.ss;
     621    frame->vector = signalFrameData->context.uc_mcontext.vector;
     622    frame->error_code = signalFrameData->context.uc_mcontext.error_code;
    607623
    608624    i386_frstor((void*)(&signalFrameData->context.uc_mcontext.xregs));
    609625
  • headers/posix/arch/x86/signal.h

     
    144144    unsigned long           edi;
    145145    unsigned long           esi;
    146146    unsigned long           ebx;
     147    unsigned long           cs;
     148    unsigned long           ds;
     149    unsigned long           es;
     150    unsigned long           fs;
     151    unsigned long           gs;
     152    unsigned long           ss;
     153    unsigned long           vector;
     154    unsigned long           error_code;
    147155};
    148156
    149157#endif /* __INTEL__ */