From mboxrd@z Thu Jan 1 00:00:00 1970 From: Håvard Bjerke Subject: Xen/ia64 Date: Fri, 18 Feb 2005 11:14:45 +0100 Message-ID: <20050218101445.GC9173@idi.ntnu.no> Mime-Version: 1.0 Content-Type: text/plain; charset=unknown-8bit Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Sender: xen-devel-admin@lists.sourceforge.net Errors-To: xen-devel-admin@lists.sourceforge.net List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , List-Archive: To: dan.magenheimer@hp.com Cc: xen-devel@lists.sourceforge.net List-Id: xen-devel@lists.xenproject.org Has anyone made any thoughts as to how hypercalls should be implemented i= n Xen/ia64? In Xen/x86 they are basically syscalls, only with interrupt vector 0x82 i= nstead of 0x80. So it's a matter of pushing the registers into the stack,= loading the hypercall number (long) and arguments (5x long) into the reg= isters, and interrupting with 'int 0x82': __asm__ __volatile__ ( "pushl %%ebx; pushl %%ecx; pushl %%edx; pushl %%esi; pushl %%= edi; " "movl 4(%%eax),%%ebx ;" "movl 8(%%eax),%%ecx ;" "movl 12(%%eax),%%edx ;" "movl 16(%%eax),%%esi ;" "movl 20(%%eax),%%edi ;" "movl (%%eax),%%eax ;" TRAP_INSTR "; " // =3D int 0x82 "popl %%edi; popl %%esi; popl %%edx; popl %%ecx; popl %%ebx" : "=3Da" (ret) : "0" (&hypercall) : "memory" ); However, in Linux/ia64 a syscall is called with a break instruction: mov r15 =3D NR // the syscall number. r15 is a scratch register. break 0x100000 [...] What's the ideal way to do a hypercall in Xen/ia64? Simply use 'break 0x1= 00001'? Or is 0x100001 reserved for something else in Linux/ia64? H=E5vard --=20 H=E5vard K. F. Bjerke http://www.idi.ntnu.no/~havarbj/ ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click