1. 28 6月, 2016 1 次提交
    • V
      ARC: unwind: ensure that .debug_frame is generated (vs. .eh_frame) · f52e126c
      Vineet Gupta 提交于
      With recent binutils update to support dwarf CFI pseudo-ops in gas, we
      now get .eh_frame vs. .debug_frame. Although the call frame info is
      exactly the same in both, the CIE differs, which the current kernel
      unwinder can't cope with.
      
      This broke both the kernel unwinder as well as loadable modules (latter
      because of a new unhandled relo R_ARC_32_PCREL from .rela.eh_frame in
      the module loader)
      
      The ideal solution would be to switch unwinder to .eh_frame.
      For now however we can make do by just ensureing .debug_frame is
      generated by removing -fasynchronous-unwind-tables
      
       .eh_frame    generated with -gdwarf-2 -fasynchronous-unwind-tables
       .debug_frame generated with -gdwarf-2
      
      Fixes STAR 9001058196
      
      Cc: stable@vger.kernel.org
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      f52e126c
  2. 30 5月, 2016 1 次提交
  3. 09 5月, 2016 1 次提交
  4. 18 3月, 2016 1 次提交
    • V
      ARC: build: Turn off -Wmaybe-uninitialized for ARC gcc 4.8 · a69fe1a2
      Vineet Gupta 提交于
      linux-next has been reporting gazillion warnings for ARC build and
      I finally decided to take a bite:
      
      http://kisskb.ellerman.id.au/kisskb/buildresult/12638735/
      
      Most of the them are due to -Wmaybe-uninitialized
      
      | ../kernel/sysctl.c: In function '__do_proc_doulongvec_minmax':
      | ../kernel/sysctl.c:1928:12: warning: 'p' may be used uninitialized in this function [-Wmaybe-uninitialized]
      |   ret = tmp - *buf;
      |            ^
      | ../kernel/sysctl.c:2342:29: note: 'p' was declared here
      |  char *kbuf = NULL, *p;
      |                     ^
      | ...
      | ...
      
      Cursory look at code seemed fine and a definite gcc false positive in say
      kernel/sysctl.c
      
      Mystery was why only for ARC (and not with ARM linaro toolchain based
      off same gcc 4.8). Turns out that -O3 (default for ARC) triggers these
      and if I enable -O3 for ARM kernel build, I see the same splat.
      
      I initially wanted to disable this only for gcc 4.8, but Arnd reported
      it is seen even on gcc 6.0 for ARM with -O3. Thus better to disable
      this independent of gcc version.
      
      Cc: Claudiu Zissulescu <Claudiu.Zissulescu@synopsys.com>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Michal Marek <mmarek@suse.cz>
      Cc: Geert Uytterhoeven <geert@linux-m68k.org>
      Cc: linux-kbuild@vger.kernel.org
      Cc: linux-kernel@vger.kernel.org
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      a69fe1a2
  5. 12 3月, 2016 1 次提交
    • V
      ARC: build: Better way to detect ISA compatible toolchain · 20d78037
      Vineet Gupta 提交于
      ARC architecture has 2 instruction sets: ARCompact/ARCv2.
      While same gcc supports compiling for either (using appropriate toggles),
      we can't use the same toolchain to build kernel because libgcc needs
      to be unique and the toolchian (uClibc based) is not multilibed.
      
      uClibc toolchain is convenient since it allows all userspace and
      kernel to be built with a single install for an ISA.
      
      This however means 2 gnu installs (with same triplet prefix) are needed
      for building for 2 ISA and need to be in PATH.
      As developers we keep switching the builds, but would occassionally fail
      to update the PATH leading to usage of wrong tools. And this would only
      show up at the end of kernel build when linking incompatible libgcc.
      
      So the initial solution was to have gcc define a special preprocessor macro
      DEFAULT_CPU_xxx which is unique for default toolchain configuration.
      Claudiu proposed using grep for an existing preprocessor macro which is
      again uniquely defined per ISA.
      
      Cc: Michal Marek <mmarek@suse.cz>
      Suggested-by: NClaudiu Zissulescu <claziss@synopsys.com>
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      20d78037
  6. 11 3月, 2016 1 次提交
  7. 18 2月, 2016 1 次提交
  8. 21 12月, 2015 1 次提交
    • V
      ARC: Fix linking errors with CONFIG_MODULE + CONFIG_CC_OPTIMIZE_FOR_SIZE · 07fd7d4b
      Vineet Gupta 提交于
      At -Os, ARC gcc generates millicode thunk for function prologue/epilogue,
      which are served by libgcc.
      
      Modules historically are NOT linked with libgcc to avoid code bloat, reducing
      runtime relocation fixups etc. I even once tried doing that but got lost
      in makefile intricacies.
      
      This means modules at -Os don't get the millicode thunks, causing build
      failures below:
      
      | MODPOST 5 modules
      | ERROR: "__ld_r13_to_r18" [crypto/sha256_generic.ko] undefined!
      | ERROR: "__ld_r13_to_r18_ret" [crypto/sha256_generic.ko] undefined!
      | ERROR: "__st_r13_to_r18" [crypto/sha256_generic.ko] undefined!
      | ERROR: "__ld_r13_to_r17_ret" [crypto/sha256_generic.ko] undefined!
      | ERROR: "__st_r13_to_r17" [crypto/sha256_generic.ko] undefined!
      | ERROR: "__ld_r13_to_r16_ret" [crypto/sha256_generic.ko] undefined!
      | ERROR: "__st_r13_to_r16" [crypto/sha256_generic.ko] undefined!
      |....
      |....
      
      Workaround that by inhibiting millicode thunks for loadable modules
      
      Fixes STAR 9000641864:
      ("Linux built with optimizations for size emits errors for modules")
      Reported-by: NAnton Kolesov <akolesov@synosys.com>
      Cc: Michal Marek <mmarek@suse.cz>
      Cc: linux-kernel@vger.kernel.org
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      07fd7d4b
  9. 28 10月, 2015 1 次提交
  10. 20 7月, 2015 1 次提交
  11. 06 7月, 2015 1 次提交
    • V
      ARC: Override toplevel default -O2 with -O3 · 97709069
      Vineet Gupta 提交于
      ARC kernels have historically been built with -O3, despite top level
      Makefile defaulting to -O2. This was facilitated by implicitly ordering
      of arch makefile include AFTER top level assigned -O2.
      
      An upstream fix to top level a1c48bb1 ("Makefile: Fix unrecognized
      cross-compiler command line options") changed the ordering, making ARC
      -O3 defunct.
      
      Fix that by NOT relying on any ordering whatsoever and use the proper
      arch override facility now present in kbuild (ARCH_*FLAGS)
      
      Depends-on: ("kbuild: Allow arch Makefiles to override {cpp,ld,c}flags")
      Suggested-by: NMichal Marek <mmarek@suse.cz>
      Cc: Geert Uytterhoeven <geert@linux-m68k.org>
      Cc: stable@vger.kernel.org # 3.16+
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      97709069
  12. 28 6月, 2015 2 次提交
  13. 22 6月, 2015 1 次提交
    • V
      ARCv2: Support for ARCv2 ISA and HS38x cores · 1f6ccfff
      Vineet Gupta 提交于
      The notable features are:
          - SMP configurations of upto 4 cores with coherency
          - Optional L2 Cache and IO-Coherency
          - Revised Interrupt Architecture (multiple priorites, reg banks,
              auto stack switch, auto regfile save/restore)
          - MMUv4 (PIPT dcache, Huge Pages)
          - Instructions for
      	* 64bit load/store: LDD, STD
      	* Hardware assisted divide/remainder: DIV, REM
      	* Function prologue/epilogue: ENTER_S, LEAVE_S
      	* IRQ enable/disable: CLRI, SETI
      	* pop count: FFS, FLS
      	* SETcc, BMSKN, XBFU...
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      1f6ccfff
  14. 19 6月, 2015 3 次提交
  15. 19 5月, 2015 1 次提交
  16. 17 12月, 2014 1 次提交
  17. 13 10月, 2014 1 次提交
  18. 27 6月, 2013 1 次提交
    • V
      ARC: Adjustments for gcc 4.8 · 5a45da02
      Vineet Gupta 提交于
      * DWARF unwinder related
        + Force DWARF2 compliant .debug_frame (gcc 4.8 defaults to DWARF4
          which kernel unwinder can't grok).
        + Discard the additional .eh_frame generated
        + Discard the dwarf4 debug info generated by -gdwarf-2 for normal
          no debug case
      
      * 4.8 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: NVineet Gupta <vgupta@synopsys.com>
      5a45da02
  19. 22 6月, 2013 1 次提交
  20. 07 5月, 2013 1 次提交
  21. 09 4月, 2013 3 次提交
  22. 16 2月, 2013 6 次提交
    • V
      ARC: [Review] Multi-platform image #4: Isolate platform headers · e97ff121
      Vineet Gupta 提交于
      -Top level ARC makefile removes -I for platform headers
      -asm/irq.h no longer includes plat/irq.h
      
      -platform makefile adds -I for it's specfic platform headers
      -platform code to directly include it's plat/irq.h
      
      -Linker script needed plat/memmap.h for CCM info, already in .config
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Acked-by: NArnd Bergmann <arnd@arndb.de>
      e97ff121
    • V
      af617428
    • V
      ARC: SMP support · 41195d23
      Vineet Gupta 提交于
      ARC common code to enable a SMP system + ISS provided SMP extensions.
      
      ARC700 natively lacks SMP support, hence some of the core features are
      are only enabled if SoCs have the necessary h/w pixie-dust. This
      includes:
      -Inter Processor Interrupts (IPI)
      -Cache coherency
      -load-locked/store-conditional
      ...
      
      The low level exception handling would be completely broken in SMP
      because we don't have hardware assisted stack switching. Thus a fair bit
      of this code is repurposing the MMU_SCRATCH reg for event handler
      prologues to keep them re-entrant.
      
      Many thanks to Rajeshwar Ranga for his initial "major" contributions to
      SMP Port (back in 2008), and to Noam Camus and Gilad Ben-Yossef for help
      with resurrecting that in 3.2 kernel (2012).
      
      Note that this platform code is again singleton design pattern - so
      multiple SMP platforms won't build at the moment - this deficiency is
      addressed in subsequent patches within this series.
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Rajeshwar Ranga <rajeshwar.ranga@gmail.com>
      Cc: Noam Camus <noamc@ezchip.com>
      Cc: Gilad Ben-Yossef <gilad@benyossef.com>
      41195d23
    • V
      ARC: OProfile support · 769bc1fd
      Vineet Gupta 提交于
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      Cc: Robert Richter <rric@kernel.org>
      Cc: oprofile-list@lists.sf.net
      Reviewed-by: NJames Hogan <james.hogan@imgtec.com>
      769bc1fd
    • V
      ARC: [optim] Cache "current" in Register r25 · 080c3747
      Vineet Gupta 提交于
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      080c3747
    • V
      ARC: [DeviceTree] Basic support · 999159a5
      Vineet Gupta 提交于
      This is minimal infrastructure needed for devicetree work.
      It uses an a sample "skeleton" devicetree - embedded in kernel image -
      to print the board, manufacturer by parsing the top-level "compatible"
      string.
      
      As of now we don't need any additional "board" specific "machine_desc".
      
      TODO: support interpreting the command line as boot-loader passed dtb
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Grant Likely <grant.likely@secretlab.ca>
      Cc: devicetree-discuss@lists.ozlabs.org
      Cc: Rob Herring <rob.herring@calxeda.com>
      Cc: James Hogan <james.hogan@imgtec.com>
      Reviewed-by: NRob Herring <rob.herring@calxeda.com>
      Reviewed-by: NJames Hogan <james.hogan@imgtec.com>
      999159a5
  23. 11 2月, 2013 1 次提交
    • V
      ARC: Build system: Makefiles, Kconfig, Linker script · cfdbc2e1
      Vineet Gupta 提交于
      Arnd in his review pointed out that arch Kconfig organisation has several
      deficiencies:
      
      * Build time entries for things which can be runtime extracted from DT
        (e.g. SDRAM size, core clk frequency..)
      * Not multi-platform-image-build friendly (choice .. endchoice constructs)
      * cpu variants support (750/770) is exclusive.
      
      The first 2 have been fixed in subsequent patches.
      Due to the nature of the 750 and 770, it is not possible to build for
      both together, w/o special runtime glue code which would hurt
      performance.
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Sam Ravnborg <sam@ravnborg.org>
      Acked-by: NSam Ravnborg <sam@ravnborg.org>
      cfdbc2e1