Use RLE (Run Length Encoding) to improve debugging performance.

DEBUG_AGENT_REVISION is DEBUG_AGENT_REVISION_03 to disable this feature and will be changed to DEBUG_AGENT_REVISION_04 when new version of HOST is released.
Reduce the stack usage by re-using the same buffer to send/receive packet.
Zero out the buffer before fxsave so that the reserved field in the buffer remains 0 for better RLE compression ratio.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
Reviewed-by: Jeff Fan <jeff.fan@intel.com>


git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16628 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
Ruiyu Ni
2015-01-20 08:46:31 +00:00
committed by niruiyu
parent 6a39a6a1a8
commit d9044ec555
5 changed files with 282 additions and 111 deletions

View File

@@ -1,6 +1,6 @@
;------------------------------------------------------------------------------
;
; Copyright (c) 2010 - 2013, Intel Corporation. All rights reserved.<BR>
; Copyright (c) 2010 - 2015, Intel Corporation. All rights reserved.<BR>
; This program and the accompanying materials
; are licensed and made available under the terms and conditions of the BSD License
; which accompanies this distribution. The full text of the license may be found at
@@ -302,17 +302,22 @@ NoExtrPush:
mov eax, dr0
push eax
;; FX_SAVE_STATE_IA32 FxSaveState;
sub esp, 512
mov edi, esp
db 0fh, 0aeh, 00000111y ;fxsave [edi]
;; save the exception data
push dword ptr [ebp + 8]
;; Clear Direction Flag
cld
;; FX_SAVE_STATE_IA32 FxSaveState;
sub esp, 512
mov edi, esp
;; Clear the buffer
xor eax, eax
mov ecx, 128 ;= 512 / 4
rep stosd
mov edi, esp
db 0fh, 0aeh, 00000111y ;fxsave [edi]
;; save the exception data
push dword ptr [ebp + 8]
; call the C interrupt process function
push esp ; Structure
push ebx ; vector
@@ -323,7 +328,7 @@ NoExtrPush:
add esp, 4
;; FX_SAVE_STATE_IA32 FxSaveState;
mov esi, esp
mov esi, esp
db 0fh, 0aeh, 00001110y ; fxrstor [esi]
add esp, 512