提交 be98f1f8 编写于 作者: B bellard

compilation fixes


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3585 c046a42c-6fe2-441c-8c8c-71466251a162
上级 e160c51c
...@@ -703,8 +703,8 @@ union float64u { ...@@ -703,8 +703,8 @@ union float64u {
uint64_t l; uint64_t l;
}; };
union float64u q_nan = { .l = 0xFFF8000000000000 }; union float64u q_nan = { .l = 0xFFF8000000000000LL };
union float64u s_nan = { .l = 0xFFF0000000000000 }; union float64u s_nan = { .l = 0xFFF0000000000000LL };
void test_fops(double a, double b) void test_fops(double a, double b)
{ {
...@@ -819,7 +819,9 @@ void test_fcvt(double a) ...@@ -819,7 +819,9 @@ void test_fcvt(double a)
/* test all roundings */ /* test all roundings */
asm volatile ("fstcw %0" : "=m" (fpuc)); asm volatile ("fstcw %0" : "=m" (fpuc));
for(i=0;i<4;i++) { for(i=0;i<4;i++) {
asm volatile ("fldcw %0" : : "m" ((fpuc & ~0x0c00) | (i << 10))); uint16_t val16;
val16 = (fpuc & ~0x0c00) | (i << 10);
asm volatile ("fldcw %0" : : "m" (val16));
asm volatile ("fist %0" : "=m" (wa) : "t" (a)); asm volatile ("fist %0" : "=m" (wa) : "t" (a));
asm volatile ("fistl %0" : "=m" (ia) : "t" (a)); asm volatile ("fistl %0" : "=m" (ia) : "t" (a));
asm volatile ("fistpll %0" : "=m" (lla) : "t" (a) : "st"); asm volatile ("fistpll %0" : "=m" (lla) : "t" (a) : "st");
...@@ -976,8 +978,8 @@ void test_floats(void) ...@@ -976,8 +978,8 @@ void test_floats(void)
test_fcvt(1.0/0.0); test_fcvt(1.0/0.0);
test_fcvt(q_nan.d); test_fcvt(q_nan.d);
test_fconst(); test_fconst();
test_fbcd(1234567890123456); test_fbcd(1234567890123456.0);
test_fbcd(-123451234567890); test_fbcd(-123451234567890.0);
test_fenv(); test_fenv();
if (TEST_CMOV) { if (TEST_CMOV) {
test_fcmov(); test_fcmov();
...@@ -1151,12 +1153,12 @@ void test_xchg(void) ...@@ -1151,12 +1153,12 @@ void test_xchg(void)
long i, eflags; long i, eflags;
for(i = 0; i < 2; i++) { for(i = 0; i < 2; i++) {
op0 = 0x123456789abcd; op0 = 0x123456789abcdLL;
if (i == 0) if (i == 0)
op1 = 0xfbca765423456; op1 = 0xfbca765423456LL;
else else
op1 = op0; op1 = op0;
op2 = 0x6532432432434; op2 = 0x6532432432434LL;
asm("cmpxchg8b %1\n" asm("cmpxchg8b %1\n"
"pushf\n" "pushf\n"
"pop %2\n" "pop %2\n"
...@@ -1172,11 +1174,15 @@ void test_xchg(void) ...@@ -1172,11 +1174,15 @@ void test_xchg(void)
/**********************************************/ /**********************************************/
/* segmentation tests */ /* segmentation tests */
#include <sys/syscall.h>
#include <unistd.h>
#include <asm/ldt.h> #include <asm/ldt.h>
#include <linux/unistd.h>
#include <linux/version.h> #include <linux/version.h>
_syscall3(int, modify_ldt, int, func, void *, ptr, unsigned long, bytecount) static inline int modify_ldt(int func, void * ptr, unsigned long bytecount)
{
return syscall(__NR_modify_ldt, func, ptr, bytecount);
}
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 66) #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 66)
#define modify_ldt_ldt_s user_desc #define modify_ldt_ldt_s user_desc
...@@ -1505,13 +1511,10 @@ static inline void pushw(struct vm86_regs *r, int val) ...@@ -1505,13 +1511,10 @@ static inline void pushw(struct vm86_regs *r, int val)
*(uint16_t *)seg_to_linear(r->ss, r->esp) = val; *(uint16_t *)seg_to_linear(r->ss, r->esp) = val;
} }
#undef __syscall_return static inline int vm86(int func, struct vm86plus_struct *v86)
#define __syscall_return(type, res) \ {
do { \ return syscall(__NR_vm86, func, v86);
return (type) (res); \ }
} while (0)
_syscall2(int, vm86, int, func, struct vm86plus_struct *, v86)
extern char vm86_code_start; extern char vm86_code_start;
extern char vm86_code_end; extern char vm86_code_end;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册