3 .extern __v3_hvm_ros_signal_handler
6 This is the entry point for signal dispatch
9 VMM invokes this stub when a user signal is
10 raised and: the relevant address space
11 is active, and we are at user-level.
12 It will be invoked on exactly one core,
13 although there are no guarantees on which one.
54 The VMM puts us here with what looks like a long mode
55 interrupt dispatch, but it's from CPL 3 to CPL 3 and
56 it's not done as an interrupt injection per se, so
57 we can be interrupted, and deliverable interrupts
58 automatically prioritize over us.
60 48bitsblank | return SS (16 bits)
63 48bitsblank | return CS (16 bits)
65 ERROR CODE (HVM-specific non-zero number here) <- RSP on entry
67 We then need simply to do this:
70 call the handler (if installed)
76 .global __v3_hvm_ros_signal_handler_stub
77 __v3_hvm_ros_signal_handler_stub:
79 movabs __v3_hvm_ros_signal_handler, %rax
82 movq 120(%rsp), %rdi /* error code becomes argument */
86 addq $8, %rsp /* nuke the error code */