123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- /* 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)
- }
|