]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/log
mirror_ubuntu-zesty-kernel.git
10 years agoMIPS: net: Add BPF JIT
Markos Chandras [Tue, 8 Apr 2014 11:47:14 +0000 (12:47 +0100)]
MIPS: net: Add BPF JIT

This adds initial support for BPF-JIT on MIPS

Tested on mips32 LE/BE and mips64 BE/n64 using
dhcp, ping and various tcpdump filters.

Benchmarking:

Assuming the remote MIPS target uses 192.168.154.181
as its IP address, and the local host uses 192.168.154.136,
the following results can be obtained using the following
tcpdump filter (catches no frames) and a simple
'time ping -f -c 1000000' command.

[root@(none) ~]# tcpdump -p -n -s 0 -i eth0 net 10.0.0.0/24 -d
(000) ldh      [12]
(001) jeq      #0x800           jt 2 jf 8
(002) ld       [26]
(003) and      #0xffffff00
(004) jeq      #0xa000000       jt 16 jf 5
(005) ld       [30]
(006) and      #0xffffff00
(007) jeq      #0xa000000       jt 16 jf 17
(008) jeq      #0x806           jt 10 jf 9
(009) jeq      #0x8035          jt 10 jf 17
(010) ld       [28]
(011) and      #0xffffff00
(012) jeq      #0xa000000       jt 16 jf 13
(013) ld       [38]
(014) and      #0xffffff00
(015) jeq      #0xa000000       jt 16 jf 17
(016) ret      #65535

- BPF-JIT Disabled

real    1m38.005s
user    0m1.510s
sys     0m6.710s

- BPF-JIT Enabled

real    1m35.215s
user    0m1.200s
sys     0m4.140s

[ralf@linux-mips.org: Resolved conflict.]

Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
10 years agoMIPS: uasm: Add lb uasm instruction
Markos Chandras [Wed, 16 Apr 2014 12:49:57 +0000 (13:49 +0100)]
MIPS: uasm: Add lb uasm instruction

It will be used later on by bpf-jit

[ralf@linux-mips.org: Resolved conflict.]

Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
10 years agoMIPS: uasm: Add mflo uasm instruction
Markos Chandras [Mon, 14 Apr 2014 14:42:31 +0000 (15:42 +0100)]
MIPS: uasm: Add mflo uasm instruction

It will be used later on by bpf-jit

[ralf@linux-mips.org: Resolved conflict.]

Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
10 years agoMIPS: uasm: Add mul uasm instruction
Markos Chandras [Tue, 8 Apr 2014 11:47:13 +0000 (12:47 +0100)]
MIPS: uasm: Add mul uasm instruction

It will be used later on by bpf-jit

[ralf@linux-mips.org: Resolved conflict.]

Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: http://patchwork.linux-mips.org/patch/6736/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: uasm: Add lh uam instruction
Markos Chandras [Tue, 8 Apr 2014 11:47:12 +0000 (12:47 +0100)]
MIPS: uasm: Add lh uam instruction

It will be used later on by bpf-jit

[ralf@linux-mips.org: Resolved conflict.]

Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: http://patchwork.linux-mips.org/patch/6733/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: uasm: Add wsbh uasm instruction
Markos Chandras [Tue, 8 Apr 2014 11:47:11 +0000 (12:47 +0100)]
MIPS: uasm: Add wsbh uasm instruction

It will be used later on by bpf-jit

[ralf@linux-mips.org: Resolved conflict.]

Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: http://patchwork.linux-mips.org/patch/6732/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: uasm: Add sltu uasm instruction
Markos Chandras [Tue, 8 Apr 2014 11:47:10 +0000 (12:47 +0100)]
MIPS: uasm: Add sltu uasm instruction

It will be used later on by bpf-jit

[ralf@linux-mips.org: Resolved conflict.]

Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: http://patchwork.linux-mips.org/patch/6731/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: uasm: Add sltiu uasm instruction
Markos Chandras [Tue, 8 Apr 2014 11:47:09 +0000 (12:47 +0100)]
MIPS: uasm: Add sltiu uasm instruction

It will be used later on by bpf-jit

[ralf@linux-mips.org: Resolved conflict.]

Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: http://patchwork.linux-mips.org/patch/6730/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: uasm: Add jalr uasm instruction
Markos Chandras [Tue, 8 Apr 2014 11:47:08 +0000 (12:47 +0100)]
MIPS: uasm: Add jalr uasm instruction

It will be used later on by bpf-jit

[ralf@linux-mips.org: Resolved conflict.]

Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: http://patchwork.linux-mips.org/patch/6729/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: uasm: Add mfhi uasm instruction
Markos Chandras [Tue, 8 Apr 2014 11:47:07 +0000 (12:47 +0100)]
MIPS: uasm: Add mfhi uasm instruction

It will be used later on by bpf-jit

[ralf@linux-mips.org: Resolved conflict.]

Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
Cc: linux-mips@linux-mips.org
Cc: Markos Chandras <markos.chandras@imgtec.com>
Patchwork: http://patchwork.linux-mips.org/patch/6728/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: uasm: Add divu uasm instruction
Markos Chandras [Tue, 8 Apr 2014 11:47:06 +0000 (12:47 +0100)]
MIPS: uasm: Add divu uasm instruction

It will be used later on by bpf-jit

[ralf@linux-mips.org: Resolved conflict.]

Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: http://patchwork.linux-mips.org/patch/6727/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: uasm: Add srlv uasm instruction
Markos Chandras [Tue, 8 Apr 2014 11:47:05 +0000 (12:47 +0100)]
MIPS: uasm: Add srlv uasm instruction

It will be used later on by bpf-jit

[ralf@linux-mips.org: Fixed conflict due to other preceeding conflicts.]

Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: http://patchwork.linux-mips.org/patch/6726/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: uasm: Add sllv uasm instruction
Markos Chandras [Tue, 8 Apr 2014 11:47:04 +0000 (12:47 +0100)]
MIPS: uasm: Add sllv uasm instruction

It will be used later on by bpf-jit

