void LsFlushListingBuffer ( UINT32 FileId) { UINT32 i; if (Gbl_CurrentHexColumn == 0) { return; } /* Write the hex bytes */ switch (FileId) { case ASL_FILE_LISTING_OUTPUT: for (i = 0; i < Gbl_CurrentHexColumn; i++) { FlPrintFile (FileId, "%2.2X ", Gbl_AmlBuffer[i]); } for (i = 0; i < ((HEX_LISTING_LINE_SIZE - Gbl_CurrentHexColumn) * 3); i++) { FlWriteFile (FileId, ".", 1); } /* Write the ASCII character associated with each of the bytes */ LsDumpAscii (FileId, Gbl_CurrentHexColumn, Gbl_AmlBuffer); break; case ASL_FILE_ASM_SOURCE_OUTPUT: for (i = 0; i < Gbl_CurrentHexColumn; i++) { if (i > 0) { FlPrintFile (FileId, ","); } FlPrintFile (FileId, "0%2.2Xh", Gbl_AmlBuffer[i]); } for (i = 0; i < ((HEX_LISTING_LINE_SIZE - Gbl_CurrentHexColumn) * 5); i++) { FlWriteFile (FileId, " ", 1); } FlPrintFile (FileId, " ;%8.8X", Gbl_CurrentAmlOffset - HEX_LISTING_LINE_SIZE); /* Write the ASCII character associated with each of the bytes */ LsDumpAscii (FileId, Gbl_CurrentHexColumn, Gbl_AmlBuffer); break; case ASL_FILE_C_SOURCE_OUTPUT: for (i = 0; i < Gbl_CurrentHexColumn; i++) { FlPrintFile (FileId, "0x%2.2X,", Gbl_AmlBuffer[i]); } /* Pad hex output with spaces if line is shorter than max line size */ for (i = 0; i < ((HEX_LISTING_LINE_SIZE - Gbl_CurrentHexColumn) * 5); i++) { FlWriteFile (FileId, " ", 1); } /* AML offset for the start of the line */ FlPrintFile (FileId, " /* %8.8X", Gbl_CurrentAmlOffset - Gbl_CurrentHexColumn); /* Write the ASCII character associated with each of the bytes */ LsDumpAsciiInComment (FileId, Gbl_CurrentHexColumn, Gbl_AmlBuffer); FlPrintFile (FileId, " */"); break; default: /* No other types supported */ return; } FlPrintFile (FileId, "\n"); Gbl_CurrentHexColumn = 0; Gbl_HexBytesWereWritten = TRUE; }
static void LsDoHexOutputAsm ( void) { UINT32 j; UINT8 FileByte[HEX_TABLE_LINE_SIZE]; UINT8 Buffer[4]; UINT32 Offset = 0; BOOLEAN DoComma = FALSE; FlPrintFile (ASL_FILE_HEX_OUTPUT, "; Assembly code source output\n;\n"); /* Start at the beginning of the AML file */ FlSeekFile (ASL_FILE_AML_OUTPUT, 0); /* Process all AML bytes in the AML file */ j = 0; while (FlReadFile (ASL_FILE_AML_OUTPUT, &FileByte[j], 1) == AE_OK) { if (j == 0) { FlPrintFile (ASL_FILE_HEX_OUTPUT, " db "); } else if (DoComma) { FlPrintFile (ASL_FILE_HEX_OUTPUT, ","); DoComma = FALSE; } /* Convert each AML byte to hex */ UtConvertByteToAsmHex (FileByte[j], Buffer); FlWriteFile (ASL_FILE_HEX_OUTPUT, Buffer, 4); /* An occasional linefeed improves readability */ Offset++; j++; if (j >= HEX_TABLE_LINE_SIZE) { FlPrintFile (ASL_FILE_HEX_OUTPUT, " ;%8.8X", Offset - HEX_TABLE_LINE_SIZE); /* Write the ASCII character associated with each of the bytes */ LsDumpAscii (ASL_FILE_HEX_OUTPUT, HEX_TABLE_LINE_SIZE, FileByte); FlPrintFile (ASL_FILE_HEX_OUTPUT, "\n"); j = 0; } else { DoComma = TRUE; } } FlPrintFile (ASL_FILE_HEX_OUTPUT, "\n"); FlCloseFile (ASL_FILE_HEX_OUTPUT); }