Fix implementation of AML BreakPoint operator (break to debugger).

The AML BreakPoint opcode will now cause a break into the AML debugger
if it is present/configured. This matches the expected behavior per
the ACPI specification. Previously, only a message was output.
This commit is contained in:
Robert Moore 2009-04-14 10:50:38 -07:00
parent 4012f44bbb
commit ef30c37591
3 changed files with 16 additions and 54 deletions

View File

@ -1551,12 +1551,20 @@ AcpiDsExecEndControlOp (
case AML_BREAK_POINT_OP:
/* Call up to the OS service layer to handle this */
/*
* Set the single-step flag. This will cause the debugger (if present)
* to break to the console within the AML debugger at the start of the
* next AML instruction.
*/
ACPI_DEBUGGER_EXEC (
AcpiGbl_CmSingleStep = TRUE);
ACPI_DEBUGGER_EXEC (
AcpiOsPrintf ("**break** Executed AML BreakPoint opcode\n"));
Status = AcpiOsSignal (ACPI_SIGNAL_BREAKPOINT, "Executed AML Breakpoint opcode");
/* If and when it returns, all done. */
/* Call to the OSL in case OS wants a piece of the action */
Status = AcpiOsSignal (ACPI_SIGNAL_BREAKPOINT,
"Executed AML Breakpoint opcode");
break;

View File

@ -812,36 +812,6 @@ AcpiOsExecute (
}
/******************************************************************************
*
* FUNCTION: AcpiOsBreakpoint
*
* PARAMETERS: Msg Message to print
*
* RETURN: Status
*
* DESCRIPTION: Print a message and break to the debugger.
*
*****************************************************************************/
ACPI_STATUS
AcpiOsBreakpoint (
char *Msg)
{
if (Msg)
{
AcpiOsPrintf ("AcpiOsBreakpoint: %s ****\n", Msg);
}
else
{
AcpiOsPrintf ("At AcpiOsBreakpoint ****\n");
}
return (AE_OK);
}
/******************************************************************************
*
* FUNCTION: AcpiOsStall
@ -1207,7 +1177,7 @@ AcpiOsGetThreadId (void)
*
* RETURN: Status
*
* DESCRIPTION: Miscellaneous functions
* DESCRIPTION: Miscellaneous functions. Example implementation only.
*
*****************************************************************************/
@ -1223,15 +1193,6 @@ AcpiOsSignal (
break;
case ACPI_SIGNAL_BREAKPOINT:
if (Info)
{
AcpiOsPrintf ("AcpiOsBreakpoint: %s ****\n", Info);
}
else
{
AcpiOsPrintf ("At AcpiOsBreakpoint ****\n");
}
break;
default:

View File

@ -1382,7 +1382,7 @@ AcpiOsWriteMemory (
*
* RETURN: Status
*
* DESCRIPTION: Miscellaneous functions
* DESCRIPTION: Miscellaneous functions. Example implementation only.
*
*****************************************************************************/
@ -1398,16 +1398,9 @@ AcpiOsSignal (
break;
case ACPI_SIGNAL_BREAKPOINT:
break;
if (Info)
{
AcpiOsPrintf ("AcpiOsBreakpoint: %s ****\n", Info);
}
else
{
AcpiOsPrintf ("At AcpiOsBreakpoint ****\n");
}
default:
break;
}