[ralf@linux-mips.org: Fixed conflict with
49e9529b9d43773307b8c73bd251b71784830c3d [MIPS: uasm: add jalr instruction].

Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: http://patchwork.linux-mips.org/patch/6725/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: uasm: Add u2u1 instruction builders
Markos Chandras [Tue, 8 Apr 2014 11:47:03 +0000 (12:47 +0100)]
MIPS: uasm: Add u2u1 instruction builders

It will be used later one for the jalr and wsbh instructions.

[ralf@linux-mips.org: Dropped arch/mips/include/asm/uasm.h segment because
that was already added by 49e9529b9d43773307b8c73bd251b71784830c3d
[MIPS: uasm: add jalr instruction].

Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: http://patchwork.linux-mips.org/patch/6724/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: uasm: Add u3u2u1 instruction builders
Markos Chandras [Tue, 8 Apr 2014 11:47:02 +0000 (12:47 +0100)]
MIPS: uasm: Add u3u2u1 instruction builders

It will be used later on by the sllv and srlv instructions.

Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: http://patchwork.linux-mips.org/patch/6723/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: math-emu: Add IEEE754 exception statistics to debugfs
Deng-Cheng Zhu [Thu, 29 May 2014 19:26:45 +0000 (12:26 -0700)]
MIPS: math-emu: Add IEEE754 exception statistics to debugfs

Sometimes it's useful to let the user, while doing performance research,
know what in the IEEE754 exceptions has caused many times of FP emulation
when running a specific application. This patch adds 5 more files to
/sys/kernel/debug/mips/fpuemustats/, whose filenames begin with "ieee754".
These stats are in addition to the existing cp1ops, cp1xops, errors, loads
and stores, which may not be useful in understanding the reasons of ieee754
exceptions.

[ralf@linux-mips.org: Fixed reject due to other changes to the kernel
FP assist software.]

Signed-off-by: Deng-Cheng Zhu <dengcheng.zhu@imgtec.com>
Cc: linux-mips@linux-mips.org
Cc: Steven.Hill@imgtec.com
Cc: james.hogan@imgtec.com
Patchwork: http://patchwork.linux-mips.org/patch/7044/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: BCM47XX: Slightly clean memory detection
Rafał Miłecki [Sat, 19 Apr 2014 10:49:46 +0000 (12:49 +0200)]
MIPS: BCM47XX: Slightly clean memory detection

Patch was tested on devices with 64 MiB and 256 MiB of RAM.
It documents every part nicely and drops this hacky part of code:
max = off | ((128 << 20) - 1);

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Cc: linux-mips@linux-mips.org
Cc: Hauke Mehrtens <hauke@hauke-m.de>
Patchwork: https://patchwork.linux-mips.org/patch/6808/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: octeon: Add interface mode detection for Octeon II
Alex Smith [Thu, 29 May 2014 10:10:01 +0000 (11:10 +0100)]
MIPS: octeon: Add interface mode detection for Octeon II

Add interface mode detection for Octeon II. This is necessary to detect
the interface modes correctly on the UBNT E200 board. Code is taken
from the UBNT GPL source release, with some alterations: SRIO, ILK and
RXAUI interface modes are removed and instead return disabled as these
modes are not currently supported.

Signed-off-by: Alex Smith <alex.smith@imgtec.com>
Tested-by: David Daney <david.daney@cavium.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/7039/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMerge branch 'wip-mips-pm' of https://github.com/paulburton/linux into mips-for-linux...
Ralf Baechle [Wed, 28 May 2014 17:00:14 +0000 (19:00 +0200)]
Merge branch 'wip-mips-pm' of https://github.com/paulburton/linux into mips-for-linux-next

10 years agoMIPS: Malta: CPS SMP by default
Paul Burton [Tue, 15 Apr 2014 11:24:23 +0000 (12:24 +0100)]
MIPS: Malta: CPS SMP by default

The CONFIG_MIPS_CPS SMP implementation should be able to handle all
cases the CONFIG_MIPS_CMP implementation does, but without requiring
bootloader assistance. It is also required in order to make use of
features such as hotplug & cpuidle core power gating. Enable it by
default for Malta configs that previously enabled the now deprecated
CONFIG_MIPS_CMP, and disable the latter. The local version suffix "cmp"
is removed rather than replaced with "cps" since there are other ways to
tell that the CPS SMP implementation is in use (the "VPE topology" line
in the boot log being one).

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
10 years agocpuidle: cpuidle-cps: add MIPS CPS cpuidle driver
Paul Burton [Mon, 14 Apr 2014 15:25:29 +0000 (16:25 +0100)]
cpuidle: cpuidle-cps: add MIPS CPS cpuidle driver

This patch adds a cpuidle driver for systems based around the MIPS
Coherent Processing System (CPS) architecture. It supports four idle
states:

  - The standard MIPS wait instruction.

  - The non-coherent wait, clock gated & power gated states exposed by
    the recently added pm-cps layer.

The pm-cps layer is used to enter all the deep idle states. Since cores
in the clock or power gated states cannot service interrupts, the
gic_send_ipi_single function is modified to send a power up command for
the appropriate core to the CPC in cases where the target CPU has marked
itself potentially incoherent.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
10 years agocpuidle: declare cpuidle_dev in cpuidle.h
Paul Burton [Wed, 8 Jan 2014 11:23:35 +0000 (11:23 +0000)]
cpuidle: declare cpuidle_dev in cpuidle.h

Declaring this allows drivers which need to initialise each struct
cpuidle_device at initialisation time to make use of the structures
already defined in cpuidle.c, rather than having to wastefully define
their own.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
10 years agoMIPS: include cpuidle Kconfig menu
Paul Burton [Mon, 14 Apr 2014 15:24:22 +0000 (16:24 +0100)]
MIPS: include cpuidle Kconfig menu

This patch simply includes the cpuidle Kconfig entries in preparation
for cpuidle drivers used on MIPS systems.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
10 years agoMIPS: cpuidle wait instruction state
Paul Burton [Mon, 14 Apr 2014 15:16:41 +0000 (16:16 +0100)]
MIPS: cpuidle wait instruction state

Defines a macro intended to allow trivial use of the regular MIPS wait
instruction from cpuidle drivers, which may simply invoke the macro
within their array of states.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
10 years agoMIPS: smp-cps: duplicate core0 CCA on secondary cores
Paul Burton [Wed, 16 Apr 2014 10:10:57 +0000 (11:10 +0100)]
MIPS: smp-cps: duplicate core0 CCA on secondary cores

Rather than hardcoding CCA=0x5 for secondary cores, re-use the CCA from
the boot CPU. This allows overrides of the CCA using the cca= kernel
parameter to take effect on all CPUs for consistency.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
10 years agoMIPS: smp-cps: set a coherent default CCA
Paul Burton [Mon, 14 Apr 2014 14:58:45 +0000 (15:58 +0100)]
MIPS: smp-cps: set a coherent default CCA

This patch sets a default CCA suited for use with multi-core SMP on all
current MIPS CPS based systems. It may still be overriden by the cca=
argument on the kernel command line.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
10 years agoMIPS: smp-cps: prevent multi-core SMP with unsuitable CCA
Paul Burton [Mon, 14 Apr 2014 14:21:25 +0000 (15:21 +0100)]
MIPS: smp-cps: prevent multi-core SMP with unsuitable CCA

If the user or bootloader sets the CCA to a value which is not suited
for multi-core SMP (ie. anything non-coherent) then limit the system to
using only a single core and warn the user.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
10 years agoMIPS: smp-cps: hotplug support
Paul Burton [Mon, 14 Apr 2014 13:13:57 +0000 (14:13 +0100)]
MIPS: smp-cps: hotplug support

This patch adds support for offlining CPUs via hotplug when using the
CONFIG_MIPS_CPS SMP implementation. When a CPU is offlined one of 2
things will happen:

  - If the CPU is part of a core which implements the MT ASE and there
    is at least one other VPE online within that core then the VPE will
    be halted by settings its TCHalt bit.

  - Otherwise if supported the core will be powered down via the CPC.

  - Otherwise the CPU will hang by executing an infinite loop.

Bringing CPUs back online is then a process of either clearing the
appropriate VPEs TCHalt bit or powering up the appropriate core via the
CPC. Throughout the process the struct core_boot_config vpe_mask field
must be maintained such that mips_cps_boot_vpes will start & stop the
correct VPEs.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
10 years agoMIPS: pm-cps: add PM state entry code for CPS systems
Paul Burton [Mon, 14 Apr 2014 10:00:56 +0000 (11:00 +0100)]
MIPS: pm-cps: add PM state entry code for CPS systems

This patch adds code to generate entry & exit code for various low power
states available on systems based around the MIPS Coherent Processing
System architecture (ie. those with a Coherence Manager, Global
Interrupt Controller & for >=CM2 a Cluster Power Controller). States
supported are:

  - Non-coherent wait. This state first leaves the coherent domain and
    then executes a regular MIPS wait instruction. Power savings are
    found from the elimination of coherency interventions between the
    core and any other coherent requestors in the system.

  - Clock gated. This state leaves the coherent domain and then gates
    the clock input to the core. This removes all dynamic power from the
    core but leaves the core at the mercy of another to restart its
    clock. Register state is preserved, but the core can not service
    interrupts whilst its clock is gated.

  - Power gated. This deepest state removes all power input to the core.
    All register state is lost and the core will restart execution from
    its BEV when another core powers it back up. Because register state
    is lost this state requires cooperation with the CONFIG_MIPS_CPS SMP
    implementation in order for the core to exit the state successfully.

The code will detect which states are available on the current system
during boot & generate the entry/exit code for those states. This will
be used by cpuidle & hotplug implementations.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
10 years agoMIPS: smp-cps: use CPC core-other locking
Paul Burton [Fri, 7 Mar 2014 10:42:52 +0000 (10:42 +0000)]
MIPS: smp-cps: use CPC core-other locking

The core which the CPC core-other region relates to is based upon the
core-local core-other addressing register. As its name suggests this
register is shared between all VPEs within a core, and if there is a
possibility that multiple VPEs within a core will attempt to access
another core simultaneously then locking is required. This wasn't
previously a problem with the only user being cpu0 during boot, but will
be an issue once hotplug is implemented & may race with other users such
as cpuidle.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
10 years agoMIPS: smp-cps: flush cache after patching mips_cps_core_entry
Paul Burton [Mon, 14 Apr 2014 11:21:49 +0000 (12:21 +0100)]
MIPS: smp-cps: flush cache after patching mips_cps_core_entry

The start of mips_cps_core_entry is patched in order to provide the code
with the address of the CM register region at a point where it will be
running non-coherent with the rest of the system. However the cache
wasn't being flushed after that patching which could in principle lead
to secondary cores using an invalid CM base address.

The patching is moved to cps_prepare_cpus since local_flush_icache_range
has not been initialised at the point cps_smp_setup is called.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
10 years agoMIPS: smp-cps: function to determine whether CPS SMP is in use
Paul Burton [Fri, 14 Mar 2014 16:06:16 +0000 (16:06 +0000)]
MIPS: smp-cps: function to determine whether CPS SMP is in use

The core power down state for cpuidle will require that the CPS SMP
implementation is in use. This patch provides a mips_cps_smp_in_use
function which determines whether or not the CPS SMP implementation is
currently in use.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
10 years agoMIPS: smp-cps: rework core/VPE initialisation
Paul Burton [Mon, 14 Apr 2014 11:04:27 +0000 (12:04 +0100)]
MIPS: smp-cps: rework core/VPE initialisation

When hotplug and/or a powered down idle state are supported cases will
arise where a non-zero VPE must be brought online without VPE 0, and it
where multiple VPEs must be onlined simultaneously. This patch prepares
for that by:

  - Splitting struct boot_config into core & VPE boot config structures,
    allocated one per core or VPE respectively. This allows for multiple
    VPEs to be onlined simultaneously without clobbering each others
    configuration.

  - Indicating which VPEs should be online within a core at any given
    time using a bitmap. This allows multiple VPEs to be brought online
    simultaneously and also indicates to VPE 0 whether it should halt
    after starting any non-zero VPEs that should be online within the
    core. For example if all VPEs within a core are offlined via hotplug
    and the user onlines the second VPE within that core:

      1) The core will be powered up.

      2) VPE 0 will run from the BEV (ie. mips_cps_core_entry) to
         initialise the core.

      3) VPE 0 will start VPE 1 because its bit is set in the cores
         bitmap.

      4) VPE 0 will halt itself because its bit is clear in the cores
         bitmap.

  - Moving the core & VPE initialisation to assembly code which does not
    make any use of the stack. This is because if a non-zero VPE is to
    be brought online in a powered down core then when VPE 0 of that
    core runs it may not have a valid stack, and even if it did then
    it's messy to run through parts of generic kernel code on VPE 0
    before starting the correct VPE.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
