2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2025-01-10 06:34:17 +08:00
linux-next/arch/mips/include/asm
Paul Burton 4227a2d4ef MIPS: Support for hybrid FPRs
Hybrid FPRs is a scheme where scalar FP registers are 64b wide, but
accesses to odd indexed single registers use bits 63:32 of the
preceeding even indexed 64b register. In this mode all FP code
except that built for the plain FP64 ABI can execute correctly. Most
notably a combination of FP64A & FP32 code can execute correctly,
allowing for existing FP32 binaries to be linked with new FP64A binaries
that can make use of 64 bit FP & MSA.

Hybrid FPRs are implemented by setting both the FR & FRE bits, trapping
& emulating single precision FP instructions (via Reserved Instruction
exceptions) whilst allowing others to execute natively. It therefore has
a penalty in terms of execution speed, and should only be used when no
fully native mode can be. As more binaries are recompiled to use either
the FPXX or FP64(A) ABIs, the need for hybrid FPRs should diminish.
However in the short to mid term it allows for a gradual transition
towards that world, rather than a complete ABI break which is not
feasible for some users & not desirable for many.

A task will be executed using the hybrid FPR scheme when its
TIF_HYBRID_FPREGS flag is set & TIF_32BIT_FPREGS is clear. A further
patch will set the flags as necessary, this patch simply adds the
infrastructure necessary for the hybrid FPR mode to work.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
Cc: linux-mips@linux-mips.org
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Cc: linux-fsdevel@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/7683/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
2014-11-24 07:45:07 +01:00
..
dec DEC: Document the R4k MB ASIC mini interrupt controller 2014-06-04 22:50:41 +02:00
emma MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
fw MIPS: malta: malta-memory: Add support for the 'ememsize' variable 2014-03-26 23:09:20 +01:00
ip32 MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
lasat MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
mach-ar7 Revert "MIPS: make CAC_ADDR and UNCAC_ADDR account for PHYS_OFFSET" 2013-07-01 15:10:58 +02:00
mach-ath79 mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
mach-au1x00 MIPS: Alchemy: Update cpu-feature-overrides 2014-09-22 13:35:47 +02:00
mach-bcm47xx MIPS: BCM47XX: Make ssb init NVRAM instead of bcm47xx polling it 2014-11-24 07:44:59 +01:00
mach-bcm63xx MIPS: BCM63xx: Append irq line to irq_{stat,mask}* 2014-07-30 15:28:11 +02:00
mach-cavium-octeon MIPS: Use WSBH/DSBH/DSHD on Loongson 3A 2014-09-22 13:35:46 +02:00
mach-cobalt MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
mach-db1x00 MIPS: Alchemy: fold mach-db1xxx/db1x00 headers into board code 2014-03-26 23:09:21 +01:00
mach-dec MIPS: DECstation CPU feature overrides 2013-10-29 21:24:46 +01:00
mach-emma2rh MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
mach-generic MIPS: Move MIPS_GIC_IRQ_BASE into platform irq.h 2014-11-24 07:44:54 +01:00
mach-ip22 MIPS: IP22: This platform may come with either MIPS III or MIPS IV CPUs. 2014-05-23 15:10:59 +02:00
mach-ip27 MIPS: Remove unnecessary platform dma helper functions 2013-10-29 21:24:40 +01:00
mach-ip28 MIPS: IP28: Fix/clean spaces.h 2014-08-26 02:18:58 +02:00
mach-ip32 MIPS: Remove unnecessary platform dma helper functions 2013-10-29 21:24:40 +01:00
mach-jazz mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
mach-jz4740 ASoC: jz4740: Improve build test coverage 2014-04-23 12:18:44 +01:00
mach-lantiq MIPS: Lantiq: Falcon: add cpu-feature-override.h 2013-09-03 23:22:16 +02:00
mach-lasat MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
mach-loongson MIPS: Loongson: Improve LEFI firmware interface 2014-11-24 07:45:01 +01:00
mach-loongson1 MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
mach-malta irqchip: mips-gic: Probe for number of external interrupts 2014-11-24 07:44:56 +01:00
mach-netlogic MIPS: NL: Fix nlm_xlp_defconfig build error 2014-08-26 02:18:55 +02:00
mach-paravirt MIPS: Add code for new system 'paravirt' 2014-06-02 12:34:20 +02:00
mach-pmcs-msp71xx MIPS: MSP71xx: Remove checks for two macros 2014-05-23 15:12:39 +02:00
mach-pnx833x MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
mach-ralink MIPS: Ralink: Remove surviving RM9000 bits. 2014-05-23 15:12:40 +02:00
mach-rc32434 MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
mach-rm MIPS: PMC-Sierra Yosemite: Remove support. 2012-12-13 18:15:30 +01:00
mach-sead3 irqchip: mips-gic: Probe for number of external interrupts 2014-11-24 07:44:56 +01:00
mach-sibyte MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
mach-tx39xx MIPS: PMC-Sierra Yosemite: Remove support. 2012-12-13 18:15:30 +01:00
mach-tx49xx MIPS: PMC-Sierra Yosemite: Remove support. 2012-12-13 18:15:30 +01:00
mach-vr41xx MIPS: PMC-Sierra Yosemite: Remove support. 2012-12-13 18:15:30 +01:00
mips-boards MIPS: Move gic.h to include/linux/irqchip/mips-gic.h 2014-11-24 07:44:59 +01:00
netlogic MIPS: Add MSI support for XLP9XX 2014-05-30 16:51:02 +02:00
octeon mips: Convert pr_warning to pr_warn 2014-11-24 07:44:51 +01:00
pci MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
sgi MIPS: IP22/IP28: Improve GIO support 2014-06-04 22:50:42 +02:00
sibyte MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
sn MIPS: IP27: Remove pfn_t. 2013-05-08 03:51:58 +02:00
txx9 MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
vr41xx MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
xtalk MIPS: IP27: Fix build errors with CONFIG_PCI disabled. 2013-06-21 18:07:00 +02:00
abi.h mips: Use get_signal() signal_setup_done() 2014-08-06 13:03:08 +02:00
addrspace.h MIPS: Add NUMA support for Loongson-3 2014-07-30 21:46:19 +02:00
amon.h MIPS: APRP: Code formatting clean-ups. 2014-01-22 20:19:02 +01:00
arch_hweight.h
asm-eva.h MIPS: asm: Add wrappers for EVA/non-EVA instructions 2014-03-26 23:09:12 +01:00
asm-offsets.h
asm.h MIPS: Fix gigaton of warning building with microMIPS. 2014-03-31 18:17:12 +02:00
asmmacro-32.h MIPS: Fix build with binutils 2.24.51+ 2014-11-07 15:07:36 +01:00
asmmacro-64.h MIPS: Support for 64-bit FP with O32 binaries 2014-01-13 23:40:56 +01:00
asmmacro.h MIPS: Fix build with binutils 2.24.51+ 2014-11-07 15:07:36 +01:00
atomic.h locking,arch: Use ACCESS_ONCE() instead of cast to volatile in atomic_read() 2014-10-03 06:06:23 +02:00
barrier.h arch,mips: Convert smp_mb__*() 2014-04-18 14:20:38 +02:00
bcache.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
bitops.h MIPS: asm/bitops.h: Guard CLZ with `.set mips32' 2014-07-30 15:51:55 +02:00
bmips.h MIPS: BMIPS: add a smp ops registration helper 2014-01-22 20:18:52 +01:00
bootinfo.h MIPS: Loongson: Improve LEFI firmware interface 2014-11-24 07:45:01 +01:00
branch.h MIPS: Sort out mm_isBranchInstr. 2014-05-23 15:12:37 +02:00
break.h MIPS: Quit exporting kernel internel break codes to uapi/asm/break.h 2013-02-20 18:24:24 +01:00
bug.h
bugs.h
cache.h MIPS: Rename .data..mostly and properly handle it in linker script 2011-05-10 18:15:24 +01:00
cacheflush.h MIPS: add kmap_noncoherent to wire a cached non-coherent TLB entry 2014-05-28 16:20:14 +01:00
cacheops.h MIPS: fix case mismatch in local_r4k_flush_icache_range() 2014-01-15 14:19:42 +07:00
cevt-r4k.h MIPS: MSP: Fix build error 2011-05-10 18:15:24 +01:00
checksum.h MIPS: asm: checksum: Add MIPS specific csum_and_copy_from_user function 2014-03-26 23:09:17 +01:00
clkdev.h clk: Add common __clk_get(), __clk_put() implementations 2013-12-04 17:19:44 +01:00
clock.h MIPS: clock.h: Remove declaration of cpu_wait. 2013-05-22 01:34:25 +02:00
cmp.h MIPS: SMP: Remove plat_smp_ops cpus_done method. 2014-05-27 11:06:42 +02:00
cmpxchg.h MIPS: Fix gigaton of warning building with microMIPS. 2014-03-31 18:17:12 +02:00
compat-signal.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
compat.h Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2013-03-02 07:44:16 -08:00
compiler.h
cop2.h MIPS: Prevent compiler warning from cop2_{save,restore} 2014-10-23 19:58:13 +02:00
cpu-features.h MIPS: detect presence of the FRE & UFR bits 2014-11-24 07:45:06 +01:00
cpu-info.h MIPS: cpu-probe: Set the write-combine CCA value on per core basis 2014-09-22 13:35:53 +02:00
cpu-type.h MIPS: OCTEON: Add OCTEON3 to __get_cpu_type 2014-05-30 21:01:11 +02:00
cpu.h MIPS: detect presence of the FRE & UFR bits 2014-11-24 07:45:06 +01:00
debug.h
delay.h MIPS: Make __{,n,u}delay declarations match definitions and generic delay.h 2012-10-16 22:20:03 +02:00
device.h
div64.h
dma-coherence.h MIPS: improve checks for noncoherent DMA 2014-01-22 20:43:10 +01:00
dma-mapping.h MIPS: Loongson: Add swiotlb to support All-Memory DMA 2014-03-31 18:17:12 +02:00
dma.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
ds1287.h
dsp.h MIPS: DSP: Fix DSP mask for registers. 2013-01-24 13:20:09 +01:00
edac.h
elf.h MIPS: Support for hybrid FPRs 2014-11-24 07:45:07 +01:00
errno.h UAPI: (Scripted) Disintegrate arch/mips/include/asm 2012-10-09 09:47:14 +01:00
eva.h MIPS: EVA: Add new EVA header 2014-08-26 02:18:56 +02:00
exec.h Disintegrate asm/system.h for MIPS 2012-03-28 18:30:02 +01:00
fb.h
fixmap.h MIPS: MT: Remove SMTC support 2014-05-24 00:07:01 +02:00
floppy.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
fpregdef.h MIPS: Fix build with binutils 2.24.51+ 2014-11-07 15:07:36 +01:00
fpu_emulator.h MIPS: Replace __get_cpu_var uses in FPU emulator. 2014-08-26 13:45:51 -04:00
fpu.h MIPS: Support for hybrid FPRs 2014-11-24 07:45:07 +01:00
ftrace.h MIPS: ftrace: Fix a microMIPS build problem 2014-10-24 02:38:33 +02:00
futex.h MIPS: Fix gigaton of warning building with microMIPS. 2014-03-31 18:17:12 +02:00
gio_device.h MIPS: IP22/IP28: Improve GIO support 2014-06-04 22:50:42 +02:00
gpio.h
gt64120.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
hardirq.h
hazards.h MIPS: Get rid of the use of .macro in C code. 2013-04-11 15:39:51 +02:00
highmem.h mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
hpet.h MIPS: Loongson-3: Add RS780/SBX00 HPET support 2014-11-24 07:45:02 +01:00
hugetlb.h mm/hugetlb: add more arch-defined huge_pte functions 2013-04-29 15:54:33 -07:00
hw_irq.h atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
i8259.h
ide.h
idle.h MIPS: idle: Remove leftover __pastwait symbol and its references 2014-10-23 19:24:05 +02:00
inst.h MIPS: MIPS16e: Support handling of delay slots. 2013-05-09 17:55:20 +02:00
io.h MIPS: Fix gigaton of warning building with microMIPS. 2014-03-31 18:17:12 +02:00
irq_cpu.h MIPS: Rename mips_cpu_intc_init() -> mips_cpu_irq_of_init() 2014-11-24 07:44:52 +01:00
irq_gt641xx.h
irq_regs.h
irq.h MIPS: Add arch_trigger_all_cpu_backtrace() function 2014-11-24 07:44:49 +01:00
irqflags.h MIPS: MT: Remove SMTC support 2014-05-24 00:07:01 +02:00
isadep.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
jazz.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
jazzdma.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
jump_label.h MIPS: jump_label.c: Handle the microMIPS J instruction encoding 2014-11-19 18:22:09 +01:00
Kbuild Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2014-10-18 14:24:36 -07:00
kdebug.h
kexec.h MIPS: kdump: Add support 2012-12-13 16:46:47 +01:00
kgdb.h
kmap_types.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
kprobes.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
kvm_host.h KVM: remove garbage arg to *hardware_{en,dis}able 2014-08-29 16:35:55 +02:00
kvm_para.h MIPS: Add functions for hypervisor call 2014-05-30 21:01:11 +02:00
linkage.h consolidate cond_syscall and SYSCALL_ALIAS declarations 2013-03-03 22:55:19 -05:00
local.h MIPS: Fix gigaton of warning building with microMIPS. 2014-03-31 18:17:12 +02:00
m48t37.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
maar.h MIPS: Initialise MAARs 2014-08-02 00:06:46 +02:00
mc146818-time.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
mc146818rtc.h
mips_machine.h MIPS: move mips_{set,get}_machine_name() to a more generic place 2013-05-08 01:19:07 +02:00
mips_mt.h MIPS: MT: Remove SMTC support 2014-05-24 00:07:01 +02:00
mips-cm.h MIPS: CM: use __raw_ memory access functions 2014-03-31 18:17:13 +02:00
mips-cpc.h MIPS: CPC: provide locking functions 2014-05-02 16:39:14 +01:00
mipsmtregs.h MIPS: MT: define write_c0_tchalt macro 2014-05-28 16:20:22 +01:00
mipsprom.h MIPS: SNI: Fix conflicting wrapper symbols for headers. 2011-10-20 15:00:18 +01:00
mipsregs.h MIPS: define bits introduced for hybrid FPRs 2014-11-24 07:45:04 +01:00
mmu_context.h MIPS: mm: Use the Hardware Page Table Walker if the core supports it 2014-08-02 00:06:39 +02:00
mmu.h
mmzone.h
module.h MIPS: MT: Remove SMTC support 2014-05-24 00:07:01 +02:00
msa.h MIPS: fix read_msa_* & write_msa_* functions on non-MSA toolchains 2014-08-02 00:06:44 +02:00
msc01_ic.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
nile4.h mips: Update the email address of Geert Uytterhoeven 2014-06-02 16:34:41 +02:00
paccess.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
page.h MIPS: Fix a warning for virt_to_page 2014-08-26 02:27:47 +02:00
pci.h PCI: Turn pcibios_penalize_isa_irq() into a weak function 2014-05-27 16:23:58 -06:00
perf_event.h
pgalloc.h mips: handle pgtable_page_ctor() fail 2013-11-15 09:32:18 +09:00
pgtable-32.h MIPS: BCM47XX: Detect more then 128 MiB of RAM (HIGHMEM) 2014-07-30 23:27:02 +02:00
pgtable-64.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
pgtable-bits.h MIPS: pgtable-bits: Define the CCA bit for WC writes on Ingenic cores 2014-09-22 13:35:52 +02:00
pgtable.h MIPS: pgtable.h: Implement the pgprot_writecombine function for MIPS 2014-09-22 13:35:53 +02:00
pm-cps.h MIPS: pm-cps: add PM state entry code for CPS systems 2014-05-28 16:20:31 +01:00
pm.h Merge branch 'wip-mips-pm' of https://github.com/paulburton/linux into mips-for-linux-next 2014-05-29 15:08:23 +02:00
pmon.h
prefetch.h
processor.h sched, mips, ia64: Remove __ARCH_WANT_UNLOCKED_CTXSW 2014-09-24 14:47:05 +02:00
prom.h mips: convert fdt pointers to opaque pointers 2014-04-30 00:59:13 -05:00
ptrace.h MIPS: ptrace: Fix user pt_regs definition, use in ptrace_{get, set}regs() 2014-08-02 00:06:37 +02:00
r4k-timer.h MIPS: Synchronize MIPS count one CPU at a time 2012-08-17 10:57:28 +02:00
r4kcache.h MIPS: KVM: Reformat code and comments 2014-06-30 16:52:01 +02:00
reboot.h
reg.h MIPS: asm/reg.h: Move to uapi 2014-08-02 00:06:38 +02:00
regdef.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
rtlx.h MIPS: APRP: Code formatting clean-ups. 2014-01-22 20:19:02 +01:00
seccomp.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
setup.h MIPS: Add 8250/16550 serial early printk driver 2013-10-29 21:24:36 +01:00
sgialib.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
sgiarcs.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
shmparam.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
sigcontext.h Revert "MIPS: Save/restore MSA context around signals" 2014-06-26 10:48:18 +01:00
siginfo.h UAPI: (Scripted) Disintegrate arch/mips/include/asm 2012-10-09 09:47:14 +01:00
signal.h Fix breakage in MIPS siginfo handling 2013-03-19 19:15:52 +01:00
sim.h mips: switch to generic sys_fork() and sys_clone() 2013-02-03 18:33:02 -05:00
smp-cps.h MIPS: pm-cps: Prevent use of mips_cps_* without CPS SMP 2014-07-30 20:47:39 +02:00
smp-ops.h MIPS: SMP: Remove plat_smp_ops cpus_done method. 2014-05-27 11:06:42 +02:00
smp.h MIPS: Move CPU topology macros to topology.h 2014-08-27 13:44:44 +02:00
sni.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
socket.h UAPI: (Scripted) Disintegrate arch/mips/include/asm 2012-10-09 09:47:14 +01:00
sparsemem.h MIPS: Add NUMA support for Loongson-3 2014-07-30 21:46:19 +02:00
spinlock_types.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
spinlock.h MIPS: Remove redundant instructions from arch_spin_{,try}lock. 2013-04-26 17:18:24 +02:00
spram.h
stackframe.h MIPS: MT: Remove SMTC support 2014-05-24 00:07:01 +02:00
stackprotector.h MIPS: initial stack protector support 2013-07-01 15:10:48 +02:00
stacktrace.h MIPS: Add new unwind_stack variant 2011-06-15 14:35:33 +02:00
string.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
switch_to.h MIPS: COP2: CPP macro safety fixes. 2014-08-26 02:18:59 +02:00
syscall.h Merge git://git.infradead.org/users/eparis/audit 2014-10-19 16:25:56 -07:00
termios.h UAPI: (Scripted) Disintegrate arch/mips/include/asm 2012-10-09 09:47:14 +01:00
thread_info.h MIPS: Support for hybrid FPRs 2014-11-24 07:45:07 +01:00
time.h MIPS: Add hook to get C0 performance counter interrupt 2014-11-24 07:44:53 +01:00
timex.h MIPS: Implement random_get_entropy with CP0 Random 2014-05-30 18:21:30 +02:00
tlb.h MIPS: tlb: Set the EHINV bit for TLBINVF cores when invalidating the TLB 2014-01-22 20:18:59 +01:00
tlbdebug.h
tlbflush.h
tlbmisc.h MIPS: Fix Jazz 64-bit build error. 2011-12-07 22:01:45 +00:00
topology.h MIPS: Move CPU topology macros to topology.h 2014-08-27 13:44:44 +02:00
traps.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
txx9irq.h
txx9pio.h
txx9tmr.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
types.h UAPI: (Scripted) Disintegrate arch/mips/include/asm 2012-10-09 09:47:14 +01:00
uaccess.h MIPS: Remove __strlen_user(). 2014-11-24 07:45:00 +01:00
uasm.h MIPS: uasm: Add SLT uasm instruction 2014-06-26 10:48:19 +01:00
unaligned.h
unistd.h sys_sgetmask/sys_ssetmask: add CONFIG_SGETMASK_SYSCALL 2014-06-04 16:54:14 -07:00
vdso.h
vga.h MIPS: Fix VGA_MAP_MEM macro. 2013-09-18 17:13:58 +02:00
vpe.h Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2014-01-30 17:20:32 -08:00
war.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
watch.h
wbflush.h