diff --git a/arch/ia32/pistachio/src/trap.spp b/arch/ia32/pistachio/src/trap.spp
--- a/arch/ia32/pistachio/src/trap.spp
+++ b/arch/ia32/pistachio/src/trap.spp
@@ -142,6 +142,24 @@
         PROFILE_KERNEL_TIME_STOP
 
         orl     $STACK_TOP, %esp
+
+        /* Determine if there is any work required before returning
+         * back to userspace. */
+
+        /* Get address of current TCB */
+        IA32_GET_CURRENT_TCB %edx
+        /* Add offset of the callback function pointer */ 
+        addl    $(OFS_TCB_POST_SYSCALL_CALLBACK), %edx
+        /* If the callback function pointer is set... */
+        cmpl    $0, (%edx)
+        je      1f
+        /* ...call start_post_syscall_callback() */
+        pusha                                       /* %esp = stack_top - 32 */
+        call    start_post_syscall_callback         /* %esp = stack top */
+        sub     $32, %esp                           /* %esp = stack top - 32 */
+        popa
+        1:
+
         movl    (%esp), %edx
         addl    $(OFS_TCB_ARCH), %edx
 
