From 1c7865d7bb203128dfaa53b3fabe816f5be7e8b8 Mon Sep 17 00:00:00 2001 From: Taylor R Campbell Date: Thu, 7 Oct 2010 05:59:36 +0000 Subject: [PATCH] Fix comments in i386.m4 and x86-64.m4 about executable stack. --- src/microcode/cmpauxmd/i386.m4 | 55 ++++++++++++++++++++++---------- src/microcode/cmpauxmd/x86-64.m4 | 4 +-- 2 files changed, 39 insertions(+), 20 deletions(-) diff --git a/src/microcode/cmpauxmd/i386.m4 b/src/microcode/cmpauxmd/i386.m4 index a69527e18..7f3165c03 100644 --- a/src/microcode/cmpauxmd/i386.m4 +++ b/src/microcode/cmpauxmd/i386.m4 @@ -1207,35 +1207,56 @@ asm_fixnum_rsh_overflow_negative: OP(mov,l) TW(IMM_DETAGGED_FIXNUM_MINUS_ONE,REG(eax)) ret -define_c_label(i387_read_fp_control_word) -IF387(` OP(cmp,l) TW(IMM(0),ABS(EVR(i387_presence))) - je i387_read_fp_control_word_lose - enter IMM(4),IMM(0) +define_c_label(sse_read_mxcsr) +IFSSE(` enter IMM(4),IMM(0) + stmxcsr IND(REG(esp)) + OP(mov,l) TW(IND(REG(esp)),REG(eax)) + leave') + ret + +define_c_label(sse_write_mxcsr) +IFSSE(` ldmxcsr LOF(4,REG(esp))') + ret + +define_c_label(x87_clear_exceptions) +IF387(` fnclex') + ret + +define_c_label(x87_trap_exceptions) +IF387(` fwait') + ret + +define_c_label(x87_read_control_word) +IF387(` enter IMM(4),IMM(0) fnstcw IND(REG(esp)) OP(mov,w) TW(IND(REG(esp)),REG(ax)) - leave + leave') ret -') -i387_read_fp_control_word_lose: - OP(xor,l) TW(REG(eax),REG(eax)) +define_c_label(x87_write_control_word) +IF387(` fldcw LOF(4,REG(esp))') ret -define_c_label(i387_write_fp_control_word) -IF387(` OP(cmp,l) TW(IMM(0),ABS(EVR(i387_presence))) - je i387_write_fp_control_word_lose - fldcw LOF(4,REG(esp)) +define_c_label(x87_read_status_word) +IF387(` enter IMM(4),IMM(0) + fnstsw IND(REG(esp)) + OP(mov,w) TW(IND(REG(esp)),REG(ax)) + leave') + ret + +define_c_label(x87_read_environment) +IF387(` OP(mov,l) TW(LOF(4,REG(esp)),REG(eax)) + fnstenv IND(REG(eax))') ret -') -i387_write_fp_control_word_lose: +define_c_label(x87_write_environment) +IF387(` OP(mov,l) TW(LOF(4,REG(esp)),REG(eax)) + fldenv IND(REG(eax))') ret IFDASM(`end') -# Mark the stack nonexecutable. If we ever put code (e.g., -# dynamic-extent closure entry points) on the stack, this would have -# to change. +# Mark the C stack nonexecutable. ifdef(`__linux__', `ifdef(`__ELF__', `.section .note.GNU-stack,"",%progbits')') diff --git a/src/microcode/cmpauxmd/x86-64.m4 b/src/microcode/cmpauxmd/x86-64.m4 index ff2238c57..b70f0c6d5 100644 --- a/src/microcode/cmpauxmd/x86-64.m4 +++ b/src/microcode/cmpauxmd/x86-64.m4 @@ -982,9 +982,7 @@ define_c_label(x86_64_write_mxcsr) IFDASM(`end') -# Mark the stack nonexecutable. If we ever put code (e.g., -# dynamic-extent closure entry points) on the stack, this would have -# to change. +# Mark the C stack nonexecutable. ifdef(`__linux__', `ifdef(`__ELF__', `.section .note.GNU-stack,"",%progbits')') -- 2.25.1