linux_dsm_epyc7002/arch/mips
WANG Xuerui ec7a93188a MIPS: emulate CPUCFG instruction on older Loongson64 cores
CPUCFG is the instruction for querying processor characteristics on
newer Loongson processors, much like CPUID of x86. Since the instruction
is supposedly designed to provide a unified way to do feature detection
(without having to, for example, parse /proc/cpuinfo which is too
heavyweight), it is important to provide compatibility for older cores
without native support. Fortunately, most of the fields can be
synthesized without changes to semantics. Performance is not really big
a concern, because feature detection logic is not expected to be
invoked very often in typical userland applications.

The instruction can't be emulated on LOONGSON_2EF cores, according to
FlyGoat's experiments. Because the LWC2 opcode is assigned to other
valid instructions on 2E and 2F, no RI exception is raised for us to
intercept. So compatibility is only extended back furthest to
Loongson-3A1000. Loongson-2K is covered too, as it is basically a remix
of various blocks from the 3A/3B models from a kernel perspective.

This is lightly based on Loongson's work on their Linux 3.10 fork, for
being the authority on the right feature flags to fill in, where things
aren't otherwise discoverable.

Signed-off-by: WANG Xuerui <git@xen0n.name>
Reviewed-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
Cc: Huacai Chen <chenhc@lemote.com>
Cc: Jiaxun Yang <jiaxun.yang@flygoat.com>
Cc: Tiezhu Yang <yangtiezhu@loongson.cn>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
2020-05-24 09:26:55 +02:00
..
alchemy MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
ar7 MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
ath25 MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
ath79 MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
bcm47xx MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
bcm63xx MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
bmips MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
boot MIPS: DTS: Only build subdir of current platform 2020-05-24 09:24:49 +02:00
cavium-octeon MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
cobalt MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
configs MIPS: Loongson: Enable devicetree based probing for 8250 ports in defconfig 2020-05-18 09:34:41 +02:00
crypto crypto: {arm,arm64,mips}/poly1305 - remove redundant non-reduction from emit 2020-01-16 15:18:12 +08:00
dec MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
fw MIPS: CFE: Remove dead code in cfe_getfwinfo() 2020-05-07 10:29:42 +02:00
generic MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
include MIPS: emulate CPUCFG instruction on older Loongson64 cores 2020-05-24 09:26:55 +02:00
jazz MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
jz4740 MIPS: ingenic: Add missing include 2020-05-20 08:42:31 +02:00
kernel MIPS: emulate CPUCFG instruction on older Loongson64 cores 2020-05-24 09:26:55 +02:00
kvm mips: Add MIPS Release 5 support 2020-05-22 09:09:01 +02:00
lantiq MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
lib mips: Add MIPS Release 5 support 2020-05-22 09:09:01 +02:00
loongson2ef MIPS: Fix exception handler memcpy() 2020-05-24 09:15:54 +02:00
loongson32 MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
loongson64 MIPS: emulate CPUCFG instruction on older Loongson64 cores 2020-05-24 09:26:55 +02:00
math-emu MIPS: Use fallthrough for arch/mips 2020-05-07 11:55:47 +02:00
mm MIPS: Tidy up CP0.Config6 bits definition 2020-05-24 09:24:49 +02:00
mti-malta MIPS: Fix exception handler memcpy() 2020-05-24 09:15:54 +02:00
net MIPS: BPF: Use sizeof_field() instead of FIELD_SIZEOF() 2020-01-10 11:33:35 -08:00
netlogic MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
oprofile MIPS: Use fallthrough for arch/mips 2020-05-07 11:55:47 +02:00
paravirt MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
pci MIPS: Remove NEC MARKEINS/EMMA 2020-05-09 18:05:57 +02:00
pic32 MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
pistachio MIPS: Fix exception handler memcpy() 2020-05-24 09:15:54 +02:00
pnx833x MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
power mips: check for dsp presence only once before save/restore 2019-10-07 10:58:53 -07:00
ralink MIPS: ralink: Don't include objects twice 2020-05-15 09:10:07 +02:00
rb532 MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
sgi-ip22 MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
sgi-ip27 MIPS: SGI-IP27: Remove not used definition TICK_SIZE in ip27-timer.c 2020-05-21 09:05:17 +02:00
sgi-ip30 MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
sgi-ip32 MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
sibyte MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
sni MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
tools MIPS: tools: Move "returns" after "loongson3-llsc-check" 2020-05-04 10:18:41 +02:00
txx9 MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
vdso MIPS: VDSO: Allow ld.lld to link the VDSO 2020-05-12 10:02:11 +02:00
vr41xx MIPS: Fix builds for VR41xx platforms 2020-05-15 09:09:58 +02:00
Kbuild MIPS: Fix "make clean" error due to recent changes 2020-05-13 13:20:22 +02:00
Kbuild.platforms MIPS: Fix typos in arch/mips/Kbuild.platforms 2020-05-13 13:19:52 +02:00
Kconfig MIPS: emulate CPUCFG instruction on older Loongson64 cores 2020-05-24 09:26:55 +02:00
Kconfig.debug mips: Add CPS_NS16550_WIDTH config 2020-05-22 09:12:52 +02:00
Makefile mips: Add MIPS Warrior P5600 support 2020-05-22 09:10:53 +02:00
Makefile.postlink MIPS: fix indentation of the 'RELOCS' message 2020-01-20 15:37:30 -08:00