10 years agoMIPS: uasm: add MT ASE yield instruction
Paul Burton [Tue, 4 Mar 2014 15:12:36 +0000 (15:12 +0000)]
MIPS: uasm: add MT ASE yield instruction

This patch allows use of the MT ASE yield instruction from uasm. It will
be used by a subsequent patch.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
10 years agoMIPS: uasm: add wait instruction
Paul Burton [Tue, 24 Dec 2013 03:50:35 +0000 (03:50 +0000)]
MIPS: uasm: add wait instruction

This patch allows use of the wait instruction from uasm. It will be used
by a subsequent patch.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
10 years agoMIPS: uasm: add sync instruction
Paul Burton [Tue, 24 Dec 2013 03:49:45 +0000 (03:49 +0000)]
MIPS: uasm: add sync instruction

This patch allows use of the sync instruction from uasm. It will be used
by a subsequent patch.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
10 years agoMIPS: uasm: add jalr instruction
Paul Burton [Sun, 16 Mar 2014 12:58:05 +0000 (12:58 +0000)]
MIPS: uasm: add jalr instruction

This patch allows use of the jalr instruction from uasm. It will be used
by a subsequent patch.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
10 years agoMIPS: uasm: add a label variant of beq
Paul Burton [Tue, 24 Dec 2013 03:51:39 +0000 (03:51 +0000)]
MIPS: uasm: add a label variant of beq

