Loading...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | /* SPDX-License-Identifier: GPL-2.0+ */ /* * Copyright (C) 2008 Advanced Micro Devices, Inc. * Copyright (C) 2016 Bin Meng <bmeng.cn@gmail.com> * * Modified from coreboot src/arch/x86/acpi/globutil.asl */ Method(MIN, 2) { If (LLess(Arg0, Arg1)) { Return (Arg0) } Else { Return (Arg1) } } Method(SLEN, 1) { Store(Arg0, Local0) Return (Sizeof(Local0)) } Method(S2BF, 1, Serialized) { Add(SLEN(Arg0), One, Local0) Name(BUFF, Buffer(Local0) {}) Store(Arg0, BUFF) Return (BUFF) } /* * SCMP - Strong string compare * * Checks both length and content */ Method(SCMP, 2) { Store(S2BF(Arg0), Local0) Store(S2BF(Arg1), Local1) Store(Zero, Local4) Store(SLEN(Arg0), Local5) Store(SLEN(Arg1), Local6) Store(MIN(Local5, Local6), Local7) While (LLess(Local4, Local7)) { Store(Derefof(Index(Local0, Local4)), Local2) Store(Derefof(Index(Local1, Local4)), Local3) If (LGreater(Local2, Local3)) { Return (One) } Else { If (LLess(Local2, Local3)) { Return (Ones) } } Increment(Local4) } If (LLess(Local4, Local5)) { Return (One) } Else { If (LLess(Local4, Local6)) { Return (Ones) } Else { Return (Zero) } } } /* * WCMP - Weak string compare * * Checks to find Arg1 at beginning of Arg0. * Fails if length(Arg0) < length(Arg1). * Returns 0 on fail, 1 on pass. */ Method(WCMP, 2) { Store(S2BF(Arg0), Local0) Store(S2BF(Arg1), Local1) If (LLess(SLEN(Arg0), SLEN(Arg1))) { Return (Zero) } Store(Zero, Local2) Store(SLEN(Arg1), Local3) While (LLess(Local2, Local3)) { If (LNotEqual(Derefof(Index(Local0, Local2)), Derefof(Index(Local1, Local2)))) { Return (Zero) } Increment(Local2) } Return (One) } /* * I2BM - Returns Bit Map * * Arg0 = IRQ Number (0-15) */ Method(I2BM, 1) { Store(0, Local0) If (LNotEqual(Arg0, 0)) { Store(1, Local1) ShiftLeft(Local1, Arg0, Local0) } Return (Local0) } |