1in progress 2 3do these tests - enclose in method, pass device to method and check that 4really deal with objects of initial device Integer/package/buffer/string/... 5 6/* 7 8same as ns2 (and+ to cover all type Fields elements of Package /buffer/string) 9but pass that device/power/tz/... by argument. do for all types of combined 10objects: device/power/tz/... 11 12 13*/ 14Name(z159, 159) 15 16 17/* 18 * Check access to elements Package/Buffer/String and Buffer Field 19 * where the parent is an element of some complex object (Device). 20 */ 21 22Method(m500) 23{ 24 Name(ts, "m500") 25 Device(d000) 26 { 27 Name(p000, Package() {0xabcd0000, 0xabcd0001, 0xabcd0002}) 28 } 29 30 Method(m001, 2) 31 { 32 Store(0x11112222, Index(arg0, 0)) 33 } 34 35 m001(d000.p000, RefOf(d000.p000)) 36 37 Store(DerefOf(Index(d000.p000, 0)), Local0) 38 39 if (LNotEqual(Local0, 0x11112222)) { 40 err(ts, z159, 0x000, 0, 0, Local0, 0x11112222) 41 } 42 43 CH03(ts, z159, 0x100, 0, 0) 44} 45 46Method(m501) 47{ 48 Name(ts, "m501") 49 Device(d000) 50 { 51 Name(b000, Buffer() {0x10, 0x11, 0x12}) 52 } 53 Method(m001, 2) 54 { 55 Store(0x67, Index(arg0, 0)) 56 } 57 58 m001(d000.b000, RefOf(d000.b000)) 59 60 Store(DerefOf(Index(d000.b000, 0)), Local0) 61 62 if (LNotEqual(Local0, 0x67)) { 63 err(ts, z159, 0x001, 0, 0, Local0, 0x67) 64 } 65 66 CH03(ts, z159, 0x101, 0, 0) 67} 68 69Method(m502) 70{ 71 Name(ts, "m502") 72 Device(d000) 73 { 74 Name(s000, "qqqqqqqqqqqqqq") 75 } 76 Method(m001, 2) 77 { 78 Store(0x38, Index(arg0, 0)) 79 } 80 81 m001(d000.s000, RefOf(d000.s000)) 82 83 Store(DerefOf(Index(d000.s000, 0)), Local0) 84 85 if (LNotEqual(Local0, 0x38)) { 86 err(ts, z159, 0x002, 0, 0, Local0, 0x38) 87 } 88 89 CH03(ts, z159, 0x102, 0, 0) 90} 91 92/* 93 * Element of Package instead of i000 (in m001) 94 */ 95Method(m503, 1) 96{ 97 Name(ts, "m503") 98 Name(i001, 0) 99 Name(p000, Package() {1,2,3,4}) 100 Device(d000) 101 { 102 Name(pp00, Package() {0x11111111, 0x00000001, 0x22223333}) 103 } 104 105 CH03(ts, z159, 0x103, 0, 0) 106 107 Store(arg0, i001) 108 109 Method(m001) 110 { 111 Method(m002) 112 { 113 Method(m003) 114 { 115 Method(m004) 116 { 117 Method(m005) 118 { 119 Method(m006) 120 { 121 Method(m007) 122 { 123 Method(m008) 124 { 125 if (i001) 126 { 127 Store(p000, Index(\m503.d000.pp00, 1)) 128 } 129 Return (0) 130 } 131 Store(0x80000000, Index(\m503.d000.pp00, 1)) 132 Return (Add(DerefOf(Index(\m503.d000.pp00, 1)), m008())) 133 } 134 Store(0x07000000, Index(\m503.d000.pp00, 1)) 135 Return (Add(DerefOf(Index(\m503.d000.pp00, 1)), m007())) 136 } 137 Store(0x00600000, Index(\m503.d000.pp00, 1)) 138 Return (Add(DerefOf(Index(\m503.d000.pp00, 1)), m006())) 139 } 140 Store(0x00050000, Index(\m503.d000.pp00, 1)) 141 Return (Add(DerefOf(Index(\m503.d000.pp00, 1)), m005())) 142 } 143 Store(0x00004000, Index(\m503.d000.pp00, 1)) 144 Return (Add(DerefOf(Index(\m503.d000.pp00, 1)), m004())) 145 } 146 Store(0x00000300, Index(\m503.d000.pp00, 1)) 147 Return (Add(DerefOf(Index(\m503.d000.pp00, 1)), m003())) 148 } 149 Store(0x00000020, Index(^d000.pp00, 1)) 150 Return (Add(DerefOf(Index(^d000.pp00, 1)), m002())) 151 } 152 Store(Add(DerefOf(Index(d000.pp00, 1)), m001()), Local0) 153 154 if (LNotEqual(Local0, 0x87654321)) { 155 err(ts, z159, 0x003, 0, 0, Local0, 0x87654321) 156 } 157 158 Store(DerefOf(Index(d000.pp00, 1)), Local0) 159 160 if (LNotEqual(Local0, 0x80000000)) { 161 err(ts, z159, 0x004, 0, 0, Local0, 0x80000000) 162 } 163 164 CH03(ts, z159, 0x104, 0, 0) 165} 166 167/* 168 * Element of Package instead of i000 (in m002) 169 */ 170Method(m504) 171{ 172 Name(ts, "m504") 173 Name(i001, 0) 174 Device(d000) 175 { 176 Name(pp00, Package() {0x11111111, 0x00100000, 0x22223333}) 177 } 178 179 Method(m001) 180 { 181 if (LLess(i001, 100)) { 182 183 Store(DerefOf(Index(^d000.pp00, 1)), Local0) 184 Increment(Local0) 185 Store(Local0, Index(^d000.pp00, 1)) 186 Increment(i001) 187 Add(DerefOf(Index(^d000.pp00, 1)), m001(), Local0) 188 Return (Local0) 189 } 190 Return (0) 191 } 192 Store(Add(DerefOf(Index(d000.pp00, 1)), m001()), Local0) 193 194 if (LNotEqual(Local0, 0x065013BA)) { 195 err(ts, z159, 0x005, 0, 0, Local0, 0x065013BA) 196 } 197 198 Store(DerefOf(Index(d000.pp00, 1)), Local0) 199 200 if (LNotEqual(Local0, 0x00100064)) { 201 err(ts, z159, 0x006, 0, 0, Local0, 0x00100064) 202 } 203 204 CH03(ts, z159, 0x105, 0, 0) 205} 206 207/* 208 * Buffer Field instead of i000 (in m001) 209 */ 210Method(m505, 1) 211{ 212 Name(ts, "m505") 213 Name(i001, 0) 214 Name(p000, Package() {1,2,3,4}) 215 216 CH03(ts, z159, 0x200, 0, 0) 217 218 Device(d000) 219 { 220 Name(b000, Buffer(16) {}) 221 CreateField(b000, 5, 32, bf00) 222 } 223 224 CH03(ts, z159, 0x106, 0, 0) 225 226 if (0) { 227 CreateField(d000.b000, 5, 32, bf00) 228 } 229 230 Store(arg0, i001) 231 232 Method(m001) 233 { 234 Method(m002) 235 { 236 Method(m003) 237 { 238 Method(m004) 239 { 240 Method(m005) 241 { 242 Method(m006) 243 { 244 Method(m007) 245 { 246 Method(m008) 247 { 248 if (i001) 249 { 250 Store(p000, Index(\m505.d000.bf00, 1)) 251 } 252 Return (0) 253 } 254 Store(0x80000000, Index(\m505.d000.bf00, 1)) 255 Return (Add(DerefOf(Index(\m505.d000.bf00, 1)), m008())) 256 } 257 Store(0x07000000, Index(\m505.d000.bf00, 1)) 258 Return (Add(DerefOf(Index(\m505.d000.bf00, 1)), m007())) 259 } 260 Store(0x00600000, Index(\m505.d000.bf00, 1)) 261 Return (Add(DerefOf(Index(\m505.d000.bf00, 1)), m006())) 262 } 263 Store(0x00050000, Index(\m505.d000.bf00, 1)) 264 Return (Add(DerefOf(Index(\m505.d000.bf00, 1)), m005())) 265 } 266 Store(0x00004000, Index(\m505.d000.bf00, 1)) 267 Return (Add(DerefOf(Index(\m505.d000.bf00, 1)), m004())) 268 } 269 Store(0x00000300, Index(\m505.d000.bf00, 1)) 270 Return (Add(DerefOf(Index(\m505.d000.bf00, 1)), m003())) 271 } 272 Store(0x00000020, Index(^d000.bf00, 1)) 273 Return (Add(DerefOf(Index(^d000.bf00, 1)), m002())) 274 } 275 Store(Add(DerefOf(Index(d000.bf00, 1)), m001()), Local0) 276 277 if (LNotEqual(Local0, 0x87654321)) { 278 err(ts, z159, 0x007, 0, 0, Local0, 0x87654321) 279 } 280 281 Store(DerefOf(Index(d000.bf00, 1)), Local0) 282 283 if (LNotEqual(Local0, 0x80000000)) { 284 err(ts, z159, 0x008, 0, 0, Local0, 0x80000000) 285 } 286 287 CH03(ts, z159, 0x107, 0, 0) 288} 289 290 291Method(n005) 292{ 293if (1) { 294 SRMT("m500") 295 m500() 296 SRMT("m501") 297 m501() 298 SRMT("m502") 299 m502() 300 SRMT("m503-0") 301 m503(0) 302 SRMT("m503-1") 303 if (y200) { 304 m503(1) 305 } else { 306 BLCK() 307 } 308 SRMT("m504") 309 m504() 310 SRMT("m505-0") 311 if (y216) { 312 m505(0) 313 } else { 314 BLCK() 315 } 316 SRMT("m505-1") 317 if (LAnd(y200, y216)) { 318 m505(1) 319 } else { 320 BLCK() 321 } 322} else { 323 SRMT("m505-0") 324 m505(0) 325} 326} 327 328