Hi misc,

the following code snipped is from sys/arch/amd64/stand/libsa/gidt.S

/* pass BIOS return values back to caller */
movl    %eax, 0xb*4(%esp)
movl    %ecx, 0xa*4(%esp)
movl    %edx, 0x9*4(%esp)
movb    %bh , 0xe*4(%esp)

/* clear NT flag in eflags */
/* Martin Fredriksson <mar...@gbg.netman.se> */
pushf
pop     %eax
and     $0xffffbfff, %eax
push    %eax
popf

/* save registers into save area */
movl    %eax, _C_LABEL(BIOS_regs)+BIOSR_AX
movl    %ecx, _C_LABEL(BIOS_regs)+BIOSR_CX
movl    %edx, _C_LABEL(BIOS_regs)+BIOSR_DX
movl    %ebp, _C_LABEL(BIOS_regs)+BIOSR_BP
movl    %esi, _C_LABEL(BIOS_regs)+BIOSR_SI
movl    %edi, _C_LABEL(BIOS_regs)+BIOSR_DI

These instructions are being executed after a BIOS interrupt. If i read
correctly, than (BIOS_regs)+BIOSR_AX contains the contents of the eflags
processor register and not of %eax. Is this intended or should it contain
the value of %eax?

Kind regards

Julius

Reply via email to