x86: Use partial contexts for all entries [2/2]
[akaros.git] / kern / arch / x86 / trap64.c
index 754c90b..5fffe6b 100644 (file)
@@ -33,7 +33,9 @@ void print_trapframe(struct hw_trapframe *hw_tf)
         * nuts when we print/panic */
        pcpui->__lock_checking_enabled--;
        spin_lock_irqsave(&ptf_lock);
-       printk("HW TRAP frame at %p on core %d\n", hw_tf, core_id());
+       printk("HW TRAP frame %sat %p on core %d\n",
+              x86_hwtf_is_partial(hw_tf) ? "(partial) " : "",
+              hw_tf, core_id());
        printk("  rax  0x%016lx\n",           hw_tf->tf_rax);
        printk("  rbx  0x%016lx\n",           hw_tf->tf_rbx);
        printk("  rcx  0x%016lx\n",           hw_tf->tf_rcx);
@@ -69,6 +71,8 @@ void print_trapframe(struct hw_trapframe *hw_tf)
        /* Used in trapentry64.S */
        static_assert(offsetof(struct hw_trapframe, tf_cs) - 
                      offsetof(struct hw_trapframe, tf_rax) == 0x90);
+       static_assert(offsetof(struct hw_trapframe, tf_padding0) -
+                     offsetof(struct hw_trapframe, tf_rax) == 0xac);
        /* Used in trap64.h */
        static_assert(offsetof(struct per_cpu_info, stacktop) == 0);
 }
@@ -79,7 +83,9 @@ void print_swtrapframe(struct sw_trapframe *sw_tf)
        struct per_cpu_info *pcpui = &per_cpu_info[core_id()];
        pcpui->__lock_checking_enabled--;
        spin_lock_irqsave(&ptf_lock);
-       printk("SW TRAP frame at %p on core %d\n", sw_tf, core_id());
+       printk("SW TRAP frame %sat %p on core %d\n",
+              x86_swtf_is_partial(sw_tf) ? "(partial) " : "",
+              sw_tf, core_id());
        printk("  rbx  0x%016lx\n",           sw_tf->tf_rbx);
        printk("  rbp  0x%016lx\n",           sw_tf->tf_rbp);
        printk("  r12  0x%016lx\n",           sw_tf->tf_r12);