This patch allows for use of the beq instruction with labels from uasm,
much as bne & others already do. It will be used by a subsequent patch.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
10 years agoMIPS: inst.h: define microMIPS wait op
Paul Burton [Thu, 9 Jan 2014 15:30:37 +0000 (15:30 +0000)]
MIPS: inst.h: define microMIPS wait op

The opcode for the wait instruction within POOL32AXf was missing. This
patch adds it for use by a subsequent patch.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
10 years agoMIPS: inst.h: define microMIPS sync op
Paul Burton [Thu, 9 Jan 2014 15:27:32 +0000 (15:27 +0000)]
MIPS: inst.h: define microMIPS sync op

The opcode for the sync instruction within POOL32AXf was missing. This
patch adds it for use by a subsequent patch.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
10 years agoMIPS: inst.h: define MT yield op
Paul Burton [Tue, 4 Mar 2014 15:11:12 +0000 (15:11 +0000)]
MIPS: inst.h: define MT yield op

The opcode for the MT ASE yield instruction within the spec3 group was
missing. This patch adds it for use by a subsequent patch.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
10 years agoMIPS: inst.h: define COP0 wait op
Paul Burton [Tue, 24 Dec 2013 03:44:28 +0000 (03:44 +0000)]
MIPS: inst.h: define COP0 wait op

The func field for the wait instruction was missing from inst.h - this
patch adds it.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
10 years agoMIPS: MT: define write_c0_tchalt macro
Paul Burton [Sun, 16 Mar 2014 16:21:34 +0000 (16:21 +0000)]
MIPS: MT: define write_c0_tchalt macro

Define a macro to write to the current TCs TCHalt register. This will be
used by a subsequent patch.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
10 years agoMIPS: add kmap_noncoherent to wire a cached non-coherent TLB entry
Paul Burton [Mon, 3 Mar 2014 12:08:40 +0000 (12:08 +0000)]
MIPS: add kmap_noncoherent to wire a cached non-coherent TLB entry

This is identical to kmap_coherent apart from the cache coherency
attribute used for the TLB entry, so kmap_coherent is abstracted to
kmap_prot which is then called for both kmap_coherent &
kmap_noncoherent. This will be used by a subsequent patch.

Suggested-by: Leonid Yegoshin <leonid.yegoshin@imgtec.com>
Signed-off-by: Paul Burton <paul.burton@imgtec.com>
10 years agoMIPS: SNI: Remove USE_GENERIC_EARLY_PRINTK_8250
Thomas Bogendoerfer [Mon, 7 Apr 2014 22:22:26 +0000 (00:22 +0200)]
MIPS: SNI: Remove USE_GENERIC_EARLY_PRINTK_8250

SNI RM code has its own EARLY_PRINTK support no need for some generic 8250
stuff.

Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/6715/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: Alchemy: Default to noncoherent IO on Au1200 AB
Manuel Lauss [Thu, 10 Apr 2014 20:57:59 +0000 (22:57 +0200)]
MIPS: Alchemy: Default to noncoherent IO on Au1200 AB

CONFIG_DMA_COHERENT is no longer set; default to noncoherent io on
Au1200 revision AB to make USB work.

Signed-off-by: Manuel Lauss <manuel.lauss@gmail.com>
Cc: Linux-MIPS <linux-mips@linux-mips.org>
Patchwork: https://patchwork.linux-mips.org/patch/6745/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: Octeon: Add PCIe2 support in arch_setup_msi_irq()
Eunbong Song [Fri, 11 Apr 2014 08:32:54 +0000 (08:32 +0000)]
MIPS: Octeon: Add PCIe2 support in arch_setup_msi_irq()

In arch_setup_msi_irq(), there is no case for PCIe2. So board which have PCIe2 functionality
fails to boot with "Kernel panic - not syncing: arch_setup_msi_irq: Invalid octeon_dma_bar_type"
message. This patch solve this problem.

