cpu.h 738 B

1234567891011121314151617181920212223242526
  1. /* SPDX-License-Identifier: GPL-2.0+ */
  2. /*
  3. * Copyright 2018 NXP
  4. */
  5. #define MIDR_PARTNUM_CORTEX_A35 0xD04
  6. #define MIDR_PARTNUM_CORTEX_A53 0xD03
  7. #define MIDR_PARTNUM_CORTEX_A72 0xD08
  8. #define MIDR_PARTNUM_SHIFT 0x4
  9. #define MIDR_PARTNUM_MASK (0xFFF << 0x4)
  10. static inline unsigned int read_midr(void)
  11. {
  12. unsigned long val;
  13. asm volatile("mrs %0, midr_el1" : "=r" (val));
  14. return val;
  15. }
  16. #define is_cortex_a35() (((read_midr() & MIDR_PARTNUM_MASK) >> \
  17. MIDR_PARTNUM_SHIFT) == MIDR_PARTNUM_CORTEX_A35)
  18. #define is_cortex_a53() (((read_midr() & MIDR_PARTNUM_MASK) >> \
  19. MIDR_PARTNUM_SHIFT) == MIDR_PARTNUM_CORTEX_A53)
  20. #define is_cortex_a72() (((read_midr() & MIDR_PARTNUM_MASK) >>\
  21. MIDR_PARTNUM_SHIFT) == MIDR_PARTNUM_CORTEX_A72)