21 lines
546 B
Diff
21 lines
546 B
Diff
--- elksemu/elks.c.orig 2005-11-04 01:35:37.000000000 +0100
|
|
+++ elksemu/elks.c 2005-11-04 01:45:28.000000000 +0100
|
|
@@ -129,8 +129,17 @@
|
|
static inline int vm86_mine(struct vm86_struct* v86)
|
|
{
|
|
int __res;
|
|
+#ifndef __PIC__
|
|
__asm__ __volatile__("int $0x80\n"
|
|
:"=a" (__res):"a" ((int)OLD_SYS_vm86), "b" ((int)v86));
|
|
+#else
|
|
+ __asm__ __volatile__(
|
|
+ "movl %%ebx,%%ecx\n\t"
|
|
+ "movl %2,%%ebx\n\t"
|
|
+ "int $0x80\n\t"
|
|
+ "movl %%ecx,%%ebx\n\t"
|
|
+ :"=a" (__res):"a" ((int)OLD_SYS_vm86), "r" ((int)v86) : "ecx");
|
|
+#endif
|
|
return __res;
|
|
}
|
|
#endif
|