Signed-off-by: Eunbong Song <eunb.song@samsung.com>
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/6747/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: defconfigs: add MTD_SPI_NOR (new dependency for M25P80)
Brian Norris [Thu, 1 May 2014 06:26:45 +0000 (23:26 -0700)]
MIPS: defconfigs: add MTD_SPI_NOR (new dependency for M25P80)

These defconfigs contain the CONFIG_M25P80 symbol, which is now
dependent on the MTD_SPI_NOR symbol. Add CONFIG_MTD_SPI_NOR to satisfy
the new dependency.

At the same time, drop the now-nonexistent CONFIG_MTD_CHAR symbol.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Cc: Huang Shijie <b32955@freescale.com>
Cc: Marek Vasut <marex@denx.de>
Cc: linux-mtd@lists.infradead.org
Patchwork: https://patchwork.linux-mips.org/patch/6878/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: Add __SANE_USERSPACE_TYPES__ to asm/types.h for LL64
Aaro Koskinen [Tue, 6 May 2014 12:55:43 +0000 (15:55 +0300)]
MIPS: Add __SANE_USERSPACE_TYPES__ to asm/types.h for LL64

Allow 64-bit userspace programs to use ll64 types. The define name
comes from commit 2c9c6ce0199a4d252e20c531cfdc9d24e39235c0 (powerpc:
Add __SANE_USERSPACE_TYPES__ to asm/types.h for LL64).

The patch allows to compile perf on MIPS64 and eliminates the following
warnings:

tests/attr.c:74:4: error: format '%llu' expects argument of type 'long
long unsigned int', but argument 6 has type '__u64' [-Werror=format=]

Signed-off-by: Aaro Koskinen <aaro.koskinen@nsn.com>
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/6890/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: Lemote 2F: cs5536: mfgpt: depend on !highres
Sebastian Andrzej Siewior [Tue, 13 May 2014 15:07:05 +0000 (17:07 +0200)]
MIPS: Lemote 2F: cs5536: mfgpt: depend on !highres

This timer does not support oneshot mode and as such the system remains
in periodic mode and won't support high res timers.
This patch adds a note about this in Kconfig and lets it depend on
!highres so users which want to use high timers don' stuck with this
timer.

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Cc: linux-mips@linux-mips.org
Cc: Hua Yan <yanh@lemote.com>
Cc: Huacai Chen <chenhc@lemote.com>
Cc: Alex Smith <alex.smith@imgtec.com>
Cc: Hongliang Tao <taohl@lemote.com>
Cc: Wu Zhangjin <wuzhangjin@gmail.com>
Patchwork: https://patchwork.linux-mips.org/patch/6935/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: SMP: Remove plat_smp_ops cpus_done method.
Ralf Baechle [Tue, 27 May 2014 08:56:23 +0000 (10:56 +0200)]
MIPS: SMP: Remove plat_smp_ops cpus_done method.

Nothing was using the method and there isn't any need for this hook.  This
leaves smp_cpus_done() empty for the moment.

As suggested by Paul Bolle <pebolle@tiscali.nl>.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: DTS: Fix missing device_type="memory" property in memory nodes
Leif Lindholm [Mon, 26 May 2014 13:42:49 +0000 (14:42 +0100)]
MIPS: DTS: Fix missing device_type="memory" property in memory nodes

A few platforms lack a 'device_type = "memory"' for their memory
nodes, relying on an old ppc quirk in order to discover its memory.
Add the missing data so that all parsing code can find memory nodes
correctly.

Signed-off-by: Leif Lindholm <leif.lindholm@linaro.org>
Acked-by: John Crispin <blogic@openwrt.org>
Signed-off-by: Grant Likely <grant.likely@linaro.org>
Cc: linux-mips@linux-mips.org
Cc: devicetree@vger.kernel.org
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: <stable@vger.kernel.org>
Cc: gaurav.minocha@alumni.ubc.ca
Patchwork: https://patchwork.linux-mips.org/patch/6989/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: SEAD3: Introduce the use of the managed version of kzalloc
Himangi Saraogi [Tue, 20 May 2014 18:09:42 +0000 (23:39 +0530)]
MIPS: SEAD3: Introduce the use of the managed version of kzalloc

This patch moves data allocated using kzalloc to managed data allocated
using devm_kzalloc and cleans now unnecessary kfrees in probe and remove
functions. Also, the now unnecessary labels out_mem and out are done
away with. The error handling code is moved under if and return 0 is now
at the end of the function.

The following Coccinelle semantic patch was used for making the change:

@platform@
identifier p, probefn, removefn;
@@
struct platform_driver p = {
  .probe = probefn,
  .remove = removefn,
};

@prb@
identifier platform.probefn, pdev;
expression e, e1, e2;
@@
probefn(struct platform_device *pdev, ...) {
  <+...
- e = kzalloc(e1, e2)
+ e = devm_kzalloc(&pdev->dev, e1, e2)
  ...
?-kfree(e);
  ...+>
}

@rem depends on prb@
identifier platform.removefn;
expression e;
@@
removefn(...) {
  <...
- kfree(e);
  ...>
}

Signed-off-by: Himangi Saraogi <himangi774@gmail.com>
Acked-by: Julia Lawall <julia.lawall@lip6.fr>
Tested-by: Markos Chandras <markos.chandras@imgtec.com>
Reviewed-by: Markos Chandras <markos.chandras@imgtec.com>
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/6977/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: malta: Remove 'maybe_unused' attribute from ememsize{, _str}
Markos Chandras [Fri, 23 May 2014 12:31:32 +0000 (13:31 +0100)]
MIPS: malta: Remove 'maybe_unused' attribute from ememsize{, _str}

First introduced in e6ca4e5bf11466b5e9423a1e4ea51a8216c4b9b6
"MIPS: malta: malta-memory: Add support for the 'ememsize' variable"
but it is not needed since both variables are visible to the compiler.

Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
Cc: <stable@vger.kernel.org> # v3.15+
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/6985/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: Kconfig: Make MIPS_MT_SMP a regular Kconfig symbol
Markos Chandras [Tue, 8 Apr 2014 10:59:10 +0000 (11:59 +0100)]
MIPS: Kconfig: Make MIPS_MT_SMP a regular Kconfig symbol

