home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / avr32 / include / asm / ocd.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  14.4 KB  |  544 lines

  1. /*
  2.  * AVR32 OCD Interface and register definitions
  3.  *
  4.  * Copyright (C) 2004-2007 Atmel Corporation
  5.  *
  6.  * This program is free software; you can redistribute it and/or modify
  7.  * it under the terms of the GNU General Public License version 2 as
  8.  * published by the Free Software Foundation.
  9.  */
  10. #ifndef __ASM_AVR32_OCD_H
  11. #define __ASM_AVR32_OCD_H
  12.  
  13. /* OCD Register offsets. Abbreviations used below:
  14.  *
  15.  *      BP      Breakpoint
  16.  *      Comm    Communication
  17.  *      DT      Data Trace
  18.  *      PC      Program Counter
  19.  *      PID     Process ID
  20.  *      R/W     Read/Write
  21.  *      WP      Watchpoint
  22.  */
  23. #define OCD_DID                0x0000  /* Device ID */
  24. #define OCD_DC                0x0008  /* Development Control */
  25. #define OCD_DS                0x0010  /* Development Status */
  26. #define OCD_RWCS            0x001c  /* R/W Access Control */
  27. #define OCD_RWA                0x0024  /* R/W Access Address */
  28. #define OCD_RWD                0x0028  /* R/W Access Data */
  29. #define OCD_WT                0x002c  /* Watchpoint Trigger */
  30. #define OCD_DTC                0x0034  /* Data Trace Control */
  31. #define OCD_DTSA0            0x0038  /* DT Start Addr Channel 0 */
  32. #define OCD_DTSA1            0x003c  /* DT Start Addr Channel 1 */
  33. #define OCD_DTEA0            0x0048  /* DT End Addr Channel 0 */
  34. #define OCD_DTEA1            0x004c  /* DT End Addr Channel 1 */
  35. #define OCD_BWC0A            0x0058  /* PC BP/WP Control 0A */
  36. #define OCD_BWC0B            0x005c  /* PC BP/WP Control 0B */
  37. #define OCD_BWC1A            0x0060  /* PC BP/WP Control 1A */
  38. #define OCD_BWC1B            0x0064  /* PC BP/WP Control 1B */
  39. #define OCD_BWC2A            0x0068  /* PC BP/WP Control 2A */
  40. #define OCD_BWC2B            0x006c  /* PC BP/WP Control 2B */
  41. #define OCD_BWC3A            0x0070  /* Data BP/WP Control 3A */
  42. #define OCD_BWC3B            0x0074  /* Data BP/WP Control 3B */
  43. #define OCD_BWA0A            0x0078  /* PC BP/WP Address 0A */
  44. #define OCD_BWA0B            0x007c  /* PC BP/WP Address 0B */
  45. #define OCD_BWA1A            0x0080  /* PC BP/WP Address 1A */
  46. #define OCD_BWA1B            0x0084  /* PC BP/WP Address 1B */
  47. #define OCD_BWA2A            0x0088  /* PC BP/WP Address 2A */
  48. #define OCD_BWA2B            0x008c  /* PC BP/WP Address 2B */
  49. #define OCD_BWA3A            0x0090  /* Data BP/WP Address 3A */
  50. #define OCD_BWA3B            0x0094  /* Data BP/WP Address 3B */
  51. #define OCD_NXCFG            0x0100  /* Nexus Configuration */
  52. #define OCD_DINST            0x0104  /* Debug Instruction */
  53. #define OCD_DPC                0x0108  /* Debug Program Counter */
  54. #define OCD_CPUCM            0x010c  /* CPU Control Mask */
  55. #define OCD_DCCPU            0x0110  /* Debug Comm CPU */
  56. #define OCD_DCEMU            0x0114  /* Debug Comm Emulator */
  57. #define OCD_DCSR            0x0118  /* Debug Comm Status */
  58. #define OCD_PID                0x011c  /* Ownership Trace PID */
  59. #define OCD_EPC0            0x0120  /* Event Pair Control 0 */
  60. #define OCD_EPC1            0x0124  /* Event Pair Control 1 */
  61. #define OCD_EPC2            0x0128  /* Event Pair Control 2 */
  62. #define OCD_EPC3            0x012c  /* Event Pair Control 3 */
  63. #define OCD_AXC                0x0130  /* AUX port Control */
  64.  
  65. /* Bits in DID */
  66. #define OCD_DID_MID_START        1
  67. #define OCD_DID_MID_SIZE        11
  68. #define OCD_DID_PN_START        12
  69. #define OCD_DID_PN_SIZE            16
  70. #define OCD_DID_RN_START        28
  71. #define OCD_DID_RN_SIZE            4
  72.  
  73. /* Bits in DC */
  74. #define OCD_DC_TM_START            0
  75. #define OCD_DC_TM_SIZE            2
  76. #define OCD_DC_EIC_START        3
  77. #define OCD_DC_EIC_SIZE            2
  78. #define OCD_DC_OVC_START        5
  79. #define OCD_DC_OVC_SIZE            3
  80. #define OCD_DC_SS_BIT            8
  81. #define OCD_DC_DBR_BIT            12
  82. #define OCD_DC_DBE_BIT            13
  83. #define OCD_DC_EOS_START        20
  84. #define OCD_DC_EOS_SIZE            2
  85. #define OCD_DC_SQA_BIT            22
  86. #define OCD_DC_IRP_BIT            23
  87. #define OCD_DC_IFM_BIT            24
  88. #define OCD_DC_TOZ_BIT            25
  89. #define OCD_DC_TSR_BIT            26
  90. #define OCD_DC_RID_BIT            27
  91. #define OCD_DC_ORP_BIT            28
  92. #define OCD_DC_MM_BIT            29
  93. #define OCD_DC_RES_BIT            30
  94. #define OCD_DC_ABORT_BIT        31
  95.  
  96. /* Bits in DS */
  97. #define OCD_DS_SSS_BIT            0
  98. #define OCD_DS_SWB_BIT            1
  99. #define OCD_DS_HWB_BIT            2
  100. #define OCD_DS_HWE_BIT            3
  101. #define OCD_DS_STP_BIT            4
  102. #define OCD_DS_DBS_BIT            5
  103. #define OCD_DS_BP_START            8
  104. #define OCD_DS_BP_SIZE            8
  105. #define OCD_DS_INC_BIT            24
  106. #define OCD_DS_BOZ_BIT            25
  107. #define OCD_DS_DBA_BIT            26
  108. #define OCD_DS_EXB_BIT            27
  109. #define OCD_DS_NTBF_BIT            28
  110.  
  111. /* Bits in RWCS */
  112. #define OCD_RWCS_DV_BIT            0
  113. #define OCD_RWCS_ERR_BIT        1
  114. #define OCD_RWCS_CNT_START        2
  115. #define OCD_RWCS_CNT_SIZE        14
  116. #define OCD_RWCS_CRC_BIT        19
  117. #define OCD_RWCS_NTBC_START        20
  118. #define OCD_RWCS_NTBC_SIZE        2
  119. #define OCD_RWCS_NTE_BIT        22
  120. #define OCD_RWCS_NTAP_BIT        23
  121. #define OCD_RWCS_WRAPPED_BIT        24
  122. #define OCD_RWCS_CCTRL_START        25
  123. #define OCD_RWCS_CCTRL_SIZE        2
  124. #define OCD_RWCS_SZ_START        27
  125. #define OCD_RWCS_SZ_SIZE        3
  126. #define OCD_RWCS_RW_BIT            30
  127. #define OCD_RWCS_AC_BIT            31
  128.  
  129. /* Bits in RWA */
  130. #define OCD_RWA_RWA_START        0
  131. #define OCD_RWA_RWA_SIZE        32
  132.  
  133. /* Bits in RWD */
  134. #define OCD_RWD_RWD_START        0
  135. #define OCD_RWD_RWD_SIZE        32
  136.  
  137. /* Bits in WT */
  138. #define OCD_WT_DTE_START        20
  139. #define OCD_WT_DTE_SIZE            3
  140. #define OCD_WT_DTS_START        23
  141. #define OCD_WT_DTS_SIZE            3
  142. #define OCD_WT_PTE_START        26
  143. #define OCD_WT_PTE_SIZE            3
  144. #define OCD_WT_PTS_START        29
  145. #define OCD_WT_PTS_SIZE            3
  146.  
  147. /* Bits in DTC */
  148. #define OCD_DTC_T0WP_BIT        0
  149. #define OCD_DTC_T1WP_BIT        1
  150. #define OCD_DTC_ASID0EN_BIT        2
  151. #define OCD_DTC_ASID0_START        3
  152. #define OCD_DTC_ASID0_SIZE        8
  153. #define OCD_DTC_ASID1EN_BIT        11
  154. #define OCD_DTC_ASID1_START        12
  155. #define OCD_DTC_ASID1_SIZE        8
  156. #define OCD_DTC_RWT1_START        28
  157. #define OCD_DTC_RWT1_SIZE        2
  158. #define OCD_DTC_RWT0_START        30
  159. #define OCD_DTC_RWT0_SIZE        2
  160.  
  161. /* Bits in DTSA0 */
  162. #define OCD_DTSA0_DTSA_START        0
  163. #define OCD_DTSA0_DTSA_SIZE        32
  164.  
  165. /* Bits in DTSA1 */
  166. #define OCD_DTSA1_DTSA_START        0
  167. #define OCD_DTSA1_DTSA_SIZE        32
  168.  
  169. /* Bits in DTEA0 */
  170. #define OCD_DTEA0_DTEA_START        0
  171. #define OCD_DTEA0_DTEA_SIZE        32
  172.  
  173. /* Bits in DTEA1 */
  174. #define OCD_DTEA1_DTEA_START        0
  175. #define OCD_DTEA1_DTEA_SIZE        32
  176.  
  177. /* Bits in BWC0A */
  178. #define OCD_BWC0A_ASIDEN_BIT        0
  179. #define OCD_BWC0A_ASID_START        1
  180. #define OCD_BWC0A_ASID_SIZE        8
  181. #define OCD_BWC0A_EOC_BIT        14
  182. #define OCD_BWC0A_AME_BIT        25
  183. #define OCD_BWC0A_BWE_START        30
  184. #define OCD_BWC0A_BWE_SIZE        2
  185.  
  186. /* Bits in BWC0B */
  187. #define OCD_BWC0B_ASIDEN_BIT        0
  188. #define OCD_BWC0B_ASID_START        1
  189. #define OCD_BWC0B_ASID_SIZE        8
  190. #define OCD_BWC0B_EOC_BIT        14
  191. #define OCD_BWC0B_AME_BIT        25
  192. #define OCD_BWC0B_BWE_START        30
  193. #define OCD_BWC0B_BWE_SIZE        2
  194.  
  195. /* Bits in BWC1A */
  196. #define OCD_BWC1A_ASIDEN_BIT        0
  197. #define OCD_BWC1A_ASID_START        1
  198. #define OCD_BWC1A_ASID_SIZE        8
  199. #define OCD_BWC1A_EOC_BIT        14
  200. #define OCD_BWC1A_AME_BIT        25
  201. #define OCD_BWC1A_BWE_START        30
  202. #define OCD_BWC1A_BWE_SIZE        2
  203.  
  204. /* Bits in BWC1B */
  205. #define OCD_BWC1B_ASIDEN_BIT        0
  206. #define OCD_BWC1B_ASID_START        1
  207. #define OCD_BWC1B_ASID_SIZE        8
  208. #define OCD_BWC1B_EOC_BIT        14
  209. #define OCD_BWC1B_AME_BIT        25
  210. #define OCD_BWC1B_BWE_START        30
  211. #define OCD_BWC1B_BWE_SIZE        2
  212.  
  213. /* Bits in BWC2A */
  214. #define OCD_BWC2A_ASIDEN_BIT        0
  215. #define OCD_BWC2A_ASID_START        1
  216. #define OCD_BWC2A_ASID_SIZE        8
  217. #define OCD_BWC2A_EOC_BIT        14
  218. #define OCD_BWC2A_AMB_START        20
  219. #define OCD_BWC2A_AMB_SIZE        5
  220. #define OCD_BWC2A_AME_BIT        25
  221. #define OCD_BWC2A_BWE_START        30
  222. #define OCD_BWC2A_BWE_SIZE        2
  223.  
  224. /* Bits in BWC2B */
  225. #define OCD_BWC2B_ASIDEN_BIT        0
  226. #define OCD_BWC2B_ASID_START        1
  227. #define OCD_BWC2B_ASID_SIZE        8
  228. #define OCD_BWC2B_EOC_BIT        14
  229. #define OCD_BWC2B_AME_BIT        25
  230. #define OCD_BWC2B_BWE_START        30
  231. #define OCD_BWC2B_BWE_SIZE        2
  232.  
  233. /* Bits in BWC3A */
  234. #define OCD_BWC3A_ASIDEN_BIT        0
  235. #define OCD_BWC3A_ASID_START        1
  236. #define OCD_BWC3A_ASID_SIZE        8
  237. #define OCD_BWC3A_SIZE_START        9
  238. #define OCD_BWC3A_SIZE_SIZE        3
  239. #define OCD_BWC3A_EOC_BIT        14
  240. #define OCD_BWC3A_BWO_START        16
  241. #define OCD_BWC3A_BWO_SIZE        2
  242. #define OCD_BWC3A_BME_START        20
  243. #define OCD_BWC3A_BME_SIZE        4
  244. #define OCD_BWC3A_BRW_START        28
  245. #define OCD_BWC3A_BRW_SIZE        2
  246. #define OCD_BWC3A_BWE_START        30
  247. #define OCD_BWC3A_BWE_SIZE        2
  248.  
  249. /* Bits in BWC3B */
  250. #define OCD_BWC3B_ASIDEN_BIT        0
  251. #define OCD_BWC3B_ASID_START        1
  252. #define OCD_BWC3B_ASID_SIZE        8
  253. #define OCD_BWC3B_SIZE_START        9
  254. #define OCD_BWC3B_SIZE_SIZE        3
  255. #define OCD_BWC3B_EOC_BIT        14
  256. #define OCD_BWC3B_BWO_START        16
  257. #define OCD_BWC3B_BWO_SIZE        2
  258. #define OCD_BWC3B_BME_START        20
  259. #define OCD_BWC3B_BME_SIZE        4
  260. #define OCD_BWC3B_BRW_START        28
  261. #define OCD_BWC3B_BRW_SIZE        2
  262. #define OCD_BWC3B_BWE_START        30
  263. #define OCD_BWC3B_BWE_SIZE        2
  264.  
  265. /* Bits in BWA0A */
  266. #define OCD_BWA0A_BWA_START        0
  267. #define OCD_BWA0A_BWA_SIZE        32
  268.  
  269. /* Bits in BWA0B */
  270. #define OCD_BWA0B_BWA_START        0
  271. #define OCD_BWA0B_BWA_SIZE        32
  272.  
  273. /* Bits in BWA1A */
  274. #define OCD_BWA1A_BWA_START        0
  275. #define OCD_BWA1A_BWA_SIZE        32
  276.  
  277. /* Bits in BWA1B */
  278. #define OCD_BWA1B_BWA_START        0
  279. #define OCD_BWA1B_BWA_SIZE        32
  280.  
  281. /* Bits in BWA2A */
  282. #define OCD_BWA2A_BWA_START        0
  283. #define OCD_BWA2A_BWA_SIZE        32
  284.  
  285. /* Bits in BWA2B */
  286. #define OCD_BWA2B_BWA_START        0
  287. #define OCD_BWA2B_BWA_SIZE        32
  288.  
  289. /* Bits in BWA3A */
  290. #define OCD_BWA3A_BWA_START        0
  291. #define OCD_BWA3A_BWA_SIZE        32
  292.  
  293. /* Bits in BWA3B */
  294. #define OCD_BWA3B_BWA_START        0
  295. #define OCD_BWA3B_BWA_SIZE        32
  296.  
  297. /* Bits in NXCFG */
  298. #define OCD_NXCFG_NXARCH_START        0
  299. #define OCD_NXCFG_NXARCH_SIZE        4
  300. #define OCD_NXCFG_NXOCD_START        4
  301. #define OCD_NXCFG_NXOCD_SIZE        4
  302. #define OCD_NXCFG_NXPCB_START        8
  303. #define OCD_NXCFG_NXPCB_SIZE        4
  304. #define OCD_NXCFG_NXDB_START        12
  305. #define OCD_NXCFG_NXDB_SIZE        4
  306. #define OCD_NXCFG_MXMSEO_BIT        16
  307. #define OCD_NXCFG_NXMDO_START        17
  308. #define OCD_NXCFG_NXMDO_SIZE        4
  309. #define OCD_NXCFG_NXPT_BIT        21
  310. #define OCD_NXCFG_NXOT_BIT        22
  311. #define OCD_NXCFG_NXDWT_BIT        23
  312. #define OCD_NXCFG_NXDRT_BIT        24
  313. #define OCD_NXCFG_NXDTC_START        25
  314. #define OCD_NXCFG_NXDTC_SIZE        3
  315. #define OCD_NXCFG_NXDMA_BIT        28
  316.  
  317. /* Bits in DINST */
  318. #define OCD_DINST_DINST_START        0
  319. #define OCD_DINST_DINST_SIZE        32
  320.  
  321. /* Bits in CPUCM */
  322. #define OCD_CPUCM_BEM_BIT        1
  323. #define OCD_CPUCM_FEM_BIT        2
  324. #define OCD_CPUCM_REM_BIT        3
  325. #define OCD_CPUCM_IBEM_BIT        4
  326. #define OCD_CPUCM_IEEM_BIT        5
  327.  
  328. /* Bits in DCCPU */
  329. #define OCD_DCCPU_DATA_START        0
  330. #define OCD_DCCPU_DATA_SIZE        32
  331.  
  332. /* Bits in DCEMU */
  333. #define OCD_DCEMU_DATA_START        0
  334. #define OCD_DCEMU_DATA_SIZE        32
  335.  
  336. /* Bits in DCSR */
  337. #define OCD_DCSR_CPUD_BIT        0
  338. #define OCD_DCSR_EMUD_BIT        1
  339.  
  340. /* Bits in PID */
  341. #define OCD_PID_PROCESS_START        0
  342. #define OCD_PID_PROCESS_SIZE        32
  343.  
  344. /* Bits in EPC0 */
  345. #define OCD_EPC0_RNG_START        0
  346. #define OCD_EPC0_RNG_SIZE        2
  347. #define OCD_EPC0_CE_BIT            4
  348. #define OCD_EPC0_ECNT_START        16
  349. #define OCD_EPC0_ECNT_SIZE        16
  350.  
  351. /* Bits in EPC1 */
  352. #define OCD_EPC1_RNG_START        0
  353. #define OCD_EPC1_RNG_SIZE        2
  354. #define OCD_EPC1_ATB_BIT        5
  355. #define OCD_EPC1_AM_BIT            6
  356.  
  357. /* Bits in EPC2 */
  358. #define OCD_EPC2_RNG_START        0
  359. #define OCD_EPC2_RNG_SIZE        2
  360. #define OCD_EPC2_DB_START        2
  361. #define OCD_EPC2_DB_SIZE        2
  362.  
  363. /* Bits in EPC3 */
  364. #define OCD_EPC3_RNG_START        0
  365. #define OCD_EPC3_RNG_SIZE        2
  366. #define OCD_EPC3_DWE_BIT        2
  367.  
  368. /* Bits in AXC */
  369. #define OCD_AXC_DIV_START        0
  370. #define OCD_AXC_DIV_SIZE        4
  371. #define OCD_AXC_AXE_BIT            8
  372. #define OCD_AXC_AXS_BIT            9
  373. #define OCD_AXC_DDR_BIT            10
  374. #define OCD_AXC_LS_BIT            11
  375. #define OCD_AXC_REX_BIT            12
  376. #define OCD_AXC_REXTEN_BIT        13
  377.  
  378. /* Constants for DC:EIC */
  379. #define OCD_EIC_PROGRAM_AND_DATA_TRACE    0
  380. #define OCD_EIC_BREAKPOINT        1
  381. #define OCD_EIC_NOP            2
  382.  
  383. /* Constants for DC:OVC */
  384. #define OCD_OVC_OVERRUN            0
  385. #define OCD_OVC_DELAY_CPU_BTM        1
  386. #define OCD_OVC_DELAY_CPU_DTM        2
  387. #define OCD_OVC_DELAY_CPU_BTM_DTM    3
  388.  
  389. /* Constants for DC:EOS */
  390. #define OCD_EOS_NOP            0
  391. #define OCD_EOS_DEBUG_MODE        1
  392. #define OCD_EOS_BREAKPOINT_WATCHPOINT    2
  393. #define OCD_EOS_THQ            3
  394.  
  395. /* Constants for RWCS:NTBC */
  396. #define OCD_NTBC_OVERWRITE        0
  397. #define OCD_NTBC_DISABLE        1
  398. #define OCD_NTBC_BREAKPOINT        2
  399.  
  400. /* Constants for RWCS:CCTRL */
  401. #define OCD_CCTRL_AUTO            0
  402. #define OCD_CCTRL_CACHED        1
  403. #define OCD_CCTRL_UNCACHED        2
  404.  
  405. /* Constants for RWCS:SZ */
  406. #define OCD_SZ_BYTE            0
  407. #define OCD_SZ_HALFWORD            1
  408. #define OCD_SZ_WORD            2
  409.  
  410. /* Constants for WT:PTS */
  411. #define OCD_PTS_DISABLED        0
  412. #define OCD_PTS_PROGRAM_0B        1
  413. #define OCD_PTS_PROGRAM_1A        2
  414. #define OCD_PTS_PROGRAM_1B        3
  415. #define OCD_PTS_PROGRAM_2A        4
  416. #define OCD_PTS_PROGRAM_2B        5
  417. #define OCD_PTS_DATA_3A            6
  418. #define OCD_PTS_DATA_3B            7
  419.  
  420. /* Constants for DTC:RWT1 */
  421. #define OCD_RWT1_NO_TRACE        0
  422. #define OCD_RWT1_DATA_READ        1
  423. #define OCD_RWT1_DATA_WRITE        2
  424. #define OCD_RWT1_DATA_READ_WRITE    3
  425.  
  426. /* Constants for DTC:RWT0 */
  427. #define OCD_RWT0_NO_TRACE        0
  428. #define OCD_RWT0_DATA_READ        1
  429. #define OCD_RWT0_DATA_WRITE        2
  430. #define OCD_RWT0_DATA_READ_WRITE    3
  431.  
  432. /* Constants for BWC0A:BWE */
  433. #define OCD_BWE_DISABLED        0
  434. #define OCD_BWE_BREAKPOINT_ENABLED    1
  435. #define OCD_BWE_WATCHPOINT_ENABLED    3
  436.  
  437. /* Constants for BWC0B:BWE */
  438. #define OCD_BWE_DISABLED        0
  439. #define OCD_BWE_BREAKPOINT_ENABLED    1
  440. #define OCD_BWE_WATCHPOINT_ENABLED    3
  441.  
  442. /* Constants for BWC1A:BWE */
  443. #define OCD_BWE_DISABLED        0
  444. #define OCD_BWE_BREAKPOINT_ENABLED    1
  445. #define OCD_BWE_WATCHPOINT_ENABLED    3
  446.  
  447. /* Constants for BWC1B:BWE */
  448. #define OCD_BWE_DISABLED        0
  449. #define OCD_BWE_BREAKPOINT_ENABLED    1
  450. #define OCD_BWE_WATCHPOINT_ENABLED    3
  451.  
  452. /* Constants for BWC2A:BWE */
  453. #define OCD_BWE_DISABLED        0
  454. #define OCD_BWE_BREAKPOINT_ENABLED    1
  455. #define OCD_BWE_WATCHPOINT_ENABLED    3
  456.  
  457. /* Constants for BWC2B:BWE */
  458. #define OCD_BWE_DISABLED        0
  459. #define OCD_BWE_BREAKPOINT_ENABLED    1
  460. #define OCD_BWE_WATCHPOINT_ENABLED    3
  461.  
  462. /* Constants for BWC3A:SIZE */
  463. #define OCD_SIZE_BYTE_ACCESS        4
  464. #define OCD_SIZE_HALFWORD_ACCESS    5
  465. #define OCD_SIZE_WORD_ACCESS        6
  466. #define OCD_SIZE_DOUBLE_WORD_ACCESS    7
  467.  
  468. /* Constants for BWC3A:BRW */
  469. #define OCD_BRW_READ_BREAK        0
  470. #define OCD_BRW_WRITE_BREAK        1
  471. #define OCD_BRW_ANY_ACCES_BREAK        2
  472.  
  473. /* Constants for BWC3A:BWE */
  474. #define OCD_BWE_DISABLED        0
  475. #define OCD_BWE_BREAKPOINT_ENABLED    1
  476. #define OCD_BWE_WATCHPOINT_ENABLED    3
  477.  
  478. /* Constants for BWC3B:SIZE */
  479. #define OCD_SIZE_BYTE_ACCESS        4
  480. #define OCD_SIZE_HALFWORD_ACCESS    5
  481. #define OCD_SIZE_WORD_ACCESS        6
  482. #define OCD_SIZE_DOUBLE_WORD_ACCESS    7
  483.  
  484. /* Constants for BWC3B:BRW */
  485. #define OCD_BRW_READ_BREAK        0
  486. #define OCD_BRW_WRITE_BREAK        1
  487. #define OCD_BRW_ANY_ACCES_BREAK        2
  488.  
  489. /* Constants for BWC3B:BWE */
  490. #define OCD_BWE_DISABLED        0
  491. #define OCD_BWE_BREAKPOINT_ENABLED    1
  492. #define OCD_BWE_WATCHPOINT_ENABLED    3
  493.  
  494. /* Constants for EPC0:RNG */
  495. #define OCD_RNG_DISABLED        0
  496. #define OCD_RNG_EXCLUSIVE        1
  497. #define OCD_RNG_INCLUSIVE        2
  498.  
  499. /* Constants for EPC1:RNG */
  500. #define OCD_RNG_DISABLED        0
  501. #define OCD_RNG_EXCLUSIVE        1
  502. #define OCD_RNG_INCLUSIVE        2
  503.  
  504. /* Constants for EPC2:RNG */
  505. #define OCD_RNG_DISABLED        0
  506. #define OCD_RNG_EXCLUSIVE        1
  507. #define OCD_RNG_INCLUSIVE        2
  508.  
  509. /* Constants for EPC2:DB */
  510. #define OCD_DB_DISABLED            0
  511. #define OCD_DB_CHAINED_B        1
  512. #define OCD_DB_CHAINED_A        2
  513. #define OCD_DB_AHAINED_A_AND_B        3
  514.  
  515. /* Constants for EPC3:RNG */
  516. #define OCD_RNG_DISABLED        0
  517. #define OCD_RNG_EXCLUSIVE        1
  518. #define OCD_RNG_INCLUSIVE        2
  519.  
  520. #ifndef __ASSEMBLER__
  521.  
  522. /* Register access macros */
  523. static inline unsigned long __ocd_read(unsigned int reg)
  524. {
  525.     return __builtin_mfdr(reg);
  526. }
  527.  
  528. static inline void __ocd_write(unsigned int reg, unsigned long value)
  529. {
  530.     __builtin_mtdr(reg, value);
  531. }
  532.  
  533. #define ocd_read(reg)            __ocd_read(OCD_##reg)
  534. #define ocd_write(reg, value)        __ocd_write(OCD_##reg, value)
  535.  
  536. struct task_struct;
  537.  
  538. void ocd_enable(struct task_struct *child);
  539. void ocd_disable(struct task_struct *child);
  540.  
  541. #endif /* !__ASSEMBLER__ */
  542.  
  543. #endif /* __ASM_AVR32_OCD_H */
  544.