]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - arch/um/os-Linux/skas/trap.c
uml: tidy fault code
[karo-tx-linux.git] / arch / um / os-Linux / skas / trap.c
index f104427d2caf345e63d75a1700490cb6e774c551..6a20d08caf91bb45f3a8671b1262cdf416e1771d 100644 (file)
 void sig_handler_common_skas(int sig, void *sc_ptr)
 {
        struct sigcontext *sc = sc_ptr;
-       struct skas_regs *r;
+       union uml_pt_regs *r;
        void (*handler)(int, union uml_pt_regs *);
-       int save_errno = errno;
-       int save_user;
+       int save_user, save_errno = errno;
 
        /* This is done because to allow SIGSEGV to be delivered inside a SEGV
         * handler.  This can happen in copy_user, and if SEGV is disabled,
@@ -31,13 +30,13 @@ void sig_handler_common_skas(int sig, void *sc_ptr)
        if(sig == SIGSEGV)
                change_sig(SIGSEGV, 1);
 
-       r = &TASK_REGS(get_current())->skas;
-       save_user = r->is_user;
-       r->is_user = 0;
+       r = TASK_REGS(get_current());
+       save_user = r->skas.is_user;
+       r->skas.is_user = 0;
        if ( sig == SIGFPE || sig == SIGSEGV ||
             sig == SIGBUS || sig == SIGILL ||
             sig == SIGTRAP ) {
-               GET_FAULTINFO_FROM_SC(r->faultinfo, sc);
+               GET_FAULTINFO_FROM_SC(r->skas.faultinfo, sc);
        }
 
        change_sig(SIGUSR1, 1);
@@ -49,10 +48,10 @@ void sig_handler_common_skas(int sig, void *sc_ptr)
            sig != SIGVTALRM && sig != SIGALRM)
                unblock_signals();
 
-       handler(sig, (union uml_pt_regs *) r);
+       handler(sig, r);
 
        errno = save_errno;
-       r->is_user = save_user;
+       r->skas.is_user = save_user;
 }
 
 extern int ptrace_faultinfo;