Following the removal of SMTC, MIPS_MT_SMP is the only available
MT/SMP option so make it a regular Kconfig symbol.

Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
Cc: linux-mips@linux-mips.org
Cc: Markos Chandras <markos.chandras@imgtec.com>
Patchwork: https://patchwork.linux-mips.org/patch/6720/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: MT: Remove SMTC support
Ralf Baechle [Fri, 23 May 2014 14:29:44 +0000 (16:29 +0200)]
MIPS: MT: Remove SMTC support

Nobody is maintaining SMTC anymore and there also seems to be no userbase.
Which is a pity - the SMTC technology primarily developed by Kevin D.
Kissell <kevink@paralogos.com> is an ingenious demonstration for the MT
ASE's power and elegance.

Based on Markos Chandras <Markos.Chandras@imgtec.com> patch
https://patchwork.linux-mips.org/patch/6719/ which while very similar did
no longer apply cleanly when I tried to merge it plus some additional
post-SMTC cleanup - SMTC was a feature as tricky to remove as it was to
merge once upon a time.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: Fix a typo error in AUDIT_ARCH definition
Huacai Chen [Wed, 21 May 2014 02:49:19 +0000 (10:49 +0800)]
MIPS: Fix a typo error in AUDIT_ARCH definition

Missing a "|" in AUDIT_ARCH_MIPSEL64N32 macro definition.

Signed-off-by: Huacai Chen <chenhc@lemote.com>
Reviewed-by: Markos Chandras <markos.chandras@imgtec.com>
Cc: John Crispin <john@phrozen.org>
Cc: Steven J. Hill <Steven.Hill@imgtec.com>
Cc: Aurelien Jarno <aurelien@aurel32.net>
Cc: linux-mips@linux-mips.org
Cc: Fuxin Zhang <zhangfx@lemote.com>
Cc: Zhangjin Wu <wuzhangjin@gmail.com>
Patchwork: https://patchwork.linux-mips.org/patch/6978/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: RM9000: Remove the now unused CPU_RM9000 definition.
Ralf Baechle [Thu, 22 May 2014 15:22:41 +0000 (17:22 +0200)]
MIPS: RM9000: Remove the now unused CPU_RM9000 definition.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: RM9000: Remove support for probing the CPU core.
Ralf Baechle [Thu, 22 May 2014 15:21:13 +0000 (17:21 +0200)]
MIPS: RM9000: Remove support for probing the CPU core.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: RM9000: Remove support for idle loop.
Ralf Baechle [Thu, 22 May 2014 15:19:20 +0000 (17:19 +0200)]
MIPS: RM9000: Remove support for idle loop.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: Ralink: Remove surviving RM9000 bits.
Ralf Baechle [Thu, 22 May 2014 15:13:59 +0000 (17:13 +0200)]
MIPS: Ralink: Remove surviving RM9000 bits.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: Remove code protected by CONFIG_SYS_HAS_CPU_RM9000.
Ralf Baechle [Thu, 22 May 2014 15:06:03 +0000 (17:06 +0200)]
MIPS: Remove code protected by CONFIG_SYS_HAS_CPU_RM9000.

RM9000 support was removed a while ago but this bit crept back in through
commit 69f24d17 [MIPS: Optimize current_cpu_type() for better code.] which
had been developed before but merged after RM9000 support was removed.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Reported-by: Paul Bolle <pebolle@tiscali.nl>
10 years agoMIPS: BCM1480: Remove checks for CONFIG_SIBYTE_BCM1480_PROF
Paul Bolle [Thu, 22 May 2014 09:24:19 +0000 (11:24 +0200)]
MIPS: BCM1480: Remove checks for CONFIG_SIBYTE_BCM1480_PROF

There are two checks for CONFIG_SIBYTE_BCM1480_PROF in the tree since
v2.6.15. The related Kconfig symbol has never been added to the tree. So
these checks have always evaluated to false. Besides, one of these
checks guards a call of sbprof_cpu_intr(). But that function is not
defined. Remove all this.

Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/6981/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: MSP71xx: Remove checks for two macros
Paul Bolle [Thu, 22 May 2014 09:34:51 +0000 (11:34 +0200)]
MIPS: MSP71xx: Remove checks for two macros

Since v2.6.39 there are checks for CONFIG_MSP_HAS_DUAL_USB and checks
for CONFIG_MSP_HAS_TSMAC in the code. The related Kconfig symbols have
never been added. These checks have evaluated to false for three years
now. Remove them and the code they have been hiding.

Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
Cc: Alan Stern <stern@rowland.harvard.edu>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-mips@linux-mips.org
Cc: linux-usb@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/6982/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: Octeon: Remove checks for CONFIG_CAVIUM_GDB
Paul Bolle [Tue, 20 May 2014 16:16:14 +0000 (18:16 +0200)]
MIPS: Octeon: Remove checks for CONFIG_CAVIUM_GDB

Three checks for CONFIG_CAVIUM_GDB were added in v2.6.29. But the
Kconfig symbol CAVIUM_GDB was never added to the tree. Remove these
checks.

Also remove the last reference to octeon_get_boot_debug_flag(). There is
no definition of that function anyway.

Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
Tested-by: Andreas Herrmann <andreas.herrmann@caviumnetworks.com>)
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/6976/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: PNX833x: Remove checks for CONFIG_I2C_PNX0105
Paul Bolle [Tue, 20 May 2014 11:42:03 +0000 (13:42 +0200)]
MIPS: PNX833x: Remove checks for CONFIG_I2C_PNX0105

Checks for CONFIG_I2C_PNX0105 were added in v2.6.28. But the related
Kconfig symbol has not been added to the tree. Remove these checks.

Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/6958/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: Remove CONFIG_PMCTWILED completely
Paul Bolle [Tue, 20 May 2014 11:34:36 +0000 (13:34 +0200)]
MIPS: Remove CONFIG_PMCTWILED completely

