Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

mcd_arm_define.h 2.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /*
  2. * Copyright (c) 2025, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2025-08-16 Rbb666 Unified ARM architecture definitions
  9. */
  10. #ifndef __MCD_ARM_DEFINE_H__
  11. #define __MCD_ARM_DEFINE_H__
  12. #include "arch/armv7m/registers.h"
  13. /* ARM Architecture Detection */
  14. #if defined(__aarch64__) || defined(_M_ARM64)
  15. #define MCD_ARM_ARCH_64BIT 1
  16. #define MCD_ARM_ARCH_32BIT 0
  17. #elif defined(__arm__) || defined(_M_ARM) || defined(__ARM_ARCH)
  18. #define MCD_ARM_ARCH_64BIT 0
  19. #define MCD_ARM_ARCH_32BIT 1
  20. #else
  21. #error "Unsupported ARM architecture"
  22. #endif
  23. /* Architecture-specific ELF definitions */
  24. #if MCD_ARM_ARCH_64BIT
  25. /* ARM64 (AArch64) definitions */
  26. #define MCOREDUMP_ELF_CLASS ELFCLASS64
  27. #define MCOREDUMP_ELF_ENDIAN ELFDATA2LSB
  28. #define MCOREDUMP_MACHINE EM_AARCH64
  29. #define MCOREDUMP_OSABI ELFOSABI_NONE
  30. #define MCOREDUMP_PRSTATUS_SIZE 392
  31. #define MCOREDUMP_FPREGSET_SIZE (32 * 16 + 8)
  32. #define MCD_PRSTATUS_REG_OFFSET 112
  33. /* Function mappings */
  34. #define fill_note_prstatus_desc arm64_fill_note_prstatus_desc
  35. #define fill_note_fpregset_desc arm64_fill_note_fpregset_desc
  36. #elif MCD_ARM_ARCH_32BIT
  37. /* ARM32 (AArch32) definitions */
  38. #define MCOREDUMP_ELF_CLASS ELFCLASS32
  39. #define MCOREDUMP_ELF_ENDIAN ELFDATA2LSB
  40. #define MCOREDUMP_MACHINE EM_ARM
  41. #define MCOREDUMP_OSABI ELFOSABI_ARM
  42. #define MCOREDUMP_PRSTATUS_SIZE 148
  43. #define MCOREDUMP_FPREGSET_SIZE (32 * 8 + 4)
  44. #define MCD_PRSTATUS_REG_OFFSET 72
  45. /* Function mappings */
  46. #define fill_note_prstatus_desc arm32_fill_note_prstatus_desc
  47. #define fill_note_fpregset_desc arm32_fill_note_fpregset_desc
  48. #endif /* MCD_ARM_ARCH_32BIT */
  49. /* Function declarations */
  50. #if MCD_ARM_ARCH_32BIT
  51. void arm32_fill_note_prstatus_desc(uint8_t *desc, core_regset_type *regset);
  52. void arm32_fill_note_fpregset_desc(uint8_t *desc, fp_regset_type *regset);
  53. #endif
  54. #if MCD_ARM_ARCH_64BIT
  55. void arm64_fill_note_prstatus_desc(uint8_t *desc, core_regset_type *regset);
  56. void arm64_fill_note_fpregset_desc(uint8_t *desc, fp_regset_type *regset);
  57. #endif
  58. #endif /* __MCD_ARM_DEFINE_H__ */