lkml.org 
[lkml]   [2014]   [Dec]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Subject[PATCH 0/3] MIPS: Get ready for non-executable stack.
Date
From: David Daney <david.daney@cavium.com>

Currently the MIPS FPU emulator uses eXecute Out of Line (XOL) on the
stack to handle instructions in the delay slots of FPU branches.
Because of this MIPS cannot have a non-executable stack.

A previous patch set from Leonid Yegoshin attempts to address the
problem by moving the XOL location to a thread private mapping of a
dedicated page.

I present here an alternative: Add an instruction set emulator and use
it to execute the FPU delay slot instructions. The benefit of this
approach is that we don't have to allocate a page per user-space
thread for XOL, and we keep the TLB handling code slightly simpler as
a result.

Currently this is a proof of concept, as it doesn't yet handle MIPS64
nor microMIPS instructions. But it is sufficient to run the entire
Debian distribution on a FPU-less CPU.

Comments welcome.

David Daney (3):
MIPS: Add FPU emulator counter for non-FPU instructions emulated.
MIPS: Add full ISA emulator.
MIPS: Use full instruction emulation for FPU emulator delay slot
emulation.

arch/mips/include/asm/fpu_emulator.h | 1 +
arch/mips/kernel/Makefile | 3 +-
arch/mips/kernel/insn-emul.c | 815 +++++++++++++++++++++++++++++++++++
arch/mips/math-emu/cp1emu.c | 13 +-
arch/mips/math-emu/me-debugfs.c | 1 +
5 files changed, 830 insertions(+), 3 deletions(-)
create mode 100644 arch/mips/kernel/insn-emul.c

--
1.7.11.7



\
 
 \ /
  Last update: 2014-12-04 01:21    [W:0.076 / U:0.096 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site