|
|
|
|
|
|
|
|
|
|
xen-devel
Re: [Xen-devel] Using SYSCALL/SYSRET with a minios kernel
Hi.
On Mon, 2008-02-25 at 00:22 +0100, Goswin von Brederlow wrote:
> Hi,
>
> I'm trying to use the SYSCALL/SYSRET opcodes with a minios kernel
> without much success.
>
> Going by the manuals (and linux sources) I first have to setup the
> STAR and LSTAR registers to define the segment and instruction pointer
> to be used for SYSCALL:
>
> /*
> * LSTAR and STAR live in a bit strange symbiosis.
> * They both write to the same internal register. STAR allows to set
> * CS/DS but only a 32bit target. LSTAR sets the 64bit rip.
> */
> wrmsrl(MSR_STAR, ((uint64_t)__USER_CS)<<48 |
> ((uint64_t)__KERNEL_CS)<<32);
> wrmsrl(MSR_LSTAR, system_call);
>
>
> But all that does is give a message on the xen console:
>
> (XEN) traps.c:1467:d137 Domain attempted WRMSR 00000000c0000081 from
> e023e010:00000000 to e033e033:00000000.
> (XEN) traps.c:1467:d137 Domain attempted WRMSR 00000000c0000082 from
> ffff8300:001e0800 to 00000000:001054c0.
The PV interface simply does not support STAR/LSTAR. It's that
simple. :) I suppose you want to implement system calls? Check the
HYPERVISOR_set_callbacks() call. The syscall_address parameter presently
remains entirely unused in mini-os. But as far as I could tell
immediately from the source, syscall/sysret appears to be supported by
the general callback mechanism the same way sysenter/sysleave presently
is.
regards,
daniel
--
Daniel Stodden
LRR - Lehrstuhl für Rechnertechnik und Rechnerorganisation
Institut für Informatik der TU München D-85748 Garching
http://www.lrr.in.tum.de/~stodden mailto:stodden@xxxxxxxxxx
PGP Fingerprint: F5A4 1575 4C56 E26A 0B33 3D80 457E 82AE B0D8 735B
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
|
|
|
|