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 * Bug 278: 30 * 31 * SUMMARY: "Namespace location to be relative" functionality of Load operator issue 32 */ 33 Device (D278) 34 { 35 Name (SSDT, Buffer (0x5F) 36 { 37 /* 0000 */ 0x53, 0x53, 0x44, 0x54, 0x5F, 0x00, 0x00, 0x00, // SSDT_... 38 /* 0008 */ 0x02, 0x2D, 0x49, 0x6E, 0x74, 0x65, 0x6C, 0x00, // .-Intel. 39 /* 0010 */ 0x4D, 0x61, 0x6E, 0x79, 0x00, 0x00, 0x00, 0x00, // Many.... 40 /* 0018 */ 0x01, 0x00, 0x00, 0x00, 0x49, 0x4E, 0x54, 0x4C, // ....INTL 41 /* 0020 */ 0x15, 0x12, 0x06, 0x20, 0x10, 0x1F, 0x5C, 0x00, // ... ..\. 42 /* 0028 */ 0x08, 0x4E, 0x41, 0x42, 0x53, 0x0D, 0x61, 0x62, // .NABS.ab 43 /* 0030 */ 0x73, 0x6F, 0x6C, 0x75, 0x74, 0x65, 0x20, 0x6C, // solute l 44 /* 0038 */ 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, // ocation 45 /* 0040 */ 0x6F, 0x62, 0x6A, 0x00, 0x08, 0x4E, 0x43, 0x52, // obj..NCR 46 /* 0048 */ 0x52, 0x0D, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, // R.curren 47 /* 0050 */ 0x74, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, // t locati 48 /* 0058 */ 0x6F, 0x6E, 0x20, 0x6F, 0x62, 0x6A, 0x00 // on obj. 49 }) 50 OperationRegion (IST0, SystemMemory, 0x00, 0x5F) 51 Field (IST0, ByteAcc, NoLock, Preserve) 52 { 53 RFU0, 760 54 } 55 56 Name (DDBH, 0x00) 57 Method (TST0, 0, NotSerialized) 58 { 59 /* Check absence */ 60 61 If (CondRefOf (NABS, Local0)) 62 { 63 ERR (__METHOD__, ZFFF, __LINE__, 0x00, 0x00, "NABS", 0x01) 64 } 65 66 If (CondRefOf (NCRR, Local0)) 67 { 68 ERR (__METHOD__, ZFFF, __LINE__, 0x00, 0x00, "NCRR", 0x01) 69 } 70 71 RFU0 = SSDT /* \D278.SSDT */ 72 Load (RFU0, DDBH) /* \D278.DDBH */ 73 Debug = "SSDT loaded" 74 /* Check existence */ 75 76 If (CondRefOf (NABS, Local0)) 77 { 78 If (("absolute location obj" != DerefOf (Local0))) 79 { 80 ERR (__METHOD__, ZFFF, __LINE__, 0x00, 0x00, "absolute location NABS", 0x01) 81 } 82 } 83 Else 84 { 85 ERR (__METHOD__, ZFFF, __LINE__, 0x00, 0x00, "NABS", 0x00) 86 } 87 88 If (CondRefOf (NCRR, Local0)) 89 { 90 If (("current location obj" != DerefOf (Local0))) 91 { 92 ERR (__METHOD__, ZFFF, __LINE__, 0x00, 0x00, "current location NCRR", 0x01) 93 } 94 } 95 Else 96 { 97 ERR (__METHOD__, ZFFF, __LINE__, 0x00, 0x00, "NCRR", 0x00) 98 } 99 100 /* Check location */ 101 102 If (CondRefOf (\NABS, Local0)){} 103 Else 104 { 105 ERR (__METHOD__, ZFFF, __LINE__, 0x00, 0x00, "\\NABS", 0x00) 106 } 107 108 If (CondRefOf (\NCRR, Local0)) 109 { 110 ERR (__METHOD__, ZFFF, __LINE__, 0x00, 0x00, "\\NCRR", 0x01) 111 } 112 113 If (CondRefOf (\D278.NCRR, Local0)) 114 { 115 ERR (__METHOD__, ZFFF, __LINE__, 0x00, 0x00, "\\D278.NCRR", 0x01) 116 } 117 118 If (CondRefOf (\D278.TST0.NCRR, Local0)){} 119 Else 120 { 121 ERR (__METHOD__, ZFFF, __LINE__, 0x00, 0x00, "\\D278.TST0.NCRR", 0x00) 122 } 123 124 Unload (DDBH) 125 Debug = "SSDT unloaded" 126 /* Check absence */ 127 128 If (CondRefOf (NABS, Local0)) 129 { 130 ERR (__METHOD__, ZFFF, __LINE__, 0x00, 0x00, "NABS", 0x01) 131 } 132 133 If (CondRefOf (NCRR, Local0)) 134 { 135 ERR (__METHOD__, ZFFF, __LINE__, 0x00, 0x00, "NCRR", 0x01) 136 } 137 } 138 } 139 140 Method (M278, 0, NotSerialized) 141 { 142 \D278.TST0 () 143 } 144