From mboxrd@z Thu Jan 1 00:00:00 1970 From: Goswin von Brederlow Subject: Re: Using SYSCALL/SYSRET with a minios kernel Date: Mon, 25 Feb 2008 02:55:09 +0100 Message-ID: <87hcfx3ima.fsf@web.de> References: <87k5kuym6k.fsf@web.de> <1203897714.9103.6.camel@thinkpad.localdomain> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: In-Reply-To: <1203897714.9103.6.camel@thinkpad.localdomain> (Daniel Stodden's message of "Mon, 25 Feb 2008 01:01:54 +0100") List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Daniel Stodden Cc: xen-devel@lists.xensource.com, Goswin von Brederlow List-Id: xen-devel@lists.xenproject.org Daniel Stodden writes: > 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. >... > 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 Ok, here is what I did for the callbacks: --- x86_64.S --- ENTRY(syscall_callback) int $80 zeroentry do_syscall --- kernel.c --- HYPERVISOR_set_callbacks((unsigned long)hypervisor_callback, (unsigned long)failsafe_callback, (unsigned long)syscall_callback); __asm__ __volatile__("syscall"); If I understood you right that should set the RIP to syscall_callback and execute from there. But still, the syscall opcode does nothing. In case you wonder. The "int $80" is there to crash the domain and tell me it reached that point. MfG Goswin