>>> On 22.05.18 at 15:45, <brge...@gmail.com> wrote: > On Mon, May 21, 2018 at 11:54 PM, Boris Ostrovsky > <boris.ostrov...@oracle.com> wrote: >> @@ -98,6 +101,12 @@ ENTRY(pvh_start_xen) >> /* 64-bit entry point. */ >> .code64 >> 1: >> + /* Set base address in stack canary descriptor. */ >> + mov $MSR_GS_BASE,%ecx >> + mov $canary, %rax >> + cdq >> + wrmsr > > CDQ only sign-extends EAX to RAX. What you really want is to move the > high 32-bits to EDX (or zero EDX if we can guarantee it is loaded > below 4G).
What you describe is CDQE (AT&T name: CLTD); CDQ (AT&T: CLTQ) sign-extends EAX to EDX:EAX. Jan