[coreboot] x86 : Puzzles about init IDT

王翔 merle at tya.email
Wed Aug 16 05:17:00 CEST 2017


The source code may have a problem when the IDT is initialized. 
This code is located in `src/cpu/x86/16bit/entry16.inc`.
----------------------------------------------------------------------------------------------
	movw	%cs, %ax
	shlw	$4, %ax
	movw	$nullidt_offset, %bx
	subw	%ax, %bx
	lidt	        %cs:(%bx)     —> this  mybe lidtl
	movw	$gdtptr16_offset, %bx
	subw	%ax, %bx
	lgdtl	        %cs:(%bx)

---------------------------------------------------------------------------------------------- 
lidt only used for base 0-16M. 
But nullidt located in (4G-64k) - 4G space.
This instruct must be **lidtl**

Description of LIDT
IF Instruction is LIDT     THEN          IF OperandSize = 16               THEN                     IDTR(Limit) ← SRC[0:15];                     IDTR(Base) ← SRC[16:47] AND 00FFFFFFH;               ELSE IF 32-bit Operand Size                     THEN                          IDTR(Limit) ← SRC[0:15];                          IDTR(Base) ← SRC[16:47];                     FI;               ELSE IF 64-bit Operand Size (* In 64-Bit Mode *)                     THEN                          IDTR(Limit) ← SRC[0:15];                          IDTR(Base) ← SRC[16:79];                     FI;          FI;     ELSE (* Instruction is LGDT *)          IF OperandSize = 16               THEN                     GDTR(Limit) ← SRC[0:15];                     GDTR(Base) ← SRC[16:47] AND 00FFFFFFH;               ELSE IF 32-bit Operand Size                     THEN                          GDTR(Limit) ← SRC[0:15];                          GDTR(Base) ← SRC[16:47];                     FI;               ELSE IF 64-bit Operand Size (* In 64-Bit Mode *)                     THEN                          GDTR(Limit) ← SRC[0:15];                          GDTR(Base) ← SRC[16:79];                     FI;          FI; FI;






------------------



王翔

安全研究员

广州市腾御安信息科技有限公司





广州市天河区珠江新城华穗路406号保利克洛维二期中景A座1020-1024
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.coreboot.org/pipermail/coreboot/attachments/20170816/9eb9e19e/attachment.html>


More information about the coreboot mailing list