Commit 8b284dbc2200 ("MIPS: PNX Removing dead CONFIG_PMCTWILED") missed
one reference to CONFIG_PMCTWILED in the code. It also missed one
related reference to pmctwiled_setup(). Remove these references now.

Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/6957/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: Remove check for CONFIG_CAVIUM_REPORT_SINGLE_BIT_ECC
Paul Bolle [Tue, 20 May 2014 10:50:55 +0000 (12:50 +0200)]
MIPS: Remove check for CONFIG_CAVIUM_REPORT_SINGLE_BIT_ECC

A check for CONFIG_CAVIUM_REPORT_SINGLE_BIT_ECC was added in v2.6.29,
but without the related Kconfig symbol. Remove this check.

Also remove the test for an "ecc_verbose" kernel parameter. It is
undocumented and has no effect anyway.

Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/6955/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: c-r4k: Call R4600_HIT_CACHEOP_WAR_IMPL only for 32 byte cache lines.
Ralf Baechle [Thu, 22 May 2014 07:55:02 +0000 (09:55 +0200)]
MIPS: c-r4k: Call R4600_HIT_CACHEOP_WAR_IMPL only for 32 byte cache lines.

R4600_HIT_CACHEOP_WAR_IMPL is only needed on R4600 v1.6 and the R4600 has
data cache lines that are always 32 bytes so the call is pointless in
r4k_blast_dcache_page_dc64.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: math-emu: Reduce microMIPS bloat.
Ralf Baechle [Wed, 30 Apr 2014 09:09:44 +0000 (11:09 +0200)]
MIPS: math-emu: Reduce microMIPS bloat.

Move microMIPS32_to_MIPS32() to a separate file which only gets built
for mipsMIPS configurations; for other configurations the optimizer
eleminates calls to microMIPS32_to_MIPS32().

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: math-emu: Switch to using the MIPS rounding modes.
Ralf Baechle [Wed, 30 Apr 2014 09:21:55 +0000 (11:21 +0200)]
MIPS: math-emu: Switch to using the MIPS rounding modes.

Previously math-emu was using the IEEE-754 constants internally.  These
were differing by having the constants for rounding to +/- infinity
switched, so a conversion was necessary.  This would be entirely
avoidable if the MIPS constants were used throughout, so get rid of
the bloat.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: math-emu: Nuke alternative names for IEEE-754 rounding modes.
Ralf Baechle [Tue, 29 Apr 2014 23:17:19 +0000 (01:17 +0200)]
MIPS: math-emu: Nuke alternative names for IEEE-754 rounding modes.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: Sort out mm_isBranchInstr.
Ralf Baechle [Tue, 29 Apr 2014 13:21:24 +0000 (15:21 +0200)]
MIPS: Sort out mm_isBranchInstr.

mm_isBranchInstr() did reside in the math emu code even though it logically
is separate and also is used outside the math emu code.  In addition GCC 4.9.0
leaves the following unnnecessarily bloated function body for a non-microMIPS
configuration:

<mm_isBranchInstr>:
    105c:       afa50004        sw      a1,4(sp)
    1060:       afa60008        sw      a2,8(sp)
    1064:       afa7000c        sw      a3,12(sp)
    1068:       03e00008        jr      ra
    106c:       00001021        move    v0,zero

which stores arguments that are never going to be used on the stack frame.

Move mm_isBranchInstr() from cp1emu.c to branch.c, then split mm_isBranchInstr()
into a __mm_isBranchInstr() core and a mm_isBranchInstr() wrapper inline function
which only invokes __mm_isBranchInstr() on microMIPS configurations.

This shaves off 112 bytes off the kernel and improves code flow a bit.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: Disable MIPS16/microMIPS crap for platforms not supporting these ASEs.
Ralf Baechle [Mon, 28 Apr 2014 23:49:24 +0000 (01:49 +0200)]
MIPS: Disable MIPS16/microMIPS crap for platforms not supporting these ASEs.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: math-emu: Inline fpu_emulator_init_fpu()
Ralf Baechle [Mon, 28 Apr 2014 20:34:01 +0000 (22:34 +0200)]
MIPS: math-emu: Inline fpu_emulator_init_fpu()

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: math-emu: Cleanup coding style.
Ralf Baechle [Fri, 25 Apr 2014 23:49:14 +0000 (01:49 +0200)]
MIPS: math-emu: Cleanup coding style.

 o Only define variables in the outermost block
 o One empty line at most
 o Format comments as per CodingStyle
 o Update FSF address in licensing term comment
 o Spell FPU and MIPS in all capitals.
 o Remove ####-type of lines in comments.
 o Try to make things a bit most consistent between sp_*.c / dp_*.c files.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: math-emu: Cleanup definition of structs describe sp/dp floats.
Ralf Baechle [Fri, 25 Apr 2014 13:48:40 +0000 (15:48 +0200)]
MIPS: math-emu: Cleanup definition of structs describe sp/dp floats.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: math-emu: Rename get_rounding() functions.
Ralf Baechle [Fri, 25 Apr 2014 08:54:06 +0000 (10:54 +0200)]
MIPS: math-emu: Rename get_rounding() functions.

There are two version of get_rounding(), one for single precision, one
for double precision.  Add a ieee754sp_ rsp. ieee754dp_ prefix for
clarity.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: math-emu: Get rid of the useless parts of exception handling.
Ralf Baechle [Fri, 25 Apr 2014 01:19:57 +0000 (03:19 +0200)]
MIPS: math-emu: Get rid of the useless parts of exception handling.

All it really did was throw a printk for no obvious reason.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: math-emu: Move various objects into an ar library.
Ralf Baechle [Thu, 24 Apr 2014 23:52:46 +0000 (01:52 +0200)]
MIPS: math-emu: Move various objects into an ar library.

ieee754d.o contains only debug code and dp_sqrt.o and sp_sqrt.o contain
code which for MIPS I/II/III systems we don't want to link.  Again the
savings can be considerable for some systems:

