~vcs-imports/qemu/git

« back to all changes in this revision

Viewing changes to tests/test-i386.h

  • Committer: bellard
  • Date: 2005-03-01 21:43:42 UTC
  • Revision ID: git-v1:1289f43ab16f9a012fb3698bcc5c92e61c10cd34
Windows keys support with keymaps


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1315 c046a42c-6fe2-441c-8c8c-71466251a162

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
 
2
2
#define exec_op glue(exec_, OP)
3
 
#define exec_opq glue(glue(exec_, OP), q)
4
3
#define exec_opl glue(glue(exec_, OP), l)
5
4
#define exec_opw glue(glue(exec_, OP), w)
6
5
#define exec_opb glue(glue(exec_, OP), b)
7
6
 
8
 
#define EXECOP2(size, rsize, res, s1, flags) \
 
7
#define EXECOP2(size, res, s1, flags) \
9
8
    asm ("push %4\n\t"\
10
9
         "popf\n\t"\
11
 
         stringify(OP) size " %" rsize "2, %" rsize "0\n\t" \
 
10
         stringify(OP) size " %" size "2, %" size "0\n\t" \
12
11
         "pushf\n\t"\
13
 
         "pop %1\n\t"\
 
12
         "popl %1\n\t"\
14
13
         : "=q" (res), "=g" (flags)\
15
 
         : "q" (s1), "0" (res), "1" (flags)); \
16
 
    printf("%-10s A=" FMTLX " B=" FMTLX " R=" FMTLX " CCIN=%04lx CC=%04lx\n", \
17
 
           stringify(OP) size, s0, s1, res, iflags, flags & CC_MASK);
 
14
         : "q" (s1), "0" (res), "1" (flags));
18
15
 
19
 
#define EXECOP1(size, rsize, res, flags) \
 
16
#define EXECOP1(size, res, flags) \
20
17
    asm ("push %3\n\t"\
21
18
         "popf\n\t"\
22
 
         stringify(OP) size " %" rsize "0\n\t" \
 
19
         stringify(OP) size " %" size "0\n\t" \
23
20
         "pushf\n\t"\
24
 
         "pop %1\n\t"\
 
21
         "popl %1\n\t"\
25
22
         : "=q" (res), "=g" (flags)\
26
 
         : "0" (res), "1" (flags)); \
27
 
    printf("%-10s A=" FMTLX " R=" FMTLX " CCIN=%04lx CC=%04lx\n", \
28
 
           stringify(OP) size, s0, res, iflags, flags & CC_MASK);
 
23
         : "0" (res), "1" (flags));
29
24
 
30
25
#ifdef OP1
31
 
#if defined(__x86_64__)
32
 
void exec_opq(long s0, long s1, long iflags)
33
 
{
34
 
    long res, flags;
35
 
    res = s0;
36
 
    flags = iflags;
37
 
    EXECOP1("q", "", res, flags);
38
 
}
39
 
#endif
40
 
 
41
 
void exec_opl(long s0, long s1, long iflags)
42
 
{
43
 
    long res, flags;
44
 
    res = s0;
45
 
    flags = iflags;
46
 
    EXECOP1("l", "k", res, flags);
47
 
}
48
 
 
49
 
void exec_opw(long s0, long s1, long iflags)
50
 
{
51
 
    long res, flags;
52
 
    res = s0;
53
 
    flags = iflags;
54
 
    EXECOP1("w", "w", res, flags);
55
 
}
56
 
 
57
 
void exec_opb(long s0, long s1, long iflags)
58
 
