You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

90 lines
3.3 KiB

  1. /***************************************************************************
  2. * Copyright (C) 2005 by Dominic Rath *
  3. * Dominic.Rath@gmx.de *
  4. * *
  5. * Copyright (C) 2006 by Magnus Lundin *
  6. * lundin@mlu.mine.nu *
  7. * *
  8. * Copyright (C) 2008 by Spencer Oliver *
  9. * spen@spen-soft.co.uk *
  10. * *
  11. * Copyright (C) 2009 by Dirk Behme *
  12. * dirk.behme@gmail.com - copy from cortex_m3 *
  13. * *
  14. * This program is free software; you can redistribute it and/or modify *
  15. * it under the terms of the GNU General Public License as published by *
  16. * the Free Software Foundation; either version 2 of the License, or *
  17. * (at your option) any later version. *
  18. * *
  19. * This program is distributed in the hope that it will be useful, *
  20. * but WITHOUT ANY WARRANTY; without even the implied warranty of *
  21. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
  22. * GNU General Public License for more details. *
  23. * *
  24. * You should have received a copy of the GNU General Public License *
  25. * along with this program; if not, write to the *
  26. * Free Software Foundation, Inc., *
  27. * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
  28. ***************************************************************************/
  29. #ifndef CORTEX_A8_H
  30. #define CORTEX_A8_H
  31. #include "armv7a.h"
  32. #define CORTEX_A8_COMMON_MAGIC 0x411fc082
  33. #define CPUDBG_CPUID 0xD00
  34. #define CPUDBG_CTYPR 0xD04
  35. #define CPUDBG_TTYPR 0xD0C
  36. #define CPUDBG_LOCKACCESS 0xFB0
  37. #define CPUDBG_LOCKSTATUS 0xFB4
  38. #define BRP_NORMAL 0
  39. #define BRP_CONTEXT 1
  40. #define CORTEX_A8_PADDRDBG_CPU_SHIFT 13
  41. struct cortex_a8_brp {
  42. int used;
  43. int type;
  44. uint32_t value;
  45. uint32_t control;
  46. uint8_t BRPn;
  47. };
  48. struct cortex_a8_common {
  49. int common_magic;
  50. struct arm_jtag jtag_info;
  51. /* Context information */
  52. uint32_t cpudbg_dscr;
  53. /* Saved cp15 registers */
  54. uint32_t cp15_control_reg;
  55. /* latest cp15 register value written and cpsr processor mode */
  56. uint32_t cp15_control_reg_curr;
  57. enum arm_mode curr_mode;
  58. /* Breakpoint register pairs */
  59. int brp_num_context;
  60. int brp_num;
  61. int brp_num_available;
  62. struct cortex_a8_brp *brp_list;
  63. /* Use cortex_a8_read_regs_through_mem for fast register reads */
  64. int fast_reg_read;
  65. struct armv7a_common armv7a_common;
  66. };
  67. static inline struct cortex_a8_common *
  68. target_to_cortex_a8(struct target *target)
  69. {
  70. return container_of(target->arch_info, struct cortex_a8_common, armv7a_common.arm);
  71. }
  72. #endif /* CORTEX_A8_H */