aboutsummaryrefslogtreecommitdiffstats
path: root/unmodified_drivers
diff options
context:
space:
mode:
authorAndrew Cooper <andrew.cooper3@citrix.com>2013-09-12 10:57:06 +0200
committerJan Beulich <jbeulich@suse.com>2013-09-12 10:57:06 +0200
commit5ad9334a9a70e22d621dfe5863e99f41e0582f1c (patch)
tree740eb62a4612a9458d1a8f35a8156e3ba5882176 /unmodified_drivers
parent8adf2629f052ad2fcdafe0ddac8c16e6501c67ed (diff)
downloadxen-5ad9334a9a70e22d621dfe5863e99f41e0582f1c.tar.gz
xen-5ad9334a9a70e22d621dfe5863e99f41e0582f1c.tar.bz2
xen-5ad9334a9a70e22d621dfe5863e99f41e0582f1c.zip
x86: Special case __HYPERVISOR_iret rather more when writing hypercall pages
In all cases when a hypercall page is written, __HYPERVISOR_iret is first written as a regular hypercall, then subsequently rewritten in its special case. For VMX and SVM, this means that following the ud2a instruction is 3 bytes of an imm32 parameter. For a ring3 kernel, this means that following the syscall instruction is the second half of 'pop %r11'. For a ring1 kernel, the iret case ends up as the same number of bytes as the rest of the hypercalls, but it is pointless writing it twice, and is changed for consistency. Therefore, skip the loop iteration which would write the incorrect __HYPERVISOR_iret hypercall. This removes junk machine code from the tail and makes disassemblers rather more happy when looking at the hypercall page. Also, a miscellaneous whitespace fix in the comment for ring3 kernel. Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> master commit: fca11da0ec956b17d7450d7776c3ffa22a8f538a master date: 2013-07-16 11:10:45 +0200
Diffstat (limited to 'unmodified_drivers')
0 files changed, 0 insertions, 0 deletions