On Friday, November 8, 2019, Theo de Raadt <[email protected]> wrote:

> Philip Guenther <[email protected]> wrote:
>
> > No, it should be the other way, moving the “clear NT flag” block down
> after
> > the “save registers into save area” block
>
> Ah.
>
> Index: arch/amd64/stand/libsa/gidt.S
> ===================================================================
> RCS file: /cvs/src/sys/arch/amd64/stand/libsa/gidt.S,v
> retrieving revision 1.11
> diff -u -p -u -r1.11 gidt.S
> --- arch/amd64/stand/libsa/gidt.S       27 Oct 2012 15:43:42 -0000
> 1.11
> +++ arch/amd64/stand/libsa/gidt.S       9 Nov 2019 06:50:57 -0000
> @@ -423,14 +423,6 @@ intno      = . - 1
>         movl    %edx, 0x9*4(%esp)
>         movb    %bh , 0xe*4(%esp)
>
> -       /* clear NT flag in eflags */
> -       /* Martin Fredriksson <[email protected]> */
> -       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
> @@ -438,6 +430,13 @@ intno      = . - 1
>         movl    %ebp, _C_LABEL(BIOS_regs)+BIOSR_BP
>         movl    %esi, _C_LABEL(BIOS_regs)+BIOSR_SI
>         movl    %edi, _C_LABEL(BIOS_regs)+BIOSR_DI
> +
> +       /* clear NT flag in eflags */
> +       pushf
> +       pop     %eax
> +       and     $0xffffbfff, %eax
> +       push    %eax
> +       popf
>
>         pop     %gs
>         pop     %fs
> Index: arch/i386/stand/libsa/gidt.S
> ===================================================================
> RCS file: /cvs/src/sys/arch/i386/stand/libsa/gidt.S,v
> retrieving revision 1.36
> diff -u -p -u -r1.36 gidt.S
> --- arch/i386/stand/libsa/gidt.S        31 Oct 2012 13:55:58 -0000
> 1.36
> +++ arch/i386/stand/libsa/gidt.S        9 Nov 2019 06:51:29 -0000
> @@ -426,14 +426,6 @@ intno      = . - 1
>         movl    %edx, 0x9*4(%esp)
>         movb    %bh , 0xe*4(%esp)
>
> -       /* clear NT flag in eflags */
> -       /* Martin Fredriksson <[email protected]> */
> -       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
> @@ -441,6 +433,13 @@ intno      = . - 1
>         movl    %ebp, _C_LABEL(BIOS_regs)+BIOSR_BP
>         movl    %esi, _C_LABEL(BIOS_regs)+BIOSR_SI
>         movl    %edi, _C_LABEL(BIOS_regs)+BIOSR_DI
> +
> +       /* clear NT flag in eflags */
> +       pushf
> +       pop     %eax
> +       and     $0xffffbfff, %eax
> +       push    %eax
> +       popf
>
>         pop     %gs
>         pop     %f
>

Ok guenther@

Reply via email to