|
82 | 82 |
|
83 | 83 | #define __lhbrx(base,index) \ |
84 | 84 | ({ register u16 res; \ |
85 | | - __asm__ __volatile__ ("lhbrx %0,%1,%2" : "=r"(res) : "b%"(index), "r"(base) : "memory"); \ |
| 85 | + __asm__ __volatile__ ("lhbrx %0,%1,%2" : "=r"(res) : "Ob"(index), "r"(base) : "memory"); \ |
86 | 86 | res; }) |
87 | 87 |
|
88 | 88 | #define __lwbrx(base,index) \ |
89 | 89 | ({ register u32 res; \ |
90 | | - __asm__ __volatile__ ("lwbrx %0,%1,%2" : "=r"(res) : "b%"(index), "r"(base) : "memory"); \ |
| 90 | + __asm__ __volatile__ ("lwbrx %0,%1,%2" : "=r"(res) : "Ob"(index), "r"(base) : "memory"); \ |
| 91 | + res; }) |
| 92 | + |
| 93 | +#define __lswi(base,bytes) \ |
| 94 | +({ register u32 res; \ |
| 95 | + __asm__ __volatile__ ("lswi %0,%P1,%2" : "=&b"(res) : "Q"(*(u32*)(base)), "i"(bytes)); \ |
| 96 | + res; }) |
| 97 | + |
| 98 | +#define __lsdi(base,bytes) \ |
| 99 | +({ register u64 res; \ |
| 100 | + __asm__ __volatile__ ("lswi %0,%P1,%2" : "=&b"(res) : "Q"(*(u64*)(base)), "i"(bytes)); \ |
91 | 101 | res; }) |
92 | 102 |
|
93 | 103 | #define __lswx(base,bytes) \ |
94 | 104 | ({ register u32 res; \ |
95 | 105 | __asm__ __volatile__ ("mtxer %2; lswx %0,%y1" : "=&b"(res) : "Z"(*(u32*)(base)), "r"(bytes) : "xer"); \ |
96 | 106 | res; }) |
97 | 107 |
|
| 108 | +#define __lsdx(base,bytes) \ |
| 109 | +({ register u64 res; \ |
| 110 | + __asm__ __volatile__ ("mtxer %2; lswx %0,%y1" : "=&b"(res) : "Z"(*(u64*)(base)), "r"(bytes) : "xer"); \ |
| 111 | + res; }) |
| 112 | + |
98 | 113 | #define __sthbrx(base,index,value) \ |
99 | | - __asm__ __volatile__ ("sthbrx %0,%1,%2" : : "r"(value), "b%"(index), "r"(base) : "memory") |
| 114 | + __asm__ __volatile__ ("sthbrx %0,%1,%2" : : "r"((u16)(value)), "Ob"(index), "r"(base) : "memory") |
100 | 115 |
|
101 | 116 | #define __stwbrx(base,index,value) \ |
102 | | - __asm__ __volatile__ ("stwbrx %0,%1,%2" : : "r"(value), "b%"(index), "r"(base) : "memory") |
| 117 | + __asm__ __volatile__ ("stwbrx %0,%1,%2" : : "r"((u32)(value)), "Ob"(index), "r"(base) : "memory") |
| 118 | + |
| 119 | +#define __stswi(base,bytes,value) \ |
| 120 | + __asm__ __volatile__ ("stswi %1,%P0,%2" : "=Q"(*(u32*)(base)) : "r"((u32)(value)), "i"(bytes)); |
| 121 | + |
| 122 | +#define __stsdi(base,bytes,value) \ |
| 123 | + __asm__ __volatile__ ("stswi %1,%P0,%2" : "=Q"(*(u64*)(base)) : "r"((u64)(value)), "i"(bytes)); |
103 | 124 |
|
104 | 125 | #define __stswx(base,bytes,value) \ |
105 | | - __asm__ __volatile__ ("mtxer %2; stswx %1,%y0" : "=Z"(*(u32*)(base)) : "r"(value), "r"(bytes) : "xer"); |
| 126 | + __asm__ __volatile__ ("mtxer %2; stswx %1,%y0" : "=Z"(*(u32*)(base)) : "r"((u32)(value)), "r"(bytes) : "xer"); |
| 127 | + |
| 128 | +#define __stsdx(base,bytes,value) \ |
| 129 | + __asm__ __volatile__ ("mtxer %2; stswx %1,%y0" : "=Z"(*(u64*)(base)) : "r"((u64)(value)), "r"(bytes) : "xer"); |
106 | 130 |
|
107 | 131 | #define _CPU_MSR_GET( _msr_value ) \ |
108 | 132 | do { \ |
|
0 commit comments