summaryrefslogtreecommitdiffstats
path: root/sys/contrib/dev/acpica/compiler/prscan.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/contrib/dev/acpica/compiler/prscan.c')
-rw-r--r--sys/contrib/dev/acpica/compiler/prscan.c46
1 files changed, 36 insertions, 10 deletions
diff --git a/sys/contrib/dev/acpica/compiler/prscan.c b/sys/contrib/dev/acpica/compiler/prscan.c
index 0d44d6a..dad91bd 100644
--- a/sys/contrib/dev/acpica/compiler/prscan.c
+++ b/sys/contrib/dev/acpica/compiler/prscan.c
@@ -477,6 +477,7 @@ PrDoDirective (
switch (Directive)
{
case PR_DIRECTIVE_ELIF:
+
*IgnoringThisCodeBlock = !(*IgnoringThisCodeBlock);
if (*IgnoringThisCodeBlock == TRUE)
{
@@ -493,10 +494,12 @@ PrDoDirective (
break;
case PR_DIRECTIVE_ELSE:
+
*IgnoringThisCodeBlock = !(*IgnoringThisCodeBlock);
return;
case PR_DIRECTIVE_ENDIF:
+
*IgnoringThisCodeBlock = FALSE;
Gbl_IfDepth--;
if (Gbl_IfDepth < 0)
@@ -508,6 +511,7 @@ PrDoDirective (
return;
default:
+
break;
}
@@ -590,6 +594,7 @@ PrDoDirective (
break;
case PR_DIRECTIVE_ERROR:
+
/* TBD compiler should abort */
/* Note: No macro expansion */
@@ -598,6 +603,7 @@ PrDoDirective (
break;
case PR_DIRECTIVE_IF:
+
TokenOffset = Token - Gbl_MainTokenBuffer;
/* Need to expand #define macros in the expression string first */
@@ -623,6 +629,7 @@ PrDoDirective (
break;
case PR_DIRECTIVE_IFDEF:
+
if (!PrMatchDefine (Token))
{
*IgnoringThisCodeBlock = TRUE;
@@ -635,6 +642,7 @@ PrDoDirective (
break;
case PR_DIRECTIVE_IFNDEF:
+
if (PrMatchDefine (Token))
{
*IgnoringThisCodeBlock = TRUE;
@@ -647,6 +655,7 @@ PrDoDirective (
break;
case PR_DIRECTIVE_INCLUDE:
+
Token = PrGetNextToken (NULL, " \"<>", Next);
if (!Token)
{
@@ -661,6 +670,7 @@ PrDoDirective (
break;
case PR_DIRECTIVE_LINE:
+
TokenOffset = Token - Gbl_MainTokenBuffer;
Status = PrResolveIntegerExpression (
@@ -686,26 +696,40 @@ PrDoDirective (
break;
case PR_DIRECTIVE_PRAGMA:
- /* Only "#pragma message" supported at this time */
- if (strcmp (Token, "message"))
+ if (!strcmp (Token, "disable"))
{
- PrError (ASL_ERROR, ASL_MSG_UNKNOWN_PRAGMA,
- THIS_TOKEN_OFFSET (Token));
- return;
+ Token = PrGetNextToken (NULL, PR_TOKEN_SEPARATORS, Next);
+ if (!Token)
+ {
+ goto SyntaxError;
+ }
+
+ TokenOffset = Token - Gbl_MainTokenBuffer;
+ AslDisableException (&Gbl_CurrentLineBuffer[TokenOffset]);
}
+ else if (!strcmp (Token, "message"))
+ {
+ Token = PrGetNextToken (NULL, PR_TOKEN_SEPARATORS, Next);
+ if (!Token)
+ {
+ goto SyntaxError;
+ }
- Token = PrGetNextToken (NULL, PR_TOKEN_SEPARATORS, Next);
- if (!Token)
+ TokenOffset = Token - Gbl_MainTokenBuffer;
+ AcpiOsPrintf ("%s\n", &Gbl_CurrentLineBuffer[TokenOffset]);
+ }
+ else
{
- goto SyntaxError;
+ PrError (ASL_ERROR, ASL_MSG_UNKNOWN_PRAGMA,
+ THIS_TOKEN_OFFSET (Token));
+ return;
}
- TokenOffset = Token - Gbl_MainTokenBuffer;
- AcpiOsPrintf ("%s\n", &Gbl_CurrentLineBuffer[TokenOffset]);
break;
case PR_DIRECTIVE_UNDEF:
+
DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
"#undef: %s\n", Gbl_CurrentLineNumber, Token);
@@ -713,11 +737,13 @@ PrDoDirective (
break;
case PR_DIRECTIVE_WARNING:
+
PrError (ASL_WARNING, ASL_MSG_ERROR_DIRECTIVE,
THIS_TOKEN_OFFSET (Token));
break;
default:
+
/* Should never get here */
DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
"Unrecognized directive: %u\n",
OpenPOWER on IntegriCloud