On 2011-04-29 20:20, Jung-uk Kim wrote:
...
+static __inline void
+vmware_hvcall(u_int cmd, u_int *p)
+{
+
+       __asm __volatile("inl (%%dx)"
+       : "=a" (p[0]), "=b" (p[1]), "=c" (p[2]), "=d" (p[3])
+       : "0" (VMW_HVMAGIC), "1" (UINT_MAX), "2" (cmd), "3" (VMW_HVPORT)
+       : "memory");
+}

This upsets clang's integrated assembler, and I think it's right in this
case:

sys/x86/x86/tsc.c:103:19: error: invalid operand for instruction
        __asm __volatile("inl (%%dx)"
                         ^
<inline asm>:1:6: note: instantiated into assembly here
        inl (%dx)
            ^

Can we please add an explicit %%eax as second argument here?  E.g.:

diff --git a/sys/x86/x86/tsc.c b/sys/x86/x86/tsc.c
index 0b7510c..9638167 100644
--- a/sys/x86/x86/tsc.c
+++ b/sys/x86/x86/tsc.c
@@ -100,7 +100,7 @@ static __inline void
 vmware_hvcall(u_int cmd, u_int *p)
 {
- __asm __volatile("inl (%%dx)"
+       __asm __volatile("inl (%%dx), %%eax"
        : "=a" (p[0]), "=b" (p[1]), "=c" (p[2]), "=d" (p[3])
        : "0" (VMW_HVMAGIC), "1" (UINT_MAX), "2" (cmd), "3" (VMW_HVPORT)
        : "memory");
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to