+
+ .global test_user_ptr
+test_user_ptr:
+ .long ROSHARED_PTR(test_user)
+
+test_pib:
+ .long 0
+ .long 0
+ .long ROSHARED_PTR(test_objlist)
+ .long 1
+ .long 0
+
+test_objlist:
+ .long 0
+ .space 128
+
+test_user:
+ movl $ROSHARED_PTR(test_pib), %eax
+ movl $0x7fff0000, %ecx
+ call *%ecx
+1: jmp 1b
+
+ .section ".rwshared","a"
+ .align 4096
+
+ // Userspace must set this to an appropriate entry point
+ // prior to registering objects with the kernel. It should
+ // not be modified while an object is registered (the kernel
+ // won't mind, but there's no mechanism to wait until no more
+ // upcalls to the old entry point are in progress).
+ .global x86_upcall_entry
+x86_upcall_entry:
+ .long 0