{
59
 
    long res, flags;
60
 
    res = s0;
61
 
    flags = iflags;
62
 
    EXECOP1("b", "b", res, flags);
 
26
void exec_opl(int s0, int s1, int iflags)
 
27
{
 
28
    int res, flags;
 
29
    res = s0;
 
30
    flags = iflags;
 
31
    EXECOP1("", res, flags);
 
32
    printf("%-10s A=%08x R=%08x CCIN=%04x CC=%04x\n",
 
33
           stringify(OP) "l", s0, res, iflags, flags & CC_MASK);
 
34
}
 
35
 
 
36
void exec_opw(int s0, int s1, int iflags)
 
37
{
 
38
    int res, flags;
 
39
    res = s0;
 
40
    flags = iflags;
 
41
    EXECOP1("w", res, flags);
 
42
    printf("%-10s A=%08x R=%08x CCIN=%04x CC=%04x\n",
 
43
           stringify(OP) "w", s0, res, iflags, flags & CC_MASK);
 
44
}
 
45
 
 
46
void exec_opb(int s0, int s1, int iflags)
 
47
{
 
48
    int res, flags;
 
49
    res = s0;
 
50
    flags = iflags;
 
51
    EXECOP1("b", res, flags);
 
52
    printf("%-10s A=%08x R=%08x CCIN=%04x CC=%04x\n",
 
53
           stringify(OP) "b", s0, res, iflags, flags & CC_MASK);
63
54
}
64
55
#else
65
 
#if defined(__x86_64__)
66
 
void exec_opq(long s0, long s1, long iflags)
67
 
{
68
 
    long res, flags;
69
 
    res = s0;
70
 
    flags = iflags;
71
 
    EXECOP2("q", "", res, s1, flags);
72
 
}
73
 
#endif
74
 
 
75
 
void exec_opl(long s0, long s1, long iflags)
76
 
{
77
 
    long res, flags;
78
 
    res = s0;
79
 
    flags = iflags;
80
 
    EXECOP2("l", "k", res, s1, flags);
81
 
}
82
 
 
83
 
void exec_opw(long s0, long s1, long iflags)
84
 
{
85
 
    long res, flags;
86
 
    res = s0;
87
 
    flags = iflags;
88
 
    EXECOP2("w", "w", res, s1, flags);
89
 
}
90
 
 
91
 
void exec_opb(long s0, long s1, long iflags)
92
 
{
93
 
    long res, flags;
94
 
    res = s0;
95
 
    flags = iflags;
96
 
    EXECOP2("b", "b", res, s1, flags);
97
 
}
98
 
#endif
99
 
 
100
 
void exec_op(long s0, long s1)
101
 
{
102
 
    s0 = i2l(s0);
103
 
    s1 = i2l(s1);
104
 
#if defined(__x86_64__)
105
 
    exec_opq(s0, s1, 0);
106
 
#endif
 
56
void exec_opl(int s0, int s1, int iflags)
 
57
{
 
58
    int res, flags;
 
59
    res = s0;
 
60
    flags = iflags;
 
61
    EXECOP2("", res, s1, flags);
 
62
    printf("%-10s A=%08x B=%08x R=%08x CCIN=%04x CC=%04x\n",
 
63
           stringify(OP) "l", s0, s1, res, iflags, flags & CC_MASK);
 
64
}
 
65
 
 
66
void exec_opw(int s0, int s1, int iflags)
 
67
{
 
68
    int res, flags;
 
69
    res = s0;
 
70
    flags = iflags;
 
71
    EXECOP2("w", res, s1, flags);
 
72
    printf("%-10s A=%08x B=%08x R=%08x CCIN=%04x CC=%04x\n",
 
73
           stringify(OP) "w", s0, s1, res, iflags, flags & CC_MASK);
 
74
}
 
75
 
 
76
void exec_opb(int s0, int s1, int iflags)
 
77
{
 
78
    int res, flags;
 
79
    res = s0;
 
80
    flags = iflags;
 
81
    EXECOP2("b", res, s1, flags);
 
82
    printf("%-10s A=%08x B=%08x R=%08x CCIN=%04x CC=%04x\n",
 
83
           stringify(OP) "b", s0, s1, res, iflags, flags & CC_MASK);
 
84
}
 
85
#endif
 
86
 
 
87
void exec_op(int s0, int s1)
 
88
{
107
89
    exec_opl(s0, s1, 0);
108
90
    exec_opw(s0, s1, 0);
109
91
    exec_opb(s0, s1, 0);
110
92
#ifdef OP_CC
111
 
#if defined(__x86_64__)
112
 
    exec_opq(s0, s1, CC_C);
113
 
#endif
114
93
    exec_opl(s0, s1, CC_C);
115
94
    exec_opw(s0, s1, CC_C);
116
95
    exec_opb(s0, s1, CC_C);