]> Zhao Yanbai Git Server - minix.git/commitdiff
Revert "print kernel stacktrace for exceptions in kernel"
authorBen Gras <ben@minix3.org>
Fri, 22 Jul 2011 13:01:44 +0000 (15:01 +0200)
committerBen Gras <ben@minix3.org>
Fri, 22 Jul 2011 13:01:44 +0000 (15:01 +0200)
This reverts commit eff1369cab8fc04802c43231ec8ac2445d0a29da.

This was in a working branch and I only intended to commit
exception.c. But I committed the exact inverse. Sorry.

common/include/arch/i386/archtypes.h
kernel/Makefile
kernel/arch/i386/arch_system.c
kernel/arch/i386/include/arch_proto.h
kernel/arch/i386/sconst.h
kernel/debug.h
kernel/proc.c
kernel/proto.h
kernel/system/do_fork.c
kernel/system/do_mcontext.c
kernel/system/do_sigreturn.c

index e16f778013e6d55da304a58dae172ec51c42466e..fb424c977364590137af96bb856864b31557cbed 100644 (file)
@@ -37,7 +37,6 @@ struct fpu_state_s {
        /* fpu_image includes 512 bytes of image itself and
         * additional 15 bytes required for manual 16-byte alignment. */
        char fpu_image[527];
-       u32_t checksum;
 };
 
 #define INMEMORY(p) (!p->p_seg.p_cr3 || get_cpulocal_var(ptproc) == p)
index 02293d05e7aa34e44f0a7ce2206977c740bc7641..ee76ca38af8f2bc993180d0d562fb43d270fe90a 100644 (file)
@@ -14,7 +14,7 @@ SRCS += smp.c
 .endif
 
 DPADD+=        ${LIBTIMERS} ${LIBSYS} ${LIBEXEC}
-LDADD+=        -ltimers -lsys -lexec -lz
+LDADD+=        -ltimers -lsys -lexec
 
 CFLAGS += -D__kernel__
 
index a7f230573d2598fc24206d14db8baa578721e37e..2c32b82c65cc3adaa82ec12b7360ca6436edae04 100644 (file)
@@ -58,27 +58,6 @@ FORWARD _PROTOTYPE( void ser_dump_proc_cpu, (void));
 FORWARD _PROTOTYPE( void ser_init, (void));
 #endif
 
-PRIVATE u32_t fpusum(struct proc *p)
-{
-       void *save_area = p->p_fpu_state.fpu_save_area_p;
-       return crc32(0, save_area, FPU_XFP_SIZE);
-}
-
-PUBLIC void fpu_makechecksum(struct proc *p)
-{
-       p->p_fpu_state.checksum = fpusum(p);
-}
-
-PUBLIC void fpu_verifychecksum(struct proc *p)
-{
-       static int n;
-       n++;
-       if(p->p_fpu_state.checksum != fpusum(p)) {
-               printf("%d / %s fpu state broken!", p->p_endpoint, p->p_name);
-               util_stacktrace();
-       }
-}
-
 PUBLIC __dead void arch_monitor(void)
 {
        monitor();
@@ -273,23 +252,16 @@ PUBLIC void fpu_init(void)
 
 PUBLIC void save_local_fpu(struct proc *pr)
 {
-       static int n;
-       phys_bytes save_area = (phys_bytes) pr->p_fpu_state.fpu_save_area_p;
        if(!is_fpu())
                return;
 
-       /* save area must be 16-byte aligned */
-       assert(!(save_area % FPUALIGN));
-
        /* Save changed FPU context. */
        if(osfxsr_feature) {
-               fxsave(save_area);
+               fxsave(pr->p_fpu_state.fpu_save_area_p);
                fninit();
        } else {
-               fnsave(save_area);
+               fnsave(pr->p_fpu_state.fpu_save_area_p);
        }
-
-       fpu_makechecksum(pr);
 }
 
 PUBLIC void save_fpu(struct proc *pr)
@@ -332,14 +304,10 @@ PUBLIC void restore_fpu(struct proc *pr)
                fninit();
                pr->p_misc_flags |= MF_FPU_INITIALIZED;
        } else {
-               phys_bytes save_area = (phys_bytes) pr->p_fpu_state.fpu_save_area_p;
-               /* save area must be 16-byte aligned */
-               assert(!(save_area % FPUALIGN));
-               fpu_verifychecksum(pr);
                if(osfxsr_feature) {
-                       fxrstor(save_area);
+                       fxrstor(pr->p_fpu_state.fpu_save_area_p);
                } else {
-                       frstor(save_area);
+                       frstor(pr->p_fpu_state.fpu_save_area_p);
                }
        }
 }
index fb5666123cd59d457fe167a9d644e960b7943cff..af605c6ed2e7ed0df0143eade6eb3084e542887e 100644 (file)
@@ -95,10 +95,10 @@ _PROTOTYPE( void ia32_msr_read, (u32_t reg, u32_t * hi, u32_t * lo) );
 _PROTOTYPE( void ia32_msr_write, (u32_t reg, u32_t hi, u32_t lo)       );
 _PROTOTYPE( void fninit, (void));
 _PROTOTYPE( void clts, (void));
