Skip to content
Snippets Groups Projects
  1. Dec 03, 2020
  2. Jul 23, 2020
  3. Jun 19, 2020
  4. May 04, 2020
  5. Apr 14, 2020
  6. Mar 19, 2020
  7. Mar 12, 2020
  8. Mar 10, 2020
  9. Mar 05, 2020
  10. Oct 18, 2019
    • Jiri Slaby's avatar
      linkage: Introduce new macros for assembler symbols · ffedeeb7
      Jiri Slaby authored
      
      Introduce new C macros for annotations of functions and data in
      assembly. There is a long-standing mess in macros like ENTRY, END,
      ENDPROC and similar. They are used in different manners and sometimes
      incorrectly.
      
      So introduce macros with clear use to annotate assembly as follows:
      
      a) Support macros for the ones below
         SYM_T_FUNC -- type used by assembler to mark functions
         SYM_T_OBJECT -- type used by assembler to mark data
         SYM_T_NONE -- type used by assembler to mark entries of unknown type
      
         They are defined as STT_FUNC, STT_OBJECT, and STT_NOTYPE
         respectively. According to the gas manual, this is the most portable
         way. I am not sure about other assemblers, so this can be switched
         back to %function and %object if this turns into a problem.
         Architectures can also override them by something like ", @function"
         if they need.
      
         SYM_A_ALIGN, SYM_A_NONE -- align the symbol?
         SYM_L_GLOBAL, SYM_L_WEAK, SYM_L_LOCAL -- linkage of symbols
      
      b) Mostly internal annotations, used by the ones below
         SYM_ENTRY -- use only if you have to (for non-paired symbols)
         SYM_START -- use only if you have to (for paired symbols)
         SYM_END -- use only if you have to (for paired symbols)
      
      c) Annotations for code
         SYM_INNER_LABEL_ALIGN -- only for labels in the middle of code
         SYM_INNER_LABEL -- only for labels in the middle of code
      
         SYM_FUNC_START_LOCAL_ALIAS -- use where there are two local names for
      	one function
         SYM_FUNC_START_ALIAS -- use where there are two global names for one
      	function
         SYM_FUNC_END_ALIAS -- the end of LOCAL_ALIASed or ALIASed function
      
         SYM_FUNC_START -- use for global functions
         SYM_FUNC_START_NOALIGN -- use for global functions, w/o alignment
         SYM_FUNC_START_LOCAL -- use for local functions
         SYM_FUNC_START_LOCAL_NOALIGN -- use for local functions, w/o
      	alignment
         SYM_FUNC_START_WEAK -- use for weak functions
         SYM_FUNC_START_WEAK_NOALIGN -- use for weak functions, w/o alignment
         SYM_FUNC_END -- the end of SYM_FUNC_START_LOCAL, SYM_FUNC_START,
      	SYM_FUNC_START_WEAK, ...
      
         For functions with special (non-C) calling conventions:
         SYM_CODE_START -- use for non-C (special) functions
         SYM_CODE_START_NOALIGN -- use for non-C (special) functions, w/o
      	alignment
         SYM_CODE_START_LOCAL -- use for local non-C (special) functions
         SYM_CODE_START_LOCAL_NOALIGN -- use for local non-C (special)
      	functions, w/o alignment
         SYM_CODE_END -- the end of SYM_CODE_START_LOCAL or SYM_CODE_START
      
      d) For data
         SYM_DATA_START -- global data symbol
         SYM_DATA_START_LOCAL -- local data symbol
         SYM_DATA_END -- the end of the SYM_DATA_START symbol
         SYM_DATA_END_LABEL -- the labeled end of SYM_DATA_START symbol
         SYM_DATA -- start+end wrapper around simple global data
         SYM_DATA_LOCAL -- start+end wrapper around simple local data
      
      ==========
      
      The macros allow to pair starts and ends of functions and mark functions
      correctly in the output ELF objects.
      
      All users of the old macros in x86 are converted to use these in further
      patches.
      
      Signed-off-by: default avatarJiri Slaby <jslaby@suse.cz>
      Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
      Acked-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
      Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Jonathan Corbet <corbet@lwn.net>
      Cc: Josh Poimboeuf <jpoimboe@redhat.com>
      Cc: Juergen Gross <jgross@suse.com>
      Cc: Len Brown <len.brown@intel.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: linux-arch@vger.kernel.org
      Cc: linux-doc@vger.kernel.org
      Cc: linux-kernel@vger.kernel.org
      Cc: linux-pm@vger.kernel.org
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Pavel Machek <pavel@ucw.cz>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Will Deacon <will@kernel.org>
      Cc: x86-ml <x86@kernel.org>
      Cc: xen-devel@lists.xenproject.org
      Link: https://lkml.kernel.org/r/20191011115108.12392-2-jslaby@suse.cz
      ffedeeb7
  11. Oct 10, 2019
  12. Aug 12, 2019
  13. Aug 08, 2019
    • Paul Cercueil's avatar
      doc: Add doc for the Ingenic TCU hardware · 97689a1a
      Paul Cercueil authored
      
      Add documentation about the Timer/Counter Unit (TCU) present in the
      Ingenic JZ47xx SoCs.
      
      The Timer/Counter Unit (TCU) in Ingenic JZ47xx SoCs is a multi-function
      hardware block. It features up to to eight channels, that can be used as
      counters, timers, or PWM.
      
      - JZ4725B, JZ4750, JZ4755 only have six TCU channels. The other SoCs all
        have eight channels.
      
      - JZ4725B introduced a separate channel, called Operating System Timer
        (OST). It is a 32-bit programmable timer. On JZ4770 and above, it is
        64-bit.
      
      - Each one of the TCU channels has its own clock, which can be reparented
        to three different clocks (pclk, ext, rtc), gated, and reclocked, through
        their TCSR register.
        * The watchdog and OST hardware blocks also feature a TCSR register with
          the same format in their register space.
        * The TCU registers used to gate/ungate can also gate/ungate the watchdog
          and OST clocks.
      
      - Each TCU channel works in one of two modes:
        * mode TCU1: channels cannot work in sleep mode, but are easier to
          operate.
        * mode TCU2: channels can work in sleep mode, but the operation is a bit
          more complicated than with TCU1 channels.
      
      - The mode of each TCU channel depends on the SoC used:
        * On the oldest SoCs (up to JZ4740), all of the eight channels operate in
          TCU1 mode.
        * On JZ4725B, channel 5 operates as TCU2, the others operate as TCU1.
        * On newest SoCs (JZ4750 and above), channels 1-2 operate as TCU2, the
          others operate as TCU1.
      
      - Each channel can generate an interrupt. Some channels share an interrupt
        line, some don't, and this changes between SoC versions:
        * on older SoCs (JZ4740 and below), channel 0 and channel 1 have their
          own interrupt line; channels 2-7 share the last interrupt line.
        * On JZ4725B, channel 0 has its own interrupt; channels 1-5 share one
          interrupt line; the OST uses the last interrupt line.
        * on newer SoCs (JZ4750 and above), channel 5 has its own interrupt;
          channels 0-4 and (if eight channels) 6-7 all share one interrupt line;
          the OST uses the last interrupt line.
      
      Signed-off-by: default avatarPaul Cercueil <paul@crapouillou.net>
      Tested-by: default avatarMathieu Malaterre <malat@debian.org>
      Tested-by: default avatarArtur Rojek <contact@artur-rojek.eu>
      Signed-off-by: default avatarPaul Burton <paul.burton@mips.com>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: James Hogan <jhogan@kernel.org>
      Cc: Jonathan Corbet <corbet@lwn.net>
      Cc: Lee Jones <lee.jones@linaro.org>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Michael Turquette <mturquette@baylibre.com>
      Cc: Stephen Boyd <sboyd@kernel.org>
      Cc: Jason Cooper <jason@lakedaemon.net>
      Cc: Marc Zyngier <marc.zyngier@arm.com>
      Cc: Rob Herring <robh+dt@kernel.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: devicetree@vger.kernel.org
      Cc: linux-kernel@vger.kernel.org
      Cc: linux-doc@vger.kernel.org
      Cc: linux-mips@vger.kernel.org
      Cc: linux-clk@vger.kernel.org
      Cc: od@zcrc.me
      97689a1a
  14. Jul 31, 2019
  15. Jul 17, 2019
  16. Jul 15, 2019
  17. Jul 08, 2019
  18. Jun 20, 2019
  19. Jun 14, 2019
  20. May 30, 2019
  21. May 08, 2019
  22. Apr 25, 2019
  23. Apr 17, 2019
Loading