ARC: Add support for nSIM OSCI System C model

This adds support for an ARC Virtual Platform. This platform is based on the
System C standard promoted by the OSCI (Open System C Initiative) and uses
nSIM to simulate the ARC CPU core itself.

Users can build a virtual SoC by combining System C models of peripherals
and CPU cores.

Signed-off-by: Mischa Jonker <mjonker@synopsys.com>
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
fb: add support for simple ARC PGU frame buffer

Adds support for the System C frame buffer device in the nSIM OSCI
model. It supports just one mode right now: 640x480x24.

Signed-off-by: Mischa Jonker <mjonker@synopsys.com>
net: Add OSCI LAN network driver

The OSCI LAN network driver is based on earlier work by EZchip. It enables
support for a simple Ethernet interface in the nSIM OSCI model. The driver
has been changed to support non-BE and device tree.

Signed-off-by: Mischa Jonker <mjonker@synopsys.com>
ARC: [nsimosci] Change .dts to use generic 8250 UART

The Synopsys APB DW UART has a couple of special features that are not
in the System C model. In 3.8, the 8250_dw driver didn't really use these
features, but from 3.9 onwards, the 8250_dw driver has become incompatible
with our model.

Signed-off-by: Mischa Jonker <mjonker@synopsys.com>
ARC: [nsimosci] Add workaround for inaccuracy host timers with nSIM

Signed-off-by: Mischa Jonker <mjonker@synopsys.com>
ARC: [nsimosci] Update defconfig

Signed-off-by: Mischa Jonker <mjonker@synopsys.com>
ARC: [plat-arcfpga] Make #ifdef ARC_SERIAL* clauses sane

This fixes the following:
- CONFIG_ARC_SERIAL_BAUD is only defined when CONFIG_SERIAL_ARC is defined.
  Make sure that it isn't referenced otherwise.
- There is no use for initializing arc_uart_info[] when CONFIG_SERIAL_ARC is
  not defined.
- CONFIG_SERIAL_ARC_MODULE does not exist, so get rid of it.

Signed-off-by: Mischa Jonker <mjonker@synopsys.com>
perf: add const qualifier to perf_pmu_register's 'name' arg

Signed-off-by: Mischa Jonker <mjonker@synopsys.com>
ARC: Add perf support

This adds basic perf support for ARC. Most PERF_COUNT_HW* events are
supported now. Cache events and callchains are not (yet).

Signed-off-by: Mischa Jonker <mjonker@synopsys.com>
ARC: perf: Move constants etc to header file

Signed-off-by: Mischa Jonker <mjonker@synopsys.com>
ARC: Add ARC Tux logo

Signed-off-by: Mischa Jonker <mischa.jonker@synopsys.com>
Input: arc_ps2 - add support for device tree

Add match table for device tree binding and dts binding doc.

Signed-off-by: Mischa Jonker <mjonker@synopsys.com>
ARC: [mm] Assume pagecache page dirty by default

Similar to ARM/SH

Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
ARC: [mm] Make stack/heap Non-executable by default

1. Makes this security feature ON by default rather than OFF before.

2. Applications can use mprotect() to selectively override this.

3. ELF binaries have a GNU_STACK segment which can easily override the
   kernel default permissions.
   For nested-functions/trampolines, gcc already auto-enables executable
   stack in elf. Others needing this can use -Wl,--execstack option.

Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
ARC: Adjustments for gcc 4.8

* Force DWARF2 compliant unwind info in .debug_frame (vs. default DW4)
  as kernel unwinder can only grok DW2.
* Side-effect of above is additional debug_info which we discard now
* New gcc already uses arc600 multilibs for -mno-mpy
* switch to using uclibc compiler (to get -mmedium-calls and -mno-sdata)
  and also since buildroot can only use 1 toolchain

Signed-off-by: Vineet Gupta <vgupta@synopsys.com>