-_PROTOTYPE( void fxsave, (vir_bytes));
-_PROTOTYPE( void fnsave, (vir_bytes));
-_PROTOTYPE( void fxrstor, (vir_bytes));
-_PROTOTYPE( void frstor, (vir_bytes));
+_PROTOTYPE( void fxsave, (void *));
+_PROTOTYPE( void fnsave, (void *));
+_PROTOTYPE( void fxrstor, (void *));
+_PROTOTYPE( void frstor, (void *));
 _PROTOTYPE( unsigned short fnstsw, (void));
 _PROTOTYPE( void fnstcw, (unsigned short* cw));
 
index d48640b6dc29da4f535513902429b6f92461c95c..5f2bd6e0996966b19020910d8872c6ae19d3ac51 100644 (file)
@@ -28,7 +28,7 @@
        SSREG = SPREG+W
        P_STACKTOP = SSREG+W
        FP_SAVE_AREA_P = P_STACKTOP
-       P_LDT_SEL = FP_SAVE_AREA_P + 536
+       P_LDT_SEL = FP_SAVE_AREA_P + 532
        P_CR3 = P_LDT_SEL+W
        P_CR3_V = P_CR3+4
        P_LDT = P_CR3_V+W
index fc422e62cc3e51672f3b5d0a2dd150c9998f7032..ce808f31ac4d894e0218f7186d4a1f5f97178eb7 100644 (file)
@@ -37,8 +37,6 @@
  */
 #define DEBUG_RACE                     0
 
-#define DEBUG_FPUCHECK                 1
-
 /* DEBUG_DUMPIPC dumps all IPC to serial; due to the amount of logging it is 
  * strongly recommended to set "ctty 0" in the boot monitor and run inside a 
  * virtual machine if you enable this; on the hardware it would take forever 
index 820bda02d6b360f10ab6add03989600d62169345..b8cf5cf99683f440935af62eea698917d112d4d0 100644 (file)
@@ -257,10 +257,6 @@ PUBLIC void switch_to_user(void)
        int tlb_must_refresh = 0;
 #endif
 
-       char buf[100];
-       u32_t c;
-       c = crc32(0, buf, 100);
-
        p = get_cpulocal_var(proc_ptr);
        /*
         * if the current process is still runnable check the misc flags and let
index 9d1090d369d46b85102dc07e6aed8c7be823d5f2..3aae90a346719720beb1686e479db26b02f883bc 100644 (file)
@@ -223,9 +223,6 @@ _PROTOTYPE( int copy_msg_to_user, (struct proc * p, message * src,
 _PROTOTYPE(void switch_address_space, (struct proc * p));
 _PROTOTYPE(void release_address_space, (struct proc *pr));
 
-_PROTOTYPE(void fpu_makechecksum, (struct proc *p));
-_PROTOTYPE(void fpu_verifychecksum, (struct proc *p));
-
 _PROTOTYPE(void enable_fpu_exception, (void));
 _PROTOTYPE(void disable_fpu_exception, (void));
 _PROTOTYPE(void release_fpu, (struct proc * p));
index f2576843b7ce30e079baf07331c51ff785258df3..0b62361963ecc564ec6baff326537e1cb42e3eec 100644 (file)
@@ -65,13 +65,10 @@ PUBLIC int do_fork(struct proc * caller, message * m_ptr)
 #if (_MINIX_CHIP == _CHIP_INTEL)
   rpc->p_seg.p_ldt_sel = old_ldt_sel;  /* restore descriptors */
   rpc->p_fpu_state.fpu_save_area_p = old_fpu_save_area_p;
-  if(proc_used_fpu(rpp)) {
-       fpu_verifychecksum(rpp);
+  if(proc_used_fpu(rpp))
        memcpy(rpc->p_fpu_state.fpu_save_area_p,
               rpp->p_fpu_state.fpu_save_area_p,
               FPU_XFP_SIZE);
-       fpu_verifychecksum(rpc);
-  }
 #endif
   if(++gen >= _ENDPOINT_MAX_GENERATION)        /* increase generation */
        gen = 1;                        /* generation number wraparound */
index 4bfc8ff94a00c628907ac634c980aaaf6e49d35a..c105acf5eb0cb59f96409e69a02274f8dfc46944 100644 (file)
@@ -86,7 +86,6 @@ PUBLIC int do_setmcontext(struct proc * caller, message * m_ptr)
        rp->p_misc_flags |= MF_FPU_INITIALIZED;
        memcpy(rp->p_fpu_state.fpu_save_area_p, &(mc.mc_fpu_state),
                                                                FPU_XFP_SIZE);
-       fpu_makechecksum(rp);
   } else
        rp->p_misc_flags &= ~MF_FPU_INITIALIZED;
   /* force reloading FPU in either case */
index e8a5232ba67b7938f6625b141b44c7bee400e1f4..592c8e2a2135b41c170fb76547ce2d612604229d 100644 (file)
@@ -56,10 +56,8 @@ PUBLIC int do_sigreturn(struct proc * caller, message * m_ptr)
 #if (_MINIX_CHIP == _CHIP_INTEL)
   if(sc.sc_flags & MF_FPU_INITIALIZED)
   {
-       fpu_verifychecksum(rp);
        memcpy(rp->p_fpu_state.fpu_save_area_p, &sc.sc_fpu_state,
                FPU_XFP_SIZE);
-       fpu_makechecksum(rp);
        rp->p_misc_flags |=  MF_FPU_INITIALIZED; /* Restore math usage flag. */
        /* force reloading FPU */
        release_fpu(rp);