~ubuntu-branches/ubuntu/utopic/linux-ti-omap/utopic

« back to all changes in this revision

Viewing changes to arch/x86/include/asm/inst.h

  • Committer: Bazaar Package Importer
  • Author(s): Amit Kucheria, Amit Kucheria
  • Date: 2010-03-10 02:28:15 UTC
  • Revision ID: james.westby@ubuntu.com-20100310022815-7sd3gwvn5kenaq33
Tags: 2.6.33-500.1
[ Amit Kucheria ]

* Initial release of a 2.6.33-based OMAP kernel
* UBUNTU: [Upstream] Fix omap 1-wire driver compilation
* UBUNTU: ubuntu: AppArmor -- update to mainline 2010-03-04

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Generate .byte code for some instructions not supported by old
 
3
 * binutils.
 
4
 */
 
5
#ifndef X86_ASM_INST_H
 
6
#define X86_ASM_INST_H
 
7
 
 
8
#ifdef __ASSEMBLY__
 
9
 
 
10
        .macro XMM_NUM opd xmm
 
11
        .ifc \xmm,%xmm0
 
12
        \opd = 0
 
13
        .endif
 
14
        .ifc \xmm,%xmm1
 
15
        \opd = 1
 
16
        .endif
 
17
        .ifc \xmm,%xmm2
 
18
        \opd = 2
 
19
        .endif
 
20
        .ifc \xmm,%xmm3
 
21
        \opd = 3
 
22
        .endif
 
23
        .ifc \xmm,%xmm4
 
24
        \opd = 4
 
25
        .endif
 
26
        .ifc \xmm,%xmm5
 
27
        \opd = 5
 
28
        .endif
 
29
        .ifc \xmm,%xmm6
 
30
        \opd = 6
 
31
        .endif
 
32
        .ifc \xmm,%xmm7
 
33
        \opd = 7
 
34
        .endif
 
35
        .ifc \xmm,%xmm8
 
36
        \opd = 8
 
37
        .endif
 
38
        .ifc \xmm,%xmm9
 
39
        \opd = 9
 
40
        .endif
 
41
        .ifc \xmm,%xmm10
 
42
        \opd = 10
 
43
        .endif
 
44
        .ifc \xmm,%xmm11
 
45
        \opd = 11
 
46
        .endif
 
47
        .ifc \xmm,%xmm12
 
48
        \opd = 12
 
49
        .endif
 
50
        .ifc \xmm,%xmm13
 
51
        \opd = 13
 
52
        .endif
 
53
        .ifc \xmm,%xmm14
 
54
        \opd = 14
 
55
        .endif
 
56
        .ifc \xmm,%xmm15
 
57
        \opd = 15
 
58
        .endif
 
59
        .endm
 
60
 
 
61
        .macro PFX_OPD_SIZE
 
62
        .byte 0x66
 
63
        .endm
 
64
 
 
65
        .macro PFX_REX opd1 opd2
 
66
        .if (\opd1 | \opd2) & 8
 
67
        .byte 0x40 | ((\opd1 & 8) >> 3) | ((\opd2 & 8) >> 1)
 
68
        .endif
 
69
        .endm
 
70
 
 
71
        .macro MODRM mod opd1 opd2
 
72
        .byte \mod | (\opd1 & 7) | ((\opd2 & 7) << 3)
 
73
        .endm
 
74
 
 
75
        .macro PSHUFB_XMM xmm1 xmm2
 
76
        XMM_NUM pshufb_opd1 \xmm1
 
77
        XMM_NUM pshufb_opd2 \xmm2
 
78
        PFX_OPD_SIZE
 
79
        PFX_REX pshufb_opd1 pshufb_opd2
 
80
        .byte 0x0f, 0x38, 0x00
 
81
        MODRM 0xc0 pshufb_opd1 pshufb_opd2
 
82
        .endm
 
83
 
 
84
        .macro PCLMULQDQ imm8 xmm1 xmm2
 
85
        XMM_NUM clmul_opd1 \xmm1
 
86
        XMM_NUM clmul_opd2 \xmm2
 
87
        PFX_OPD_SIZE
 
88
        PFX_REX clmul_opd1 clmul_opd2
 
89
        .byte 0x0f, 0x3a, 0x44
 
90
        MODRM 0xc0 clmul_opd1 clmul_opd2
 
91
        .byte \imm8
 
92
        .endm
 
93
 
 
94
        .macro AESKEYGENASSIST rcon xmm1 xmm2
 
95
        XMM_NUM aeskeygen_opd1 \xmm1
 
96
        XMM_NUM aeskeygen_opd2 \xmm2
 
97
        PFX_OPD_SIZE
 
98
        PFX_REX aeskeygen_opd1 aeskeygen_opd2
 
99
        .byte 0x0f, 0x3a, 0xdf
 
100
        MODRM 0xc0 aeskeygen_opd1 aeskeygen_opd2
 
101
        .byte \rcon
 
102
        .endm
 
103
 
 
104
        .macro AESIMC xmm1 xmm2
 
105
        XMM_NUM aesimc_opd1 \xmm1
 
106
        XMM_NUM aesimc_opd2 \xmm2
 
107
        PFX_OPD_SIZE
 
108
        PFX_REX aesimc_opd1 aesimc_opd2
 
109
        .byte 0x0f, 0x38, 0xdb
 
110
        MODRM 0xc0 aesimc_opd1 aesimc_opd2
 
111
        .endm
 
112
 
 
113
        .macro AESENC xmm1 xmm2
 
114
        XMM_NUM aesenc_opd1 \xmm1
 
115
        XMM_NUM aesenc_opd2 \xmm2
 
116
        PFX_OPD_SIZE
 
117
        PFX_REX aesenc_opd1 aesenc_opd2
 
118
        .byte 0x0f, 0x38, 0xdc
 
119
        MODRM 0xc0 aesenc_opd1 aesenc_opd2
 
120
        .endm
 
121
 
 
122
        .macro AESENCLAST xmm1 xmm2
 
123
        XMM_NUM aesenclast_opd1 \xmm1
 
124
        XMM_NUM aesenclast_opd2 \xmm2
 
125
        PFX_OPD_SIZE
 
126
        PFX_REX aesenclast_opd1 aesenclast_opd2
 
127
        .byte 0x0f, 0x38, 0xdd
 
128
        MODRM 0xc0 aesenclast_opd1 aesenclast_opd2
 
129
        .endm
 
130
 
 
131
        .macro AESDEC xmm1 xmm2
 
132
        XMM_NUM aesdec_opd1 \xmm1
 
133
        XMM_NUM aesdec_opd2 \xmm2
 
134
        PFX_OPD_SIZE
 
135
        PFX_REX aesdec_opd1 aesdec_opd2
 
136
        .byte 0x0f, 0x38, 0xde
 
137
        MODRM 0xc0 aesdec_opd1 aesdec_opd2
 
138
        .endm
 
139
 
 
140
        .macro AESDECLAST xmm1 xmm2
 
141
        XMM_NUM aesdeclast_opd1 \xmm1
 
142
        XMM_NUM aesdeclast_opd2 \xmm2
 
143
        PFX_OPD_SIZE
 
144
        PFX_REX aesdeclast_opd1 aesdeclast_opd2
 
145
        .byte 0x0f, 0x38, 0xdf
 
146
        MODRM 0xc0 aesdeclast_opd1 aesdeclast_opd2
 
147
        .endm
 
148
#endif
 
149
 
 
150
#endif