1. 27 Apr, 2018 1 commit
    • Masahiro Yamada's avatar
      types: use int-ll64 for both aarch32 and aarch64 · 0a2d5b43
      Masahiro Yamada authored
      Since commit 031dbb12
      
       ("AArch32: Add essential Arch helpers"),
      it is difficult to use consistent format strings for printf() family
      between aarch32 and aarch64.
      
      For example, uint64_t is defined as 'unsigned long long' for aarch32
      and as 'unsigned long' for aarch64.  Likewise, uintptr_t is defined
      as 'unsigned int' for aarch32, and as 'unsigned long' for aarch64.
      
      A problem typically arises when you use printf() in common code.
      
      One solution could be, to cast the arguments to a type long enough
      for both architectures.  For example, if 'val' is uint64_t type,
      like this:
      
        printf("val = %llx\n", (unsigned long long)val);
      
      Or, somebody may suggest to use a macro provided by <inttypes.h>,
      like this:
      
        printf("val = %" PRIx64 "\n", val);
      
      But, both would make the code ugly.
      
      The solution adopted in Linux kernel is to use the same typedefs for
      all architectures.  The fixed integer types in the kernel-space have
      been unified into int-ll64, like follows:
      
          typedef signed char           int8_t;
          typedef unsigned char         uint8_t;
      
          typedef signed short          int16_t;
          typedef unsigned short        uint16_t;
      
          typedef signed int            int32_t;
          typedef unsigned int          uint32_t;
      
          typedef signed long long      int64_t;
          typedef unsigned long long    uint64_t;
      
      [ Linux commit: 0c79a8e29b5fcbcbfd611daf9d500cfad8370fcf ]
      
      This gets along with the codebase shared between 32 bit and 64 bit,
      with the data model called ILP32, LP64, respectively.
      
      The width for primitive types is defined as follows:
      
                         ILP32           LP64
          int            32              32
          long           32              64
          long long      64              64
          pointer        32              64
      
      'long long' is 64 bit for both, so it is used for defining uint64_t.
      'long' has the same width as pointer, so for uintptr_t.
      
      We still need an ifdef conditional for (s)size_t.
      
      All 64 bit architectures use "unsigned long" size_t, and most 32 bit
      architectures use "unsigned int" size_t.  H8/300, S/390 are known as
      exceptions; they use "unsigned long" size_t despite their architecture
      is 32 bit.
      
      One idea for simplification might be to define size_t as 'unsigned long'
      across architectures, then forbid the use of "%z" string format.
      However, this would cause a distortion between size_t and sizeof()
      operator.  We have unknowledge about the native type of sizeof(), so
      we need a guess of it anyway.  I want the following formula to always
      return 1:
      
        __builtin_types_compatible_p(size_t, typeof(sizeof(int)))
      
      Fortunately, ARM is probably a majority case.  As far as I know, all
      32 bit ARM compilers use "unsigned int" size_t.
      Signed-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
      0a2d5b43
  2. 24 Apr, 2018 1 commit
  3. 11 Apr, 2018 3 commits
  4. 28 Mar, 2018 1 commit
  5. 27 Mar, 2018 1 commit
    • Joel Hutton's avatar
      Clean usage of void pointers to access symbols · 9f85f9e3
      Joel Hutton authored
      
      
      Void pointers have been used to access linker symbols, by declaring an
      extern pointer, then taking the address of it. This limits symbols
      values to aligned pointer values. To remove this restriction an
      IMPORT_SYM macro has been introduced, which declares it as a char
      pointer and casts it to the required type.
      
      Change-Id: I89877fc3b13ed311817bb8ba79d4872b89bfd3b0
      Signed-off-by: default avatarJoel Hutton <Joel.Hutton@Arm.com>
      9f85f9e3
  6. 26 Mar, 2018 1 commit
  7. 12 Mar, 2018 1 commit
    • Michael Brandl's avatar
      plat/hikey: boot memory layout to dedicated file · 4368ae07
      Michael Brandl authored
      
      
      Boot memory layout is specific for a platform, but should not be
      mixed up with other platform specific attributes. A separate file is
      much cleaner and better to compare with other platforms. Take a look
      at plat/poplar where it is done the same way.
      
      Moved hikey_def.h to system include folder and moved includes from
      hikey_def.h to more general platform_def.h.
      Signed-off-by: default avatarMichael Brandl <git@fineon.pw>
      4368ae07
  8. 06 Mar, 2018 2 commits
    • Haojian Zhuang's avatar
      hikey: fix build issue with CLANG · 84b589c9
      Haojian Zhuang authored
      
      
      plat/hisilicon/hikey/hikey_bl1_setup.c:565:47:
      error: value size does not match register size specified by the
      constraint and modifier [-Werror,-Wasm-operand-widths]
              __asm__ volatile ("mrs  %0, cpacr_el1" : "=r"(data));
      Signed-off-by: default avatarHaojian Zhuang <haojian.zhuang@linaro.org>
      84b589c9
    • Haojian Zhuang's avatar
      hikey960: fix build issue with CLANG · 056b3d49
      Haojian Zhuang authored
      
      
      plat/hisilicon/hikey960/drivers/pwrc/hisi_pwrc.c:290:20:
      error: unused function 'hisi_pdc_set_intmask' [-Werror,-Wunused-function]
      static inline void hisi_pdc_set_intmask(void *pdc_base_addr,
                         ^
      1 error generated.
      Makefile:605: recipe for target 'build/hikey960/release/bl31/hisi_pwrc.o' failed
      make: *** [build/hikey960/release/bl31/hisi_pwrc.o] Error 1
      Signed-off-by: default avatarHaojian Zhuang <haojian.zhuang@linaro.org>
      056b3d49
  9. 05 Mar, 2018 10 commits
  10. 27 Feb, 2018 1 commit
  11. 17 Feb, 2018 1 commit
  12. 07 Feb, 2018 6 commits
  13. 01 Feb, 2018 2 commits
  14. 30 Jan, 2018 1 commit
  15. 29 Jan, 2018 1 commit
  16. 27 Jan, 2018 1 commit
  17. 24 Jan, 2018 2 commits
  18. 22 Jan, 2018 3 commits
  19. 16 Jan, 2018 1 commit
    • Leo Yan's avatar
      Hikey960: Change CPU standby state for WFI · 4c8a5787
      Leo Yan authored
      
      
      At early time, the CPU CA73 retention state has been supported on
      Hikey960.  Later we found the system has the hang issue and for
      resolving this issue Hisilicon released new MCU firmware, but
      unfortunately the new MCU firmware has side effect and results in the
      CA73 CPU cannot really enter retention state and roll back to WFI state.
      
      After discussion we cannot see the possibility to enable CA73 retention
      state anymore on Hikey960, based on this conclusion we should remove
      this state supporting from ARM-TF and roll back to WFI state only.  We
      will commit one patch to remove CA73 CPU retention state in kernel DT
      binding as well.
      
      Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
      Cc: Haojian Zhuang <haojian.zhuang@linaro.org>
      Cc: Kevin Wang <jean.wangtao@linaro.org>
      Cc: Vincent Guittot <vincent.guittot@linaro.org>
      Signed-off-by: default avatarLeo Yan <leo.yan@linaro.org>
      4c8a5787