1 /* 2 * Some or all of this work - Copyright (c) 2006 - 2021, Intel Corp. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without modification, 6 * are permitted provided that the following conditions are met: 7 * 8 * Redistributions of source code must retain the above copyright notice, 9 * this list of conditions and the following disclaimer. 10 * Redistributions in binary form must reproduce the above copyright notice, 11 * this list of conditions and the following disclaimer in the documentation 12 * and/or other materials provided with the distribution. 13 * Neither the name of Intel Corporation nor the names of its contributors 14 * may be used to endorse or promote products derived from this software 15 * without specific prior written permission. 16 * 17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 25 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 /* 29 * Data type conversion and manipulation 30 */ 31 /* Convert data to integer */ 32 Name (Z047, 0x2F) 33 /* Integer */ 34 /* 32-bit */ 35 Name (P300, Package (0x06) 36 { 37 0x00, 38 0x81, 39 0x8232, 40 0x76543201, 41 0xF89ABCDE, 42 0xFFFFFFFF 43 }) 44 /* 64-bit */ 45 46 Name (P302, Package (0x05) 47 { 48 0x0000008123456789, 49 0x00008CDAE2376890, 50 0x76543201F89ABCDE, 51 0xF89ABCDE76543201, 52 0xFFFFFFFFFFFFFFFF 53 }) 54 /* Hexadecimal numeric String */ 55 /* 32-bit */ 56 Name (P304, Package (0x20) 57 { 58 "0x0", /* 0 */ 59 "0x00", 60 "0x1", 61 "0x83", 62 "0x456", 63 "0x8232", 64 "0xbcdef", 65 "0x123456", 66 "0x789abcd", 67 "0xffffffff", 68 "0x01234567", /* 10 */ 69 "0X12345678", 70 "0x23456789", 71 "0x3456789a", 72 "0x456789ab", 73 "0x56789abc", 74 "0x6789abcd", 75 "0x789abcde", 76 "0x89abcdef", 77 "0x9abcdefA", 78 "0xabcdefAB", /* 20 */ 79 "0xbcdefABC", 80 "0xcdefABCD", 81 "0xdefABCDE", 82 "0xefABCDEF", 83 "0xfABCDEF0", 84 "0xABCDEF01", 85 "0xBCDEF012", 86 "0xCDEF0123", 87 "0xDEF01234", 88 "0xEF012345", /* 30 */ 89 "0xF0123456" 90 }) 91 Name (P305, Package (0x20) 92 { 93 0x00, 94 0x00, 95 0x01, 96 0x83, 97 0x0456, 98 0x8232, 99 0x000BCDEF, 100 0x00123456, 101 0x0789ABCD, 102 0xFFFFFFFF, 103 0x01234567, 104 0x12345678, 105 0x23456789, 106 0x3456789A, 107 0x456789AB, 108 0x56789ABC, 109 0x6789ABCD, 110 0x789ABCDE, 111 0x89ABCDEF, 112 0x9ABCDEFA, 113 0xABCDEFAB, 114 0xBCDEFABC, 115 0xCDEFABCD, 116 0xDEFABCDE, 117 0xEFABCDEF, 118 0xFABCDEF0, 119 0xABCDEF01, 120 0xBCDEF012, 121 0xCDEF0123, 122 0xDEF01234, 123 0xEF012345, 124 0xF0123456 125 }) 126 /* 64-bit */ 127 128 Name (P306, Package (0x20) 129 { 130 "0x123456789", /* 0 */ 131 "0x8123456789", 132 "0xabcdef01234", 133 "0x876543210abc", 134 "0x1234567abcdef", 135 "0x8234567abcdef1", 136 "0x6789abcdef01234", 137 "0x76543201f89abcde", 138 "0xf89abcde76543201", 139 "0xffffffffffffffff", 140 "0X0123456789abcdef", /* 10 */ 141 "0x123456789abcdefA", 142 "0x23456789abcdefAB", 143 "0x3456789abcdefABC", 144 "0x456789abcdefABCD", 145 "0x56789abcdefABCDE", 146 "0x6789abcdefABCDEF", 147 "0x789abcdefABCDEF0", 148 "0x89abcdefABCDEF01", 149 "0x9abcdefABCDEF012", 150 "0xabcdefABCDEF0123", /* 20 */ 151 "0xbcdefABCDEF01234", 152 "0xcdefABCDEF012345", 153 "0xdefABCDEF0123456", 154 "0xefABCDEF01234567", 155 "0xfABCDEF012345678", 156 "0xABCDEF0123456789", 157 "0xBCDEF0123456789a", 158 "0xCDEF0123456789ab", 159 "0xDEF0123456789abc", 160 "0xEF0123456789abcd", /* 30 */ 161 "0xF0123456789abcde" 162 }) 163 Name (P307, Package (0x20) 164 { 165 0x0000000123456789, 166 0x0000008123456789, 167 0x00000ABCDEF01234, 168 0x0000876543210ABC, 169 0x0001234567ABCDEF, 170 0x008234567ABCDEF1, 171 0x06789ABCDEF01234, 172 0x76543201F89ABCDE, 173 0xF89ABCDE76543201, 174 0xFFFFFFFFFFFFFFFF, 175 0x0123456789ABCDEF, 176 0x123456789ABCDEFA, 177 0x23456789ABCDEFAB, 178 0x3456789ABCDEFABC, 179 0x456789ABCDEFABCD, 180 0x56789ABCDEFABCDE, 181 0x6789ABCDEFABCDEF, 182 0x789ABCDEFABCDEF0, 183 0x89ABCDEFABCDEF01, 184 0x9ABCDEFABCDEF012, 185 0xABCDEFABCDEF0123, 186 0xBCDEFABCDEF01234, 187 0xCDEFABCDEF012345, 188 0xDEFABCDEF0123456, 189 0xEFABCDEF01234567, 190 0xFABCDEF012345678, 191 0xABCDEF0123456789, 192 0xBCDEF0123456789A, 193 0xCDEF0123456789AB, 194 0xDEF0123456789ABC, 195 0xEF0123456789ABCD, 196 0xF0123456789ABCDE 197 }) 198 /* Decimal numeric String */ 199 /* 32-bit */ 200 Name (P308, Package (0x15) 201 { 202 "0", 203 "12", 204 "345", 205 "6789", 206 "12345", 207 "678901", 208 "2345678", 209 "90123456", 210 "789012345", 211 "4294967295", /* == "0xffffffff" */ 212 "4294967295", /* == "0xffffffff" */ 213 "0123456789", 214 "1234567890", 215 "2345678901", 216 "3456789012", 217 "1567890123", 218 "2678901234", 219 "3789012345", 220 "1890123456", 221 "2901234567", 222 "3012345678" 223 }) 224 Name (P309, Package (0x15) 225 { 226 0x00, 227 0x0C, 228 0x0159, 229 0x1A85, 230 0x3039, 231 0x000A5BF5, 232 0x0023CACE, 233 0x055F2CC0, 234 0x2F075F79, 235 0xFFFFFFFF, 236 0xFFFFFFFF, 237 0x075BCD15, 238 0x499602D2, 239 0x8BD03835, 240 0xCE0A6A14, 241 0x5D741ACB, 242 0x9FACC9F2, 243 0xE1D7BD79, 244 0x70A8FEC0, 245 0xACED5387, 246 0xB38CBF4E 247 }) 248 /* 64-bit */ 249 250 Name (P310, Package (0x15) 251 { 252 "30123456790", 253 "123456789012", 254 "3456789012345", 255 "26789012346789", 256 "123456789012345", 257 "3789012345678901", 258 "23456789012345678", 259 "301234567890123456", 260 "1890123456789012345", 261 "18446744073709551615", /* == "0xffffffffffffffff" */ 262 "18446744073709551615", /* == "0xffffffffffffffff" */ 263 "01234567890123456789", 264 "12345678901234567890", 265 "13456789012345678901", 266 "14567890123456789012", 267 "15678901231567890123", 268 "16789012342678901234", 269 "17890123453789012345", 270 "18301234561890123456", 271 "18012345672901234567", 272 "10123456783012345678" 273 }) 274 Name (P311, Package (0x15) 275 { 276 0x00000007037F7916, 277 0x0000001CBE991A14, 278 0x00000324D8AE5F79, 279 0x0000185D4D9097A5, 280 0x00007048860DDF79, 281 0x000D76162EE9EC35, 282 0x005355D348A6F34E, 283 0x042E333E5528BAC0, 284 0x1A3B1145078ADF79, 285 0xFFFFFFFFFFFFFFFF, 286 0xFFFFFFFFFFFFFFFF, 287 0x112210F47DE98115, 288 0xAB54A98CEB1F0AD2, 289 0xBAC01E4F423E6C35, 290 0xCA2B8AE21F903A14, 291 0xD996A5998809E6CB, 292 0xE8FE8DC60F0651F2, 293 0xF8467C7ECAFA8179, 294 0xFDFB0BDEB48FFEC0, 295 0xF9F8B4F4BCD28F87, 296 0x8C7DBE4ECA78374E 297 }) 298 /* Buffer */ 299 /* 32-bit */ 300 Name (P312, Package (0x05) 301 { 302 /* buffer, 32-bit integer */ 303 304 Buffer (0x01) 305 { 306 0x81 // . 307 }, 308 309 Buffer (0x02) 310 { 311 0x82, 0x83 // .. 312 }, 313 314 Buffer (0x03) 315 { 316 0x84, 0x85, 0x86 // ... 317 }, 318 319 Buffer (0x04) 320 { 321 0x87, 0x88, 0x89, 0x8A // .... 322 }, 323 324 /* for 32-bit mode only */ 325 326 Buffer (0x05) 327 { 328 0x8B, 0x8C, 0x8D, 0x8E, 0x8F // ..... 329 } 330 }) 331 Name (P313, Package (0x05) 332 { 333 0x81, 334 0x8382, 335 0x00868584, 336 0x8A898887, 337 0x8E8D8C8B 338 }) 339 /* 64-bit */ 340 341 Name (P314, Package (0x05) 342 { 343 Buffer (0x05) 344 { 345 0x85, 0x84, 0x83, 0x82, 0x81 // ..... 346 }, 347 348 Buffer (0x06) 349 { 350 0x8B, 0x8A, 0x89, 0x88, 0x87, 0x86 // ...... 351 }, 352 353 Buffer (0x07) 354 { 355 0x82, 0x81, 0x80, 0x8F, 0x8E, 0x8D, 0x8C // ....... 356 }, 357 358 Buffer (0x08) 359 { 360 0x8A, 0x89, 0x88, 0x87, 0x86, 0x85, 0x84, 0x83 // ........ 361 }, 362 363 Buffer (0x09) 364 { 365 /* 0000 */ 0x83, 0x82, 0x81, 0x80, 0x8F, 0x8E, 0x8D, 0x8C, // ........ 366 /* 0008 */ 0x8B // . 367 } 368 }) 369 Name (P315, Package (0x05) 370 { 371 /* buffer, 32-bit integer */ 372 373 0x0000008182838485, 374 0x0000868788898A8B, 375 0x008C8D8E8F808182, 376 0x838485868788898A, 377 0x8C8D8E8F80818283 378 }) 379 /* Run-method */ 380 381 Method (TOI0, 0, Serialized) 382 { 383 Debug = "TEST: TOI0, Convert data to integer" 384 /* From integer */ 385 386 If ((F64 == 0x01)) 387 { 388 M302 (__METHOD__, 0x06, "p300", P300, P300, 0x00) 389 M302 (__METHOD__, 0x05, "p302", P302, P302, 0x00) 390 } 391 Else 392 { 393 M302 (__METHOD__, 0x06, "p300", P300, P300, 0x00) 394 } 395 396 /* From hexadecimal numeric string */ 397 398 If ((F64 == 0x01)) 399 { 400 M302 (__METHOD__, 0x20, "p304", P304, P305, 0x00) 401 M302 (__METHOD__, 0x20, "p306", P306, P307, 0x00) 402 } 403 Else 404 { 405 M302 (__METHOD__, 0x20, "p304", P304, P305, 0x00) 406 } 407 408 /* From decimal numeric string */ 409 410 If ((F64 == 0x01)) 411 { 412 M302 (__METHOD__, 0x15, "p308", P308, P309, 0x00) 413 M302 (__METHOD__, 0x15, "p310", P310, P311, 0x00) 414 } 415 Else 416 { 417 M302 (__METHOD__, 0x15, "p308", P308, P309, 0x00) 418 } 419 420 /* From buffer */ 421 422 If ((F64 == 0x01)) 423 { 424 M302 (__METHOD__, 0x04, "p312", P312, P313, 0x00) 425 M302 (__METHOD__, 0x05, "p314", P314, P315, 0x00) 426 } 427 Else 428 { 429 M302 (__METHOD__, 0x05, "p312", P312, P313, 0x00) 430 } 431 432 /* Suppression of zeroes */ 433 434 If (Y602) 435 { 436 CH03 (__METHOD__, Z047, __LINE__, 0x00, 0x00) 437 Local0 = "0x0123456789abcdefa" 438 ToInteger (Local0, Local2) 439 CH04 (__METHOD__, 0x00, 0x22, Z047, __LINE__, 0x00, 0x00) 440 CH03 (__METHOD__, Z047, __LINE__, 0x00, 0x00) 441 Local0 = "0x000123456789abcdefa" 442 ToInteger (Local0, Local2) 443 CH04 (__METHOD__, 0x00, 0x22, Z047, __LINE__, 0x00, 0x00) 444 } 445 Else 446 { 447 Local0 = "0x0123456789abcdefa" 448 Local1 = 0x123456789ABCDEFA 449 ToInteger (Local0, Local2) 450 If ((Local2 != Local1)) 451 { 452 ERR (__METHOD__, Z047, __LINE__, 0x00, 0x00, Local0, 0x00) 453 } 454 455 Local0 = "0x000123456789abcdefa" 456 ToInteger (Local0, Local2) 457 If ((Local2 != Local1)) 458 { 459 ERR (__METHOD__, Z047, __LINE__, 0x00, 0x00, Local0, 0x00) 460 } 461 } 462 } 463