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
@@ -286,16 +286,23 @@ NoExtrPush:
mov rax, dr0
push rax
;; Clear Direction Flag
cld
sub rsp, 512
mov rdi, rsp
;; Clear the buffer
xor rax, rax
push rcx
mov rcx, 64 ;= 512 / 8
rep stosq
pop rcx
mov rdi, rsp
db 0fh, 0aeh, 00000111y ;fxsave [rdi]
;; save the exception data
push qword ptr [rbp + 16]
;; Clear Direction Flag
cld
; call the C interrupt process function
mov rdx, rsp ; Structure
mov r15, rcx ; save vector in r15