$ mips-linux-size --totals ieee754d.o dp_sqrt.o sp_sqrt.o
   text    data     bss     dec     hex filename
   1624       0       0    1624     658 ieee754d.o
   2016       0       0    2016     7e0 dp_sqrt.o
    736       0       0     736     2e0 sp_sqrt.o
   4376       0       0    4376    1118 (TOTALS)

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: math-emu: Inline ieee754sp_issnan and ieee754dp_issnan.
Ralf Baechle [Thu, 24 Apr 2014 22:40:42 +0000 (00:40 +0200)]
MIPS: math-emu: Inline ieee754sp_issnan and ieee754dp_issnan.

Shaves another 16 bytes off but more importantly avoids function calls.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: math-emu: Remove unused code.
Ralf Baechle [Thu, 24 Apr 2014 22:29:50 +0000 (00:29 +0200)]
MIPS: math-emu: Remove unused code.

Shrinks the FPU emulator by 4528 bytes.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: math-emu: Remove unused ieee754sp_bestnan() and ieee754dp_bestnan().
Ralf Baechle [Tue, 22 Apr 2014 15:11:01 +0000 (17:11 +0200)]
MIPS: math-emu: Remove unused ieee754sp_bestnan() and ieee754dp_bestnan().

Both are unused since lmo commit fdffbafbb38723618626c70ffdc6ff9175cdffa2
[Lots of FPU bug fixes from Kjeld Borch Egevang.]

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: math-emu: Inline ieee754dp_finite and ieee754dp_finite().
Ralf Baechle [Tue, 22 Apr 2014 14:52:01 +0000 (16:52 +0200)]
MIPS: math-emu: Inline ieee754dp_finite and ieee754dp_finite().

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: math-emu: Eleminate duplicate definitions of identical macros.
Ralf Baechle [Tue, 22 Apr 2014 14:33:07 +0000 (16:33 +0200)]
MIPS: math-emu: Eleminate duplicate definitions of identical macros.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: math-emu: Use SPSIGN() rather than DPSIGN() in ieee754sp_sub().
Ralf Baechle [Tue, 22 Apr 2014 14:02:03 +0000 (16:02 +0200)]
MIPS: math-emu: Use SPSIGN() rather than DPSIGN() in ieee754sp_sub().

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: math-emu: Replace DP_MBITS with DP_FBITS and SP_MBITS with SP_FBITS.
Ralf Baechle [Tue, 22 Apr 2014 13:51:55 +0000 (15:51 +0200)]
MIPS: math-emu: Replace DP_MBITS with DP_FBITS and SP_MBITS with SP_FBITS.

Both were defined as 23 rsp. 52 though the mentissa is actually a bit more
than the fraction.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: math-emu: Call ieee754di_xcpt, not ieee754si_xcpt in ieee754dp_cmp.
Ralf Baechle [Tue, 22 Apr 2014 11:31:24 +0000 (13:31 +0200)]
MIPS: math-emu: Call ieee754di_xcpt, not ieee754si_xcpt in ieee754dp_cmp.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: math-emu: Cleanup stdarg usage including apparently bogus comment.
Ralf Baechle [Sat, 19 Apr 2014 23:20:08 +0000 (01:20 +0200)]
MIPS: math-emu: Cleanup stdarg usage including apparently bogus comment.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: math-emu: Remove #if 1 and dead code from its #else branch.
Ralf Baechle [Sat, 19 Apr 2014 21:01:34 +0000 (23:01 +0200)]
MIPS: math-emu: Remove #if 1 and dead code from its #else branch.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: math-emu: Cleanup ieee754si_indef() / ieee754di_indef().
Ralf Baechle [Sat, 19 Apr 2014 12:20:54 +0000 (14:20 +0200)]
MIPS: math-emu: Cleanup ieee754si_indef() / ieee754di_indef().

LONG_LONG_MAX is a symbol defined in <limits.h> which may not be available
so better rely on something provided by a kernel header.  While at it,
turn these function-like macros into inline functions.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: math-emu: Convert debug printks to pr_debug getting.
Ralf Baechle [Sat, 19 Apr 2014 12:03:37 +0000 (14:03 +0200)]
MIPS: math-emu: Convert debug printks to pr_debug getting.

And another bunch of #ifdefs bite the dust.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: math-emu: Get rid of unuable extended precision support.
Ralf Baechle [Sat, 19 Apr 2014 11:18:08 +0000 (13:18 +0200)]
MIPS: math-emu: Get rid of unuable extended precision support.

No usable functionality and nothig does ever define IEEE854_XP anyway.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: IP22: This platform may come with either MIPS III or MIPS IV CPUs.
Ralf Baechle [Fri, 25 Apr 2014 13:52:18 +0000 (15:52 +0200)]
MIPS: IP22: This platform may come with either MIPS III or MIPS IV CPUs.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: math-emu: Remove most ifdefery.
Ralf Baechle [Sat, 19 Apr 2014 11:11:37 +0000 (13:11 +0200)]
MIPS: math-emu: Remove most ifdefery.

Most of these tests should be runtime tests.  This also finally means
that on a MIPS III systems MIPS IV opcodes are going to result in an
exception as they're supposed to.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: math-emu: Turn macros into functions where possible.
Ralf Baechle [Fri, 18 Apr 2014 22:36:32 +0000 (00:36 +0200)]
MIPS: math-emu: Turn macros into functions where possible.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: math-emu: Harden ieee754int.h against multiple inclusion.
Ralf Baechle [Fri, 18 Apr 2014 22:15:40 +0000 (00:15 +0200)]
MIPS: math-emu: Harden ieee754int.h against multiple inclusion.

The header file had no include guards; this only happened to work because
the file only contains macro definitions and protypes.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: math-emu: Reformat code according to coding style.
Ralf Baechle [Wed, 16 Apr 2014 09:00:12 +0000 (11:00 +0200)]
MIPS: math-emu: Reformat code according to coding style.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: math-emu: Move all debug fs code to a separate file.
Ralf Baechle [Wed, 16 Apr 2014 00:46:11 +0000 (02:46 +0200)]
MIPS: math-emu: Move all debug fs code to a separate file.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
10 years agoMIPS: math-emu: Remove fine example of cargo cult programming.
Ralf Baechle [Wed, 16 Apr 2014 00:24:08 +0000 (02:24 +0200)]
MIPS: math-emu: Remove fine example of cargo cult programming.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>