This is the right thing to do.

ok

On Fri, Mar 18, 2011 at 04:48:13PM -0600, Jordan Hargrave wrote:
> This patch changes the values of boolean comparisons from 0:1 to 0:-1 (from 
> ACPI Spec) in order to fix an AML issue on some Asus machines.
> Please test on other machines as well to verify that hardware 
> sensors/acpi/boot work properly.
> 
> Index: dsdt.c
> ===================================================================
> RCS file: /cvs/src/sys/dev/acpi/dsdt.c,v
> retrieving revision 1.181
> diff -u -p -b -r1.181 dsdt.c
> --- dsdt.c    2 Jan 2011 04:56:57 -0000       1.181
> +++ dsdt.c    18 Mar 2011 21:55:16 -0000
> @@ -1167,31 +1167,31 @@ aml_evalexpr(int64_t lhs, int64_t rhs, i
>  
>               /* Logical/Comparison */
>       case AMLOP_LAND:
> -             res = (lhs && rhs);
> +             res = -(lhs && rhs);
>               break;
>       case AMLOP_LOR:
> -             res = (lhs || rhs);
> +             res = -(lhs || rhs);
>               break;
>       case AMLOP_LNOT:
> -             res = (!lhs);
> +             res = -(!lhs);
>               break;
>       case AMLOP_LNOTEQUAL:
> -             res = (lhs != rhs);
> +             res = -(lhs != rhs);
>               break;
>       case AMLOP_LLESSEQUAL:
> -             res = (lhs <= rhs);
> +             res = -(lhs <= rhs);
>               break;
>       case AMLOP_LGREATEREQUAL:
> -             res = (lhs >= rhs);
> +             res = -(lhs >= rhs);
>               break;
>       case AMLOP_LEQUAL:
> -             res = (lhs == rhs);
> +             res = -(lhs == rhs);
>               break;
>       case AMLOP_LGREATER:
> -             res = (lhs > rhs);
> +             res = -(lhs > rhs);
>               break;
>       case AMLOP_LLESS:
> -             res = (lhs < rhs);
> +             res = -(lhs < rhs);
>               break;
>       }

Reply via email to