MK64F12_cau.h 47 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463
  1. /*
  2. * Copyright (c) 2014, Freescale Semiconductor, Inc.
  3. * All rights reserved.
  4. *
  5. * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED
  6. * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  7. * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
  8. * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  9. * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
  10. * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  11. * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  12. * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
  13. * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
  14. * OF SUCH DAMAGE.
  15. */
  16. /*
  17. * WARNING! DO NOT EDIT THIS FILE DIRECTLY!
  18. *
  19. * This file was generated automatically and any changes may be lost.
  20. */
  21. #ifndef __HW_CAU_REGISTERS_H__
  22. #define __HW_CAU_REGISTERS_H__
  23. #include "regs.h"
  24. /*
  25. * MK64F12 CAU
  26. *
  27. * Memory Mapped Cryptographic Acceleration Unit (MMCAU)
  28. *
  29. * Registers defined in this header file:
  30. * - HW_CAU_DIRECT - Direct access register 0
  31. * - HW_CAU_LDR_CASR - Status register - Load Register command
  32. * - HW_CAU_LDR_CAA - Accumulator register - Load Register command
  33. * - HW_CAU_LDR_CA - General Purpose Register 0 - Load Register command
  34. * - HW_CAU_STR_CASR - Status register - Store Register command
  35. * - HW_CAU_STR_CAA - Accumulator register - Store Register command
  36. * - HW_CAU_STR_CA - General Purpose Register 0 - Store Register command
  37. * - HW_CAU_ADR_CASR - Status register - Add Register command
  38. * - HW_CAU_ADR_CAA - Accumulator register - Add to register command
  39. * - HW_CAU_ADR_CA - General Purpose Register 0 - Add to register command
  40. * - HW_CAU_RADR_CASR - Status register - Reverse and Add to Register command
  41. * - HW_CAU_RADR_CAA - Accumulator register - Reverse and Add to Register command
  42. * - HW_CAU_RADR_CA - General Purpose Register 0 - Reverse and Add to Register command
  43. * - HW_CAU_XOR_CASR - Status register - Exclusive Or command
  44. * - HW_CAU_XOR_CAA - Accumulator register - Exclusive Or command
  45. * - HW_CAU_XOR_CA - General Purpose Register 0 - Exclusive Or command
  46. * - HW_CAU_ROTL_CASR - Status register - Rotate Left command
  47. * - HW_CAU_ROTL_CAA - Accumulator register - Rotate Left command
  48. * - HW_CAU_ROTL_CA - General Purpose Register 0 - Rotate Left command
  49. * - HW_CAU_AESC_CASR - Status register - AES Column Operation command
  50. * - HW_CAU_AESC_CAA - Accumulator register - AES Column Operation command
  51. * - HW_CAU_AESC_CA - General Purpose Register 0 - AES Column Operation command
  52. * - HW_CAU_AESIC_CASR - Status register - AES Inverse Column Operation command
  53. * - HW_CAU_AESIC_CAA - Accumulator register - AES Inverse Column Operation command
  54. * - HW_CAU_AESIC_CA - General Purpose Register 0 - AES Inverse Column Operation command
  55. *
  56. * - hw_cau_t - Struct containing all module registers.
  57. */
  58. //! @name Module base addresses
  59. //@{
  60. #ifndef REGS_CAU_BASE
  61. #define HW_CAU_INSTANCE_COUNT (1U) //!< Number of instances of the CAU module.
  62. #define REGS_CAU_BASE (0xE0081000U) //!< Base address for CAU.
  63. #endif
  64. //@}
  65. //-------------------------------------------------------------------------------------------
  66. // HW_CAU_DIRECT - Direct access register 0
  67. //-------------------------------------------------------------------------------------------
  68. #ifndef __LANGUAGE_ASM__
  69. /*!
  70. * @brief HW_CAU_DIRECT - Direct access register 0 (WO)
  71. *
  72. * Reset value: 0x00000000U
  73. */
  74. typedef union _hw_cau_direct
  75. {
  76. uint32_t U;
  77. struct _hw_cau_direct_bitfields
  78. {
  79. uint32_t RESERVED0 : 32; //!< [31:0]
  80. } B;
  81. } hw_cau_direct_t;
  82. #endif
  83. /*!
  84. * @name Constants and macros for entire CAU_DIRECT register
  85. */
  86. //@{
  87. #define HW_CAU_DIRECT_COUNT (16U)
  88. #define HW_CAU_DIRECT_ADDR(n) (REGS_CAU_BASE + 0x0U + (0x4U * n))
  89. #ifndef __LANGUAGE_ASM__
  90. #define HW_CAU_DIRECT(n) (*(__O hw_cau_direct_t *) HW_CAU_DIRECT_ADDR(n))
  91. #define HW_CAU_DIRECT_WR(n, v) (HW_CAU_DIRECT(n).U = (v))
  92. #endif
  93. //@}
  94. /*
  95. * Constants & macros for individual CAU_DIRECT bitfields
  96. */
  97. //-------------------------------------------------------------------------------------------
  98. // HW_CAU_LDR_CASR - Status register - Load Register command
  99. //-------------------------------------------------------------------------------------------
  100. #ifndef __LANGUAGE_ASM__
  101. /*!
  102. * @brief HW_CAU_LDR_CASR - Status register - Load Register command (WO)
  103. *
  104. * Reset value: 0x20000000U
  105. */
  106. typedef union _hw_cau_ldr_casr
  107. {
  108. uint32_t U;
  109. struct _hw_cau_ldr_casr_bitfields
  110. {
  111. uint32_t IC : 1; //!< [0]
  112. uint32_t DPE : 1; //!< [1]
  113. uint32_t RESERVED0 : 26; //!< [27:2]
  114. uint32_t VER : 4; //!< [31:28] CAU version
  115. } B;
  116. } hw_cau_ldr_casr_t;
  117. #endif
  118. /*!
  119. * @name Constants and macros for entire CAU_LDR_CASR register
  120. */
  121. //@{
  122. #define HW_CAU_LDR_CASR_ADDR (REGS_CAU_BASE + 0x840U)
  123. #ifndef __LANGUAGE_ASM__
  124. #define HW_CAU_LDR_CASR (*(__O hw_cau_ldr_casr_t *) HW_CAU_LDR_CASR_ADDR)
  125. #define HW_CAU_LDR_CASR_WR(v) (HW_CAU_LDR_CASR.U = (v))
  126. #endif
  127. //@}
  128. /*
  129. * Constants & macros for individual CAU_LDR_CASR bitfields
  130. */
  131. /*!
  132. * @name Register CAU_LDR_CASR, field IC[0] (WO)
  133. *
  134. * Values:
  135. * - 0 - No illegal commands issued
  136. * - 1 - Illegal command issued
  137. */
  138. //@{
  139. #define BP_CAU_LDR_CASR_IC (0U) //!< Bit position for CAU_LDR_CASR_IC.
  140. #define BM_CAU_LDR_CASR_IC (0x00000001U) //!< Bit mask for CAU_LDR_CASR_IC.
  141. #define BS_CAU_LDR_CASR_IC (1U) //!< Bit field size in bits for CAU_LDR_CASR_IC.
  142. //! @brief Format value for bitfield CAU_LDR_CASR_IC.
  143. #define BF_CAU_LDR_CASR_IC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_LDR_CASR_IC), uint32_t) & BM_CAU_LDR_CASR_IC)
  144. //@}
  145. /*!
  146. * @name Register CAU_LDR_CASR, field DPE[1] (WO)
  147. *
  148. * Values:
  149. * - 0 - No error detected
  150. * - 1 - DES key parity error detected
  151. */
  152. //@{
  153. #define BP_CAU_LDR_CASR_DPE (1U) //!< Bit position for CAU_LDR_CASR_DPE.
  154. #define BM_CAU_LDR_CASR_DPE (0x00000002U) //!< Bit mask for CAU_LDR_CASR_DPE.
  155. #define BS_CAU_LDR_CASR_DPE (1U) //!< Bit field size in bits for CAU_LDR_CASR_DPE.
  156. //! @brief Format value for bitfield CAU_LDR_CASR_DPE.
  157. #define BF_CAU_LDR_CASR_DPE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_LDR_CASR_DPE), uint32_t) & BM_CAU_LDR_CASR_DPE)
  158. //@}
  159. /*!
  160. * @name Register CAU_LDR_CASR, field VER[31:28] (WO)
  161. *
  162. * Values:
  163. * - 0001 - Initial CAU version
  164. * - 0010 - Second version, added support for SHA-256 algorithm.(This is the
  165. * value on this device)
  166. */
  167. //@{
  168. #define BP_CAU_LDR_CASR_VER (28U) //!< Bit position for CAU_LDR_CASR_VER.
  169. #define BM_CAU_LDR_CASR_VER (0xF0000000U) //!< Bit mask for CAU_LDR_CASR_VER.
  170. #define BS_CAU_LDR_CASR_VER (4U) //!< Bit field size in bits for CAU_LDR_CASR_VER.
  171. //! @brief Format value for bitfield CAU_LDR_CASR_VER.
  172. #define BF_CAU_LDR_CASR_VER(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_LDR_CASR_VER), uint32_t) & BM_CAU_LDR_CASR_VER)
  173. //@}
  174. //-------------------------------------------------------------------------------------------
  175. // HW_CAU_LDR_CAA - Accumulator register - Load Register command
  176. //-------------------------------------------------------------------------------------------
  177. #ifndef __LANGUAGE_ASM__
  178. /*!
  179. * @brief HW_CAU_LDR_CAA - Accumulator register - Load Register command (WO)
  180. *
  181. * Reset value: 0x00000000U
  182. */
  183. typedef union _hw_cau_ldr_caa
  184. {
  185. uint32_t U;
  186. struct _hw_cau_ldr_caa_bitfields
  187. {
  188. uint32_t RESERVED0 : 32; //!< [31:0]
  189. } B;
  190. } hw_cau_ldr_caa_t;
  191. #endif
  192. /*!
  193. * @name Constants and macros for entire CAU_LDR_CAA register
  194. */
  195. //@{
  196. #define HW_CAU_LDR_CAA_ADDR (REGS_CAU_BASE + 0x844U)
  197. #ifndef __LANGUAGE_ASM__
  198. #define HW_CAU_LDR_CAA (*(__O hw_cau_ldr_caa_t *) HW_CAU_LDR_CAA_ADDR)
  199. #define HW_CAU_LDR_CAA_WR(v) (HW_CAU_LDR_CAA.U = (v))
  200. #endif
  201. //@}
  202. /*
  203. * Constants & macros for individual CAU_LDR_CAA bitfields
  204. */
  205. //-------------------------------------------------------------------------------------------
  206. // HW_CAU_LDR_CA - General Purpose Register 0 - Load Register command
  207. //-------------------------------------------------------------------------------------------
  208. #ifndef __LANGUAGE_ASM__
  209. /*!
  210. * @brief HW_CAU_LDR_CA - General Purpose Register 0 - Load Register command (WO)
  211. *
  212. * Reset value: 0x00000000U
  213. */
  214. typedef union _hw_cau_ldr_ca
  215. {
  216. uint32_t U;
  217. struct _hw_cau_ldr_ca_bitfields
  218. {
  219. uint32_t RESERVED0 : 32; //!< [31:0]
  220. } B;
  221. } hw_cau_ldr_ca_t;
  222. #endif
  223. /*!
  224. * @name Constants and macros for entire CAU_LDR_CA register
  225. */
  226. //@{
  227. #define HW_CAU_LDR_CA_COUNT (9U)
  228. #define HW_CAU_LDR_CA_ADDR(n) (REGS_CAU_BASE + 0x848U + (0x4U * n))
  229. #ifndef __LANGUAGE_ASM__
  230. #define HW_CAU_LDR_CA(n) (*(__O hw_cau_ldr_ca_t *) HW_CAU_LDR_CA_ADDR(n))
  231. #define HW_CAU_LDR_CA_WR(n, v) (HW_CAU_LDR_CA(n).U = (v))
  232. #endif
  233. //@}
  234. /*
  235. * Constants & macros for individual CAU_LDR_CA bitfields
  236. */
  237. //-------------------------------------------------------------------------------------------
  238. // HW_CAU_STR_CASR - Status register - Store Register command
  239. //-------------------------------------------------------------------------------------------
  240. #ifndef __LANGUAGE_ASM__
  241. /*!
  242. * @brief HW_CAU_STR_CASR - Status register - Store Register command (RO)
  243. *
  244. * Reset value: 0x20000000U
  245. */
  246. typedef union _hw_cau_str_casr
  247. {
  248. uint32_t U;
  249. struct _hw_cau_str_casr_bitfields
  250. {
  251. uint32_t IC : 1; //!< [0]
  252. uint32_t DPE : 1; //!< [1]
  253. uint32_t RESERVED0 : 26; //!< [27:2]
  254. uint32_t VER : 4; //!< [31:28] CAU version
  255. } B;
  256. } hw_cau_str_casr_t;
  257. #endif
  258. /*!
  259. * @name Constants and macros for entire CAU_STR_CASR register
  260. */
  261. //@{
  262. #define HW_CAU_STR_CASR_ADDR (REGS_CAU_BASE + 0x880U)
  263. #ifndef __LANGUAGE_ASM__
  264. #define HW_CAU_STR_CASR (*(__I hw_cau_str_casr_t *) HW_CAU_STR_CASR_ADDR)
  265. #define HW_CAU_STR_CASR_RD() (HW_CAU_STR_CASR.U)
  266. #endif
  267. //@}
  268. /*
  269. * Constants & macros for individual CAU_STR_CASR bitfields
  270. */
  271. /*!
  272. * @name Register CAU_STR_CASR, field IC[0] (RO)
  273. *
  274. * Values:
  275. * - 0 - No illegal commands issued
  276. * - 1 - Illegal command issued
  277. */
  278. //@{
  279. #define BP_CAU_STR_CASR_IC (0U) //!< Bit position for CAU_STR_CASR_IC.
  280. #define BM_CAU_STR_CASR_IC (0x00000001U) //!< Bit mask for CAU_STR_CASR_IC.
  281. #define BS_CAU_STR_CASR_IC (1U) //!< Bit field size in bits for CAU_STR_CASR_IC.
  282. #ifndef __LANGUAGE_ASM__
  283. //! @brief Read current value of the CAU_STR_CASR_IC field.
  284. #define BR_CAU_STR_CASR_IC (BITBAND_ACCESS32(HW_CAU_STR_CASR_ADDR, BP_CAU_STR_CASR_IC))
  285. #endif
  286. //@}
  287. /*!
  288. * @name Register CAU_STR_CASR, field DPE[1] (RO)
  289. *
  290. * Values:
  291. * - 0 - No error detected
  292. * - 1 - DES key parity error detected
  293. */
  294. //@{
  295. #define BP_CAU_STR_CASR_DPE (1U) //!< Bit position for CAU_STR_CASR_DPE.
  296. #define BM_CAU_STR_CASR_DPE (0x00000002U) //!< Bit mask for CAU_STR_CASR_DPE.
  297. #define BS_CAU_STR_CASR_DPE (1U) //!< Bit field size in bits for CAU_STR_CASR_DPE.
  298. #ifndef __LANGUAGE_ASM__
  299. //! @brief Read current value of the CAU_STR_CASR_DPE field.
  300. #define BR_CAU_STR_CASR_DPE (BITBAND_ACCESS32(HW_CAU_STR_CASR_ADDR, BP_CAU_STR_CASR_DPE))
  301. #endif
  302. //@}
  303. /*!
  304. * @name Register CAU_STR_CASR, field VER[31:28] (RO)
  305. *
  306. * Values:
  307. * - 0001 - Initial CAU version
  308. * - 0010 - Second version, added support for SHA-256 algorithm.(This is the
  309. * value on this device)
  310. */
  311. //@{
  312. #define BP_CAU_STR_CASR_VER (28U) //!< Bit position for CAU_STR_CASR_VER.
  313. #define BM_CAU_STR_CASR_VER (0xF0000000U) //!< Bit mask for CAU_STR_CASR_VER.
  314. #define BS_CAU_STR_CASR_VER (4U) //!< Bit field size in bits for CAU_STR_CASR_VER.
  315. #ifndef __LANGUAGE_ASM__
  316. //! @brief Read current value of the CAU_STR_CASR_VER field.
  317. #define BR_CAU_STR_CASR_VER (HW_CAU_STR_CASR.B.VER)
  318. #endif
  319. //@}
  320. //-------------------------------------------------------------------------------------------
  321. // HW_CAU_STR_CAA - Accumulator register - Store Register command
  322. //-------------------------------------------------------------------------------------------
  323. #ifndef __LANGUAGE_ASM__
  324. /*!
  325. * @brief HW_CAU_STR_CAA - Accumulator register - Store Register command (RO)
  326. *
  327. * Reset value: 0x00000000U
  328. */
  329. typedef union _hw_cau_str_caa
  330. {
  331. uint32_t U;
  332. struct _hw_cau_str_caa_bitfields
  333. {
  334. uint32_t RESERVED0 : 32; //!< [31:0]
  335. } B;
  336. } hw_cau_str_caa_t;
  337. #endif
  338. /*!
  339. * @name Constants and macros for entire CAU_STR_CAA register
  340. */
  341. //@{
  342. #define HW_CAU_STR_CAA_ADDR (REGS_CAU_BASE + 0x884U)
  343. #ifndef __LANGUAGE_ASM__
  344. #define HW_CAU_STR_CAA (*(__I hw_cau_str_caa_t *) HW_CAU_STR_CAA_ADDR)
  345. #define HW_CAU_STR_CAA_RD() (HW_CAU_STR_CAA.U)
  346. #endif
  347. //@}
  348. /*
  349. * Constants & macros for individual CAU_STR_CAA bitfields
  350. */
  351. //-------------------------------------------------------------------------------------------
  352. // HW_CAU_STR_CA - General Purpose Register 0 - Store Register command
  353. //-------------------------------------------------------------------------------------------
  354. #ifndef __LANGUAGE_ASM__
  355. /*!
  356. * @brief HW_CAU_STR_CA - General Purpose Register 0 - Store Register command (RO)
  357. *
  358. * Reset value: 0x00000000U
  359. */
  360. typedef union _hw_cau_str_ca
  361. {
  362. uint32_t U;
  363. struct _hw_cau_str_ca_bitfields
  364. {
  365. uint32_t RESERVED0 : 32; //!< [31:0]
  366. } B;
  367. } hw_cau_str_ca_t;
  368. #endif
  369. /*!
  370. * @name Constants and macros for entire CAU_STR_CA register
  371. */
  372. //@{
  373. #define HW_CAU_STR_CA_COUNT (9U)
  374. #define HW_CAU_STR_CA_ADDR(n) (REGS_CAU_BASE + 0x888U + (0x4U * n))
  375. #ifndef __LANGUAGE_ASM__
  376. #define HW_CAU_STR_CA(n) (*(__I hw_cau_str_ca_t *) HW_CAU_STR_CA_ADDR(n))
  377. #define HW_CAU_STR_CA_RD(n) (HW_CAU_STR_CA(n).U)
  378. #endif
  379. //@}
  380. /*
  381. * Constants & macros for individual CAU_STR_CA bitfields
  382. */
  383. //-------------------------------------------------------------------------------------------
  384. // HW_CAU_ADR_CASR - Status register - Add Register command
  385. //-------------------------------------------------------------------------------------------
  386. #ifndef __LANGUAGE_ASM__
  387. /*!
  388. * @brief HW_CAU_ADR_CASR - Status register - Add Register command (WO)
  389. *
  390. * Reset value: 0x20000000U
  391. */
  392. typedef union _hw_cau_adr_casr
  393. {
  394. uint32_t U;
  395. struct _hw_cau_adr_casr_bitfields
  396. {
  397. uint32_t IC : 1; //!< [0]
  398. uint32_t DPE : 1; //!< [1]
  399. uint32_t RESERVED0 : 26; //!< [27:2]
  400. uint32_t VER : 4; //!< [31:28] CAU version
  401. } B;
  402. } hw_cau_adr_casr_t;
  403. #endif
  404. /*!
  405. * @name Constants and macros for entire CAU_ADR_CASR register
  406. */
  407. //@{
  408. #define HW_CAU_ADR_CASR_ADDR (REGS_CAU_BASE + 0x8C0U)
  409. #ifndef __LANGUAGE_ASM__
  410. #define HW_CAU_ADR_CASR (*(__O hw_cau_adr_casr_t *) HW_CAU_ADR_CASR_ADDR)
  411. #define HW_CAU_ADR_CASR_WR(v) (HW_CAU_ADR_CASR.U = (v))
  412. #endif
  413. //@}
  414. /*
  415. * Constants & macros for individual CAU_ADR_CASR bitfields
  416. */
  417. /*!
  418. * @name Register CAU_ADR_CASR, field IC[0] (WO)
  419. *
  420. * Values:
  421. * - 0 - No illegal commands issued
  422. * - 1 - Illegal command issued
  423. */
  424. //@{
  425. #define BP_CAU_ADR_CASR_IC (0U) //!< Bit position for CAU_ADR_CASR_IC.
  426. #define BM_CAU_ADR_CASR_IC (0x00000001U) //!< Bit mask for CAU_ADR_CASR_IC.
  427. #define BS_CAU_ADR_CASR_IC (1U) //!< Bit field size in bits for CAU_ADR_CASR_IC.
  428. //! @brief Format value for bitfield CAU_ADR_CASR_IC.
  429. #define BF_CAU_ADR_CASR_IC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_ADR_CASR_IC), uint32_t) & BM_CAU_ADR_CASR_IC)
  430. //@}
  431. /*!
  432. * @name Register CAU_ADR_CASR, field DPE[1] (WO)
  433. *
  434. * Values:
  435. * - 0 - No error detected
  436. * - 1 - DES key parity error detected
  437. */
  438. //@{
  439. #define BP_CAU_ADR_CASR_DPE (1U) //!< Bit position for CAU_ADR_CASR_DPE.
  440. #define BM_CAU_ADR_CASR_DPE (0x00000002U) //!< Bit mask for CAU_ADR_CASR_DPE.
  441. #define BS_CAU_ADR_CASR_DPE (1U) //!< Bit field size in bits for CAU_ADR_CASR_DPE.
  442. //! @brief Format value for bitfield CAU_ADR_CASR_DPE.
  443. #define BF_CAU_ADR_CASR_DPE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_ADR_CASR_DPE), uint32_t) & BM_CAU_ADR_CASR_DPE)
  444. //@}
  445. /*!
  446. * @name Register CAU_ADR_CASR, field VER[31:28] (WO)
  447. *
  448. * Values:
  449. * - 0001 - Initial CAU version
  450. * - 0010 - Second version, added support for SHA-256 algorithm.(This is the
  451. * value on this device)
  452. */
  453. //@{
  454. #define BP_CAU_ADR_CASR_VER (28U) //!< Bit position for CAU_ADR_CASR_VER.
  455. #define BM_CAU_ADR_CASR_VER (0xF0000000U) //!< Bit mask for CAU_ADR_CASR_VER.
  456. #define BS_CAU_ADR_CASR_VER (4U) //!< Bit field size in bits for CAU_ADR_CASR_VER.
  457. //! @brief Format value for bitfield CAU_ADR_CASR_VER.
  458. #define BF_CAU_ADR_CASR_VER(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_ADR_CASR_VER), uint32_t) & BM_CAU_ADR_CASR_VER)
  459. //@}
  460. //-------------------------------------------------------------------------------------------
  461. // HW_CAU_ADR_CAA - Accumulator register - Add to register command
  462. //-------------------------------------------------------------------------------------------
  463. #ifndef __LANGUAGE_ASM__
  464. /*!
  465. * @brief HW_CAU_ADR_CAA - Accumulator register - Add to register command (WO)
  466. *
  467. * Reset value: 0x00000000U
  468. */
  469. typedef union _hw_cau_adr_caa
  470. {
  471. uint32_t U;
  472. struct _hw_cau_adr_caa_bitfields
  473. {
  474. uint32_t RESERVED0 : 32; //!< [31:0]
  475. } B;
  476. } hw_cau_adr_caa_t;
  477. #endif
  478. /*!
  479. * @name Constants and macros for entire CAU_ADR_CAA register
  480. */
  481. //@{
  482. #define HW_CAU_ADR_CAA_ADDR (REGS_CAU_BASE + 0x8C4U)
  483. #ifndef __LANGUAGE_ASM__
  484. #define HW_CAU_ADR_CAA (*(__O hw_cau_adr_caa_t *) HW_CAU_ADR_CAA_ADDR)
  485. #define HW_CAU_ADR_CAA_WR(v) (HW_CAU_ADR_CAA.U = (v))
  486. #endif
  487. //@}
  488. /*
  489. * Constants & macros for individual CAU_ADR_CAA bitfields
  490. */
  491. //-------------------------------------------------------------------------------------------
  492. // HW_CAU_ADR_CA - General Purpose Register 0 - Add to register command
  493. //-------------------------------------------------------------------------------------------
  494. #ifndef __LANGUAGE_ASM__
  495. /*!
  496. * @brief HW_CAU_ADR_CA - General Purpose Register 0 - Add to register command (WO)
  497. *
  498. * Reset value: 0x00000000U
  499. */
  500. typedef union _hw_cau_adr_ca
  501. {
  502. uint32_t U;
  503. struct _hw_cau_adr_ca_bitfields
  504. {
  505. uint32_t RESERVED0 : 32; //!< [31:0]
  506. } B;
  507. } hw_cau_adr_ca_t;
  508. #endif
  509. /*!
  510. * @name Constants and macros for entire CAU_ADR_CA register
  511. */
  512. //@{
  513. #define HW_CAU_ADR_CA_COUNT (9U)
  514. #define HW_CAU_ADR_CA_ADDR(n) (REGS_CAU_BASE + 0x8C8U + (0x4U * n))
  515. #ifndef __LANGUAGE_ASM__
  516. #define HW_CAU_ADR_CA(n) (*(__O hw_cau_adr_ca_t *) HW_CAU_ADR_CA_ADDR(n))
  517. #define HW_CAU_ADR_CA_WR(n, v) (HW_CAU_ADR_CA(n).U = (v))
  518. #endif
  519. //@}
  520. /*
  521. * Constants & macros for individual CAU_ADR_CA bitfields
  522. */
  523. //-------------------------------------------------------------------------------------------
  524. // HW_CAU_RADR_CASR - Status register - Reverse and Add to Register command
  525. //-------------------------------------------------------------------------------------------
  526. #ifndef __LANGUAGE_ASM__
  527. /*!
  528. * @brief HW_CAU_RADR_CASR - Status register - Reverse and Add to Register command (WO)
  529. *
  530. * Reset value: 0x20000000U
  531. */
  532. typedef union _hw_cau_radr_casr
  533. {
  534. uint32_t U;
  535. struct _hw_cau_radr_casr_bitfields
  536. {
  537. uint32_t IC : 1; //!< [0]
  538. uint32_t DPE : 1; //!< [1]
  539. uint32_t RESERVED0 : 26; //!< [27:2]
  540. uint32_t VER : 4; //!< [31:28] CAU version
  541. } B;
  542. } hw_cau_radr_casr_t;
  543. #endif
  544. /*!
  545. * @name Constants and macros for entire CAU_RADR_CASR register
  546. */
  547. //@{
  548. #define HW_CAU_RADR_CASR_ADDR (REGS_CAU_BASE + 0x900U)
  549. #ifndef __LANGUAGE_ASM__
  550. #define HW_CAU_RADR_CASR (*(__O hw_cau_radr_casr_t *) HW_CAU_RADR_CASR_ADDR)
  551. #define HW_CAU_RADR_CASR_WR(v) (HW_CAU_RADR_CASR.U = (v))
  552. #endif
  553. //@}
  554. /*
  555. * Constants & macros for individual CAU_RADR_CASR bitfields
  556. */
  557. /*!
  558. * @name Register CAU_RADR_CASR, field IC[0] (WO)
  559. *
  560. * Values:
  561. * - 0 - No illegal commands issued
  562. * - 1 - Illegal command issued
  563. */
  564. //@{
  565. #define BP_CAU_RADR_CASR_IC (0U) //!< Bit position for CAU_RADR_CASR_IC.
  566. #define BM_CAU_RADR_CASR_IC (0x00000001U) //!< Bit mask for CAU_RADR_CASR_IC.
  567. #define BS_CAU_RADR_CASR_IC (1U) //!< Bit field size in bits for CAU_RADR_CASR_IC.
  568. //! @brief Format value for bitfield CAU_RADR_CASR_IC.
  569. #define BF_CAU_RADR_CASR_IC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_RADR_CASR_IC), uint32_t) & BM_CAU_RADR_CASR_IC)
  570. //@}
  571. /*!
  572. * @name Register CAU_RADR_CASR, field DPE[1] (WO)
  573. *
  574. * Values:
  575. * - 0 - No error detected
  576. * - 1 - DES key parity error detected
  577. */
  578. //@{
  579. #define BP_CAU_RADR_CASR_DPE (1U) //!< Bit position for CAU_RADR_CASR_DPE.
  580. #define BM_CAU_RADR_CASR_DPE (0x00000002U) //!< Bit mask for CAU_RADR_CASR_DPE.
  581. #define BS_CAU_RADR_CASR_DPE (1U) //!< Bit field size in bits for CAU_RADR_CASR_DPE.
  582. //! @brief Format value for bitfield CAU_RADR_CASR_DPE.
  583. #define BF_CAU_RADR_CASR_DPE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_RADR_CASR_DPE), uint32_t) & BM_CAU_RADR_CASR_DPE)
  584. //@}
  585. /*!
  586. * @name Register CAU_RADR_CASR, field VER[31:28] (WO)
  587. *
  588. * Values:
  589. * - 0001 - Initial CAU version
  590. * - 0010 - Second version, added support for SHA-256 algorithm.(This is the
  591. * value on this device)
  592. */
  593. //@{
  594. #define BP_CAU_RADR_CASR_VER (28U) //!< Bit position for CAU_RADR_CASR_VER.
  595. #define BM_CAU_RADR_CASR_VER (0xF0000000U) //!< Bit mask for CAU_RADR_CASR_VER.
  596. #define BS_CAU_RADR_CASR_VER (4U) //!< Bit field size in bits for CAU_RADR_CASR_VER.
  597. //! @brief Format value for bitfield CAU_RADR_CASR_VER.
  598. #define BF_CAU_RADR_CASR_VER(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_RADR_CASR_VER), uint32_t) & BM_CAU_RADR_CASR_VER)
  599. //@}
  600. //-------------------------------------------------------------------------------------------
  601. // HW_CAU_RADR_CAA - Accumulator register - Reverse and Add to Register command
  602. //-------------------------------------------------------------------------------------------
  603. #ifndef __LANGUAGE_ASM__
  604. /*!
  605. * @brief HW_CAU_RADR_CAA - Accumulator register - Reverse and Add to Register command (WO)
  606. *
  607. * Reset value: 0x00000000U
  608. */
  609. typedef union _hw_cau_radr_caa
  610. {
  611. uint32_t U;
  612. struct _hw_cau_radr_caa_bitfields
  613. {
  614. uint32_t RESERVED0 : 32; //!< [31:0]
  615. } B;
  616. } hw_cau_radr_caa_t;
  617. #endif
  618. /*!
  619. * @name Constants and macros for entire CAU_RADR_CAA register
  620. */
  621. //@{
  622. #define HW_CAU_RADR_CAA_ADDR (REGS_CAU_BASE + 0x904U)
  623. #ifndef __LANGUAGE_ASM__
  624. #define HW_CAU_RADR_CAA (*(__O hw_cau_radr_caa_t *) HW_CAU_RADR_CAA_ADDR)
  625. #define HW_CAU_RADR_CAA_WR(v) (HW_CAU_RADR_CAA.U = (v))
  626. #endif
  627. //@}
  628. /*
  629. * Constants & macros for individual CAU_RADR_CAA bitfields
  630. */
  631. //-------------------------------------------------------------------------------------------
  632. // HW_CAU_RADR_CA - General Purpose Register 0 - Reverse and Add to Register command
  633. //-------------------------------------------------------------------------------------------
  634. #ifndef __LANGUAGE_ASM__
  635. /*!
  636. * @brief HW_CAU_RADR_CA - General Purpose Register 0 - Reverse and Add to Register command (WO)
  637. *
  638. * Reset value: 0x00000000U
  639. */
  640. typedef union _hw_cau_radr_ca
  641. {
  642. uint32_t U;
  643. struct _hw_cau_radr_ca_bitfields
  644. {
  645. uint32_t RESERVED0 : 32; //!< [31:0]
  646. } B;
  647. } hw_cau_radr_ca_t;
  648. #endif
  649. /*!
  650. * @name Constants and macros for entire CAU_RADR_CA register
  651. */
  652. //@{
  653. #define HW_CAU_RADR_CA_COUNT (9U)
  654. #define HW_CAU_RADR_CA_ADDR(n) (REGS_CAU_BASE + 0x908U + (0x4U * n))
  655. #ifndef __LANGUAGE_ASM__
  656. #define HW_CAU_RADR_CA(n) (*(__O hw_cau_radr_ca_t *) HW_CAU_RADR_CA_ADDR(n))
  657. #define HW_CAU_RADR_CA_WR(n, v) (HW_CAU_RADR_CA(n).U = (v))
  658. #endif
  659. //@}
  660. /*
  661. * Constants & macros for individual CAU_RADR_CA bitfields
  662. */
  663. //-------------------------------------------------------------------------------------------
  664. // HW_CAU_XOR_CASR - Status register - Exclusive Or command
  665. //-------------------------------------------------------------------------------------------
  666. #ifndef __LANGUAGE_ASM__
  667. /*!
  668. * @brief HW_CAU_XOR_CASR - Status register - Exclusive Or command (WO)
  669. *
  670. * Reset value: 0x20000000U
  671. */
  672. typedef union _hw_cau_xor_casr
  673. {
  674. uint32_t U;
  675. struct _hw_cau_xor_casr_bitfields
  676. {
  677. uint32_t IC : 1; //!< [0]
  678. uint32_t DPE : 1; //!< [1]
  679. uint32_t RESERVED0 : 26; //!< [27:2]
  680. uint32_t VER : 4; //!< [31:28] CAU version
  681. } B;
  682. } hw_cau_xor_casr_t;
  683. #endif
  684. /*!
  685. * @name Constants and macros for entire CAU_XOR_CASR register
  686. */
  687. //@{
  688. #define HW_CAU_XOR_CASR_ADDR (REGS_CAU_BASE + 0x980U)
  689. #ifndef __LANGUAGE_ASM__
  690. #define HW_CAU_XOR_CASR (*(__O hw_cau_xor_casr_t *) HW_CAU_XOR_CASR_ADDR)
  691. #define HW_CAU_XOR_CASR_WR(v) (HW_CAU_XOR_CASR.U = (v))
  692. #endif
  693. //@}
  694. /*
  695. * Constants & macros for individual CAU_XOR_CASR bitfields
  696. */
  697. /*!
  698. * @name Register CAU_XOR_CASR, field IC[0] (WO)
  699. *
  700. * Values:
  701. * - 0 - No illegal commands issued
  702. * - 1 - Illegal command issued
  703. */
  704. //@{
  705. #define BP_CAU_XOR_CASR_IC (0U) //!< Bit position for CAU_XOR_CASR_IC.
  706. #define BM_CAU_XOR_CASR_IC (0x00000001U) //!< Bit mask for CAU_XOR_CASR_IC.
  707. #define BS_CAU_XOR_CASR_IC (1U) //!< Bit field size in bits for CAU_XOR_CASR_IC.
  708. //! @brief Format value for bitfield CAU_XOR_CASR_IC.
  709. #define BF_CAU_XOR_CASR_IC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_XOR_CASR_IC), uint32_t) & BM_CAU_XOR_CASR_IC)
  710. //@}
  711. /*!
  712. * @name Register CAU_XOR_CASR, field DPE[1] (WO)
  713. *
  714. * Values:
  715. * - 0 - No error detected
  716. * - 1 - DES key parity error detected
  717. */
  718. //@{
  719. #define BP_CAU_XOR_CASR_DPE (1U) //!< Bit position for CAU_XOR_CASR_DPE.
  720. #define BM_CAU_XOR_CASR_DPE (0x00000002U) //!< Bit mask for CAU_XOR_CASR_DPE.
  721. #define BS_CAU_XOR_CASR_DPE (1U) //!< Bit field size in bits for CAU_XOR_CASR_DPE.
  722. //! @brief Format value for bitfield CAU_XOR_CASR_DPE.
  723. #define BF_CAU_XOR_CASR_DPE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_XOR_CASR_DPE), uint32_t) & BM_CAU_XOR_CASR_DPE)
  724. //@}
  725. /*!
  726. * @name Register CAU_XOR_CASR, field VER[31:28] (WO)
  727. *
  728. * Values:
  729. * - 0001 - Initial CAU version
  730. * - 0010 - Second version, added support for SHA-256 algorithm.(This is the
  731. * value on this device)
  732. */
  733. //@{
  734. #define BP_CAU_XOR_CASR_VER (28U) //!< Bit position for CAU_XOR_CASR_VER.
  735. #define BM_CAU_XOR_CASR_VER (0xF0000000U) //!< Bit mask for CAU_XOR_CASR_VER.
  736. #define BS_CAU_XOR_CASR_VER (4U) //!< Bit field size in bits for CAU_XOR_CASR_VER.
  737. //! @brief Format value for bitfield CAU_XOR_CASR_VER.
  738. #define BF_CAU_XOR_CASR_VER(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_XOR_CASR_VER), uint32_t) & BM_CAU_XOR_CASR_VER)
  739. //@}
  740. //-------------------------------------------------------------------------------------------
  741. // HW_CAU_XOR_CAA - Accumulator register - Exclusive Or command
  742. //-------------------------------------------------------------------------------------------
  743. #ifndef __LANGUAGE_ASM__
  744. /*!
  745. * @brief HW_CAU_XOR_CAA - Accumulator register - Exclusive Or command (WO)
  746. *
  747. * Reset value: 0x00000000U
  748. */
  749. typedef union _hw_cau_xor_caa
  750. {
  751. uint32_t U;
  752. struct _hw_cau_xor_caa_bitfields
  753. {
  754. uint32_t RESERVED0 : 32; //!< [31:0]
  755. } B;
  756. } hw_cau_xor_caa_t;
  757. #endif
  758. /*!
  759. * @name Constants and macros for entire CAU_XOR_CAA register
  760. */
  761. //@{
  762. #define HW_CAU_XOR_CAA_ADDR (REGS_CAU_BASE + 0x984U)
  763. #ifndef __LANGUAGE_ASM__
  764. #define HW_CAU_XOR_CAA (*(__O hw_cau_xor_caa_t *) HW_CAU_XOR_CAA_ADDR)
  765. #define HW_CAU_XOR_CAA_WR(v) (HW_CAU_XOR_CAA.U = (v))
  766. #endif
  767. //@}
  768. /*
  769. * Constants & macros for individual CAU_XOR_CAA bitfields
  770. */
  771. //-------------------------------------------------------------------------------------------
  772. // HW_CAU_XOR_CA - General Purpose Register 0 - Exclusive Or command
  773. //-------------------------------------------------------------------------------------------
  774. #ifndef __LANGUAGE_ASM__
  775. /*!
  776. * @brief HW_CAU_XOR_CA - General Purpose Register 0 - Exclusive Or command (WO)
  777. *
  778. * Reset value: 0x00000000U
  779. */
  780. typedef union _hw_cau_xor_ca
  781. {
  782. uint32_t U;
  783. struct _hw_cau_xor_ca_bitfields
  784. {
  785. uint32_t RESERVED0 : 32; //!< [31:0]
  786. } B;
  787. } hw_cau_xor_ca_t;
  788. #endif
  789. /*!
  790. * @name Constants and macros for entire CAU_XOR_CA register
  791. */
  792. //@{
  793. #define HW_CAU_XOR_CA_COUNT (9U)
  794. #define HW_CAU_XOR_CA_ADDR(n) (REGS_CAU_BASE + 0x988U + (0x4U * n))
  795. #ifndef __LANGUAGE_ASM__
  796. #define HW_CAU_XOR_CA(n) (*(__O hw_cau_xor_ca_t *) HW_CAU_XOR_CA_ADDR(n))
  797. #define HW_CAU_XOR_CA_WR(n, v) (HW_CAU_XOR_CA(n).U = (v))
  798. #endif
  799. //@}
  800. /*
  801. * Constants & macros for individual CAU_XOR_CA bitfields
  802. */
  803. //-------------------------------------------------------------------------------------------
  804. // HW_CAU_ROTL_CASR - Status register - Rotate Left command
  805. //-------------------------------------------------------------------------------------------
  806. #ifndef __LANGUAGE_ASM__
  807. /*!
  808. * @brief HW_CAU_ROTL_CASR - Status register - Rotate Left command (WO)
  809. *
  810. * Reset value: 0x20000000U
  811. */
  812. typedef union _hw_cau_rotl_casr
  813. {
  814. uint32_t U;
  815. struct _hw_cau_rotl_casr_bitfields
  816. {
  817. uint32_t IC : 1; //!< [0]
  818. uint32_t DPE : 1; //!< [1]
  819. uint32_t RESERVED0 : 26; //!< [27:2]
  820. uint32_t VER : 4; //!< [31:28] CAU version
  821. } B;
  822. } hw_cau_rotl_casr_t;
  823. #endif
  824. /*!
  825. * @name Constants and macros for entire CAU_ROTL_CASR register
  826. */
  827. //@{
  828. #define HW_CAU_ROTL_CASR_ADDR (REGS_CAU_BASE + 0x9C0U)
  829. #ifndef __LANGUAGE_ASM__
  830. #define HW_CAU_ROTL_CASR (*(__O hw_cau_rotl_casr_t *) HW_CAU_ROTL_CASR_ADDR)
  831. #define HW_CAU_ROTL_CASR_WR(v) (HW_CAU_ROTL_CASR.U = (v))
  832. #endif
  833. //@}
  834. /*
  835. * Constants & macros for individual CAU_ROTL_CASR bitfields
  836. */
  837. /*!
  838. * @name Register CAU_ROTL_CASR, field IC[0] (WO)
  839. *
  840. * Values:
  841. * - 0 - No illegal commands issued
  842. * - 1 - Illegal command issued
  843. */
  844. //@{
  845. #define BP_CAU_ROTL_CASR_IC (0U) //!< Bit position for CAU_ROTL_CASR_IC.
  846. #define BM_CAU_ROTL_CASR_IC (0x00000001U) //!< Bit mask for CAU_ROTL_CASR_IC.
  847. #define BS_CAU_ROTL_CASR_IC (1U) //!< Bit field size in bits for CAU_ROTL_CASR_IC.
  848. //! @brief Format value for bitfield CAU_ROTL_CASR_IC.
  849. #define BF_CAU_ROTL_CASR_IC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_ROTL_CASR_IC), uint32_t) & BM_CAU_ROTL_CASR_IC)
  850. //@}
  851. /*!
  852. * @name Register CAU_ROTL_CASR, field DPE[1] (WO)
  853. *
  854. * Values:
  855. * - 0 - No error detected
  856. * - 1 - DES key parity error detected
  857. */
  858. //@{
  859. #define BP_CAU_ROTL_CASR_DPE (1U) //!< Bit position for CAU_ROTL_CASR_DPE.
  860. #define BM_CAU_ROTL_CASR_DPE (0x00000002U) //!< Bit mask for CAU_ROTL_CASR_DPE.
  861. #define BS_CAU_ROTL_CASR_DPE (1U) //!< Bit field size in bits for CAU_ROTL_CASR_DPE.
  862. //! @brief Format value for bitfield CAU_ROTL_CASR_DPE.
  863. #define BF_CAU_ROTL_CASR_DPE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_ROTL_CASR_DPE), uint32_t) & BM_CAU_ROTL_CASR_DPE)
  864. //@}
  865. /*!
  866. * @name Register CAU_ROTL_CASR, field VER[31:28] (WO)
  867. *
  868. * Values:
  869. * - 0001 - Initial CAU version
  870. * - 0010 - Second version, added support for SHA-256 algorithm.(This is the
  871. * value on this device)
  872. */
  873. //@{
  874. #define BP_CAU_ROTL_CASR_VER (28U) //!< Bit position for CAU_ROTL_CASR_VER.
  875. #define BM_CAU_ROTL_CASR_VER (0xF0000000U) //!< Bit mask for CAU_ROTL_CASR_VER.
  876. #define BS_CAU_ROTL_CASR_VER (4U) //!< Bit field size in bits for CAU_ROTL_CASR_VER.
  877. //! @brief Format value for bitfield CAU_ROTL_CASR_VER.
  878. #define BF_CAU_ROTL_CASR_VER(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_ROTL_CASR_VER), uint32_t) & BM_CAU_ROTL_CASR_VER)
  879. //@}
  880. //-------------------------------------------------------------------------------------------
  881. // HW_CAU_ROTL_CAA - Accumulator register - Rotate Left command
  882. //-------------------------------------------------------------------------------------------
  883. #ifndef __LANGUAGE_ASM__
  884. /*!
  885. * @brief HW_CAU_ROTL_CAA - Accumulator register - Rotate Left command (WO)
  886. *
  887. * Reset value: 0x00000000U
  888. */
  889. typedef union _hw_cau_rotl_caa
  890. {
  891. uint32_t U;
  892. struct _hw_cau_rotl_caa_bitfields
  893. {
  894. uint32_t RESERVED0 : 32; //!< [31:0]
  895. } B;
  896. } hw_cau_rotl_caa_t;
  897. #endif
  898. /*!
  899. * @name Constants and macros for entire CAU_ROTL_CAA register
  900. */
  901. //@{
  902. #define HW_CAU_ROTL_CAA_ADDR (REGS_CAU_BASE + 0x9C4U)
  903. #ifndef __LANGUAGE_ASM__
  904. #define HW_CAU_ROTL_CAA (*(__O hw_cau_rotl_caa_t *) HW_CAU_ROTL_CAA_ADDR)
  905. #define HW_CAU_ROTL_CAA_WR(v) (HW_CAU_ROTL_CAA.U = (v))
  906. #endif
  907. //@}
  908. /*
  909. * Constants & macros for individual CAU_ROTL_CAA bitfields
  910. */
  911. //-------------------------------------------------------------------------------------------
  912. // HW_CAU_ROTL_CA - General Purpose Register 0 - Rotate Left command
  913. //-------------------------------------------------------------------------------------------
  914. #ifndef __LANGUAGE_ASM__
  915. /*!
  916. * @brief HW_CAU_ROTL_CA - General Purpose Register 0 - Rotate Left command (WO)
  917. *
  918. * Reset value: 0x00000000U
  919. */
  920. typedef union _hw_cau_rotl_ca
  921. {
  922. uint32_t U;
  923. struct _hw_cau_rotl_ca_bitfields
  924. {
  925. uint32_t RESERVED0 : 32; //!< [31:0]
  926. } B;
  927. } hw_cau_rotl_ca_t;
  928. #endif
  929. /*!
  930. * @name Constants and macros for entire CAU_ROTL_CA register
  931. */
  932. //@{
  933. #define HW_CAU_ROTL_CA_COUNT (9U)
  934. #define HW_CAU_ROTL_CA_ADDR(n) (REGS_CAU_BASE + 0x9C8U + (0x4U * n))
  935. #ifndef __LANGUAGE_ASM__
  936. #define HW_CAU_ROTL_CA(n) (*(__O hw_cau_rotl_ca_t *) HW_CAU_ROTL_CA_ADDR(n))
  937. #define HW_CAU_ROTL_CA_WR(n, v) (HW_CAU_ROTL_CA(n).U = (v))
  938. #endif
  939. //@}
  940. /*
  941. * Constants & macros for individual CAU_ROTL_CA bitfields
  942. */
  943. //-------------------------------------------------------------------------------------------
  944. // HW_CAU_AESC_CASR - Status register - AES Column Operation command
  945. //-------------------------------------------------------------------------------------------
  946. #ifndef __LANGUAGE_ASM__
  947. /*!
  948. * @brief HW_CAU_AESC_CASR - Status register - AES Column Operation command (WO)
  949. *
  950. * Reset value: 0x20000000U
  951. */
  952. typedef union _hw_cau_aesc_casr
  953. {
  954. uint32_t U;
  955. struct _hw_cau_aesc_casr_bitfields
  956. {
  957. uint32_t IC : 1; //!< [0]
  958. uint32_t DPE : 1; //!< [1]
  959. uint32_t RESERVED0 : 26; //!< [27:2]
  960. uint32_t VER : 4; //!< [31:28] CAU version
  961. } B;
  962. } hw_cau_aesc_casr_t;
  963. #endif
  964. /*!
  965. * @name Constants and macros for entire CAU_AESC_CASR register
  966. */
  967. //@{
  968. #define HW_CAU_AESC_CASR_ADDR (REGS_CAU_BASE + 0xB00U)
  969. #ifndef __LANGUAGE_ASM__
  970. #define HW_CAU_AESC_CASR (*(__O hw_cau_aesc_casr_t *) HW_CAU_AESC_CASR_ADDR)
  971. #define HW_CAU_AESC_CASR_WR(v) (HW_CAU_AESC_CASR.U = (v))
  972. #endif
  973. //@}
  974. /*
  975. * Constants & macros for individual CAU_AESC_CASR bitfields
  976. */
  977. /*!
  978. * @name Register CAU_AESC_CASR, field IC[0] (WO)
  979. *
  980. * Values:
  981. * - 0 - No illegal commands issued
  982. * - 1 - Illegal command issued
  983. */
  984. //@{
  985. #define BP_CAU_AESC_CASR_IC (0U) //!< Bit position for CAU_AESC_CASR_IC.
  986. #define BM_CAU_AESC_CASR_IC (0x00000001U) //!< Bit mask for CAU_AESC_CASR_IC.
  987. #define BS_CAU_AESC_CASR_IC (1U) //!< Bit field size in bits for CAU_AESC_CASR_IC.
  988. //! @brief Format value for bitfield CAU_AESC_CASR_IC.
  989. #define BF_CAU_AESC_CASR_IC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_AESC_CASR_IC), uint32_t) & BM_CAU_AESC_CASR_IC)
  990. //@}
  991. /*!
  992. * @name Register CAU_AESC_CASR, field DPE[1] (WO)
  993. *
  994. * Values:
  995. * - 0 - No error detected
  996. * - 1 - DES key parity error detected
  997. */
  998. //@{
  999. #define BP_CAU_AESC_CASR_DPE (1U) //!< Bit position for CAU_AESC_CASR_DPE.
  1000. #define BM_CAU_AESC_CASR_DPE (0x00000002U) //!< Bit mask for CAU_AESC_CASR_DPE.
  1001. #define BS_CAU_AESC_CASR_DPE (1U) //!< Bit field size in bits for CAU_AESC_CASR_DPE.
  1002. //! @brief Format value for bitfield CAU_AESC_CASR_DPE.
  1003. #define BF_CAU_AESC_CASR_DPE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_AESC_CASR_DPE), uint32_t) & BM_CAU_AESC_CASR_DPE)
  1004. //@}
  1005. /*!
  1006. * @name Register CAU_AESC_CASR, field VER[31:28] (WO)
  1007. *
  1008. * Values:
  1009. * - 0001 - Initial CAU version
  1010. * - 0010 - Second version, added support for SHA-256 algorithm.(This is the
  1011. * value on this device)
  1012. */
  1013. //@{
  1014. #define BP_CAU_AESC_CASR_VER (28U) //!< Bit position for CAU_AESC_CASR_VER.
  1015. #define BM_CAU_AESC_CASR_VER (0xF0000000U) //!< Bit mask for CAU_AESC_CASR_VER.
  1016. #define BS_CAU_AESC_CASR_VER (4U) //!< Bit field size in bits for CAU_AESC_CASR_VER.
  1017. //! @brief Format value for bitfield CAU_AESC_CASR_VER.
  1018. #define BF_CAU_AESC_CASR_VER(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_AESC_CASR_VER), uint32_t) & BM_CAU_AESC_CASR_VER)
  1019. //@}
  1020. //-------------------------------------------------------------------------------------------
  1021. // HW_CAU_AESC_CAA - Accumulator register - AES Column Operation command
  1022. //-------------------------------------------------------------------------------------------
  1023. #ifndef __LANGUAGE_ASM__
  1024. /*!
  1025. * @brief HW_CAU_AESC_CAA - Accumulator register - AES Column Operation command (WO)
  1026. *
  1027. * Reset value: 0x00000000U
  1028. */
  1029. typedef union _hw_cau_aesc_caa
  1030. {
  1031. uint32_t U;
  1032. struct _hw_cau_aesc_caa_bitfields
  1033. {
  1034. uint32_t RESERVED0 : 32; //!< [31:0]
  1035. } B;
  1036. } hw_cau_aesc_caa_t;
  1037. #endif
  1038. /*!
  1039. * @name Constants and macros for entire CAU_AESC_CAA register
  1040. */
  1041. //@{
  1042. #define HW_CAU_AESC_CAA_ADDR (REGS_CAU_BASE + 0xB04U)
  1043. #ifndef __LANGUAGE_ASM__
  1044. #define HW_CAU_AESC_CAA (*(__O hw_cau_aesc_caa_t *) HW_CAU_AESC_CAA_ADDR)
  1045. #define HW_CAU_AESC_CAA_WR(v) (HW_CAU_AESC_CAA.U = (v))
  1046. #endif
  1047. //@}
  1048. /*
  1049. * Constants & macros for individual CAU_AESC_CAA bitfields
  1050. */
  1051. //-------------------------------------------------------------------------------------------
  1052. // HW_CAU_AESC_CA - General Purpose Register 0 - AES Column Operation command
  1053. //-------------------------------------------------------------------------------------------
  1054. #ifndef __LANGUAGE_ASM__
  1055. /*!
  1056. * @brief HW_CAU_AESC_CA - General Purpose Register 0 - AES Column Operation command (WO)
  1057. *
  1058. * Reset value: 0x00000000U
  1059. */
  1060. typedef union _hw_cau_aesc_ca
  1061. {
  1062. uint32_t U;
  1063. struct _hw_cau_aesc_ca_bitfields
  1064. {
  1065. uint32_t RESERVED0 : 32; //!< [31:0]
  1066. } B;
  1067. } hw_cau_aesc_ca_t;
  1068. #endif
  1069. /*!
  1070. * @name Constants and macros for entire CAU_AESC_CA register
  1071. */
  1072. //@{
  1073. #define HW_CAU_AESC_CA_COUNT (9U)
  1074. #define HW_CAU_AESC_CA_ADDR(n) (REGS_CAU_BASE + 0xB08U + (0x4U * n))
  1075. #ifndef __LANGUAGE_ASM__
  1076. #define HW_CAU_AESC_CA(n) (*(__O hw_cau_aesc_ca_t *) HW_CAU_AESC_CA_ADDR(n))
  1077. #define HW_CAU_AESC_CA_WR(n, v) (HW_CAU_AESC_CA(n).U = (v))
  1078. #endif
  1079. //@}
  1080. /*
  1081. * Constants & macros for individual CAU_AESC_CA bitfields
  1082. */
  1083. //-------------------------------------------------------------------------------------------
  1084. // HW_CAU_AESIC_CASR - Status register - AES Inverse Column Operation command
  1085. //-------------------------------------------------------------------------------------------
  1086. #ifndef __LANGUAGE_ASM__
  1087. /*!
  1088. * @brief HW_CAU_AESIC_CASR - Status register - AES Inverse Column Operation command (WO)
  1089. *
  1090. * Reset value: 0x20000000U
  1091. */
  1092. typedef union _hw_cau_aesic_casr
  1093. {
  1094. uint32_t U;
  1095. struct _hw_cau_aesic_casr_bitfields
  1096. {
  1097. uint32_t IC : 1; //!< [0]
  1098. uint32_t DPE : 1; //!< [1]
  1099. uint32_t RESERVED0 : 26; //!< [27:2]
  1100. uint32_t VER : 4; //!< [31:28] CAU version
  1101. } B;
  1102. } hw_cau_aesic_casr_t;
  1103. #endif
  1104. /*!
  1105. * @name Constants and macros for entire CAU_AESIC_CASR register
  1106. */
  1107. //@{
  1108. #define HW_CAU_AESIC_CASR_ADDR (REGS_CAU_BASE + 0xB40U)
  1109. #ifndef __LANGUAGE_ASM__
  1110. #define HW_CAU_AESIC_CASR (*(__O hw_cau_aesic_casr_t *) HW_CAU_AESIC_CASR_ADDR)
  1111. #define HW_CAU_AESIC_CASR_WR(v) (HW_CAU_AESIC_CASR.U = (v))
  1112. #endif
  1113. //@}
  1114. /*
  1115. * Constants & macros for individual CAU_AESIC_CASR bitfields
  1116. */
  1117. /*!
  1118. * @name Register CAU_AESIC_CASR, field IC[0] (WO)
  1119. *
  1120. * Values:
  1121. * - 0 - No illegal commands issued
  1122. * - 1 - Illegal command issued
  1123. */
  1124. //@{
  1125. #define BP_CAU_AESIC_CASR_IC (0U) //!< Bit position for CAU_AESIC_CASR_IC.
  1126. #define BM_CAU_AESIC_CASR_IC (0x00000001U) //!< Bit mask for CAU_AESIC_CASR_IC.
  1127. #define BS_CAU_AESIC_CASR_IC (1U) //!< Bit field size in bits for CAU_AESIC_CASR_IC.
  1128. //! @brief Format value for bitfield CAU_AESIC_CASR_IC.
  1129. #define BF_CAU_AESIC_CASR_IC(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_AESIC_CASR_IC), uint32_t) & BM_CAU_AESIC_CASR_IC)
  1130. //@}
  1131. /*!
  1132. * @name Register CAU_AESIC_CASR, field DPE[1] (WO)
  1133. *
  1134. * Values:
  1135. * - 0 - No error detected
  1136. * - 1 - DES key parity error detected
  1137. */
  1138. //@{
  1139. #define BP_CAU_AESIC_CASR_DPE (1U) //!< Bit position for CAU_AESIC_CASR_DPE.
  1140. #define BM_CAU_AESIC_CASR_DPE (0x00000002U) //!< Bit mask for CAU_AESIC_CASR_DPE.
  1141. #define BS_CAU_AESIC_CASR_DPE (1U) //!< Bit field size in bits for CAU_AESIC_CASR_DPE.
  1142. //! @brief Format value for bitfield CAU_AESIC_CASR_DPE.
  1143. #define BF_CAU_AESIC_CASR_DPE(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_AESIC_CASR_DPE), uint32_t) & BM_CAU_AESIC_CASR_DPE)
  1144. //@}
  1145. /*!
  1146. * @name Register CAU_AESIC_CASR, field VER[31:28] (WO)
  1147. *
  1148. * Values:
  1149. * - 0001 - Initial CAU version
  1150. * - 0010 - Second version, added support for SHA-256 algorithm.(This is the
  1151. * value on this device)
  1152. */
  1153. //@{
  1154. #define BP_CAU_AESIC_CASR_VER (28U) //!< Bit position for CAU_AESIC_CASR_VER.
  1155. #define BM_CAU_AESIC_CASR_VER (0xF0000000U) //!< Bit mask for CAU_AESIC_CASR_VER.
  1156. #define BS_CAU_AESIC_CASR_VER (4U) //!< Bit field size in bits for CAU_AESIC_CASR_VER.
  1157. //! @brief Format value for bitfield CAU_AESIC_CASR_VER.
  1158. #define BF_CAU_AESIC_CASR_VER(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint32_t) << BP_CAU_AESIC_CASR_VER), uint32_t) & BM_CAU_AESIC_CASR_VER)
  1159. //@}
  1160. //-------------------------------------------------------------------------------------------
  1161. // HW_CAU_AESIC_CAA - Accumulator register - AES Inverse Column Operation command
  1162. //-------------------------------------------------------------------------------------------
  1163. #ifndef __LANGUAGE_ASM__
  1164. /*!
  1165. * @brief HW_CAU_AESIC_CAA - Accumulator register - AES Inverse Column Operation command (WO)
  1166. *
  1167. * Reset value: 0x00000000U
  1168. */
  1169. typedef union _hw_cau_aesic_caa
  1170. {
  1171. uint32_t U;
  1172. struct _hw_cau_aesic_caa_bitfields
  1173. {
  1174. uint32_t RESERVED0 : 32; //!< [31:0]
  1175. } B;
  1176. } hw_cau_aesic_caa_t;
  1177. #endif
  1178. /*!
  1179. * @name Constants and macros for entire CAU_AESIC_CAA register
  1180. */
  1181. //@{
  1182. #define HW_CAU_AESIC_CAA_ADDR (REGS_CAU_BASE + 0xB44U)
  1183. #ifndef __LANGUAGE_ASM__
  1184. #define HW_CAU_AESIC_CAA (*(__O hw_cau_aesic_caa_t *) HW_CAU_AESIC_CAA_ADDR)
  1185. #define HW_CAU_AESIC_CAA_WR(v) (HW_CAU_AESIC_CAA.U = (v))
  1186. #endif
  1187. //@}
  1188. /*
  1189. * Constants & macros for individual CAU_AESIC_CAA bitfields
  1190. */
  1191. //-------------------------------------------------------------------------------------------
  1192. // HW_CAU_AESIC_CA - General Purpose Register 0 - AES Inverse Column Operation command
  1193. //-------------------------------------------------------------------------------------------
  1194. #ifndef __LANGUAGE_ASM__
  1195. /*!
  1196. * @brief HW_CAU_AESIC_CA - General Purpose Register 0 - AES Inverse Column Operation command (WO)
  1197. *
  1198. * Reset value: 0x00000000U
  1199. */
  1200. typedef union _hw_cau_aesic_ca
  1201. {
  1202. uint32_t U;
  1203. struct _hw_cau_aesic_ca_bitfields
  1204. {
  1205. uint32_t RESERVED0 : 32; //!< [31:0]
  1206. } B;
  1207. } hw_cau_aesic_ca_t;
  1208. #endif
  1209. /*!
  1210. * @name Constants and macros for entire CAU_AESIC_CA register
  1211. */
  1212. //@{
  1213. #define HW_CAU_AESIC_CA_COUNT (9U)
  1214. #define HW_CAU_AESIC_CA_ADDR(n) (REGS_CAU_BASE + 0xB48U + (0x4U * n))
  1215. #ifndef __LANGUAGE_ASM__
  1216. #define HW_CAU_AESIC_CA(n) (*(__O hw_cau_aesic_ca_t *) HW_CAU_AESIC_CA_ADDR(n))
  1217. #define HW_CAU_AESIC_CA_WR(n, v) (HW_CAU_AESIC_CA(n).U = (v))
  1218. #endif
  1219. //@}
  1220. /*
  1221. * Constants & macros for individual CAU_AESIC_CA bitfields
  1222. */
  1223. //-------------------------------------------------------------------------------------------
  1224. // hw_cau_t - module struct
  1225. //-------------------------------------------------------------------------------------------
  1226. /*!
  1227. * @brief All CAU module registers.
  1228. */
  1229. #ifndef __LANGUAGE_ASM__
  1230. #pragma pack(1)
  1231. typedef struct _hw_cau
  1232. {
  1233. __O hw_cau_direct_t DIRECT[16]; //!< [0x0] Direct access register 0
  1234. uint8_t _reserved0[2048];
  1235. __O hw_cau_ldr_casr_t LDR_CASR; //!< [0x840] Status register - Load Register command
  1236. __O hw_cau_ldr_caa_t LDR_CAA; //!< [0x844] Accumulator register - Load Register command
  1237. __O hw_cau_ldr_ca_t LDR_CA[9]; //!< [0x848] General Purpose Register 0 - Load Register command
  1238. uint8_t _reserved1[20];
  1239. __I hw_cau_str_casr_t STR_CASR; //!< [0x880] Status register - Store Register command
  1240. __I hw_cau_str_caa_t STR_CAA; //!< [0x884] Accumulator register - Store Register command
  1241. __I hw_cau_str_ca_t STR_CA[9]; //!< [0x888] General Purpose Register 0 - Store Register command
  1242. uint8_t _reserved2[20];
  1243. __O hw_cau_adr_casr_t ADR_CASR; //!< [0x8C0] Status register - Add Register command
  1244. __O hw_cau_adr_caa_t ADR_CAA; //!< [0x8C4] Accumulator register - Add to register command
  1245. __O hw_cau_adr_ca_t ADR_CA[9]; //!< [0x8C8] General Purpose Register 0 - Add to register command
  1246. uint8_t _reserved3[20];
  1247. __O hw_cau_radr_casr_t RADR_CASR; //!< [0x900] Status register - Reverse and Add to Register command
  1248. __O hw_cau_radr_caa_t RADR_CAA; //!< [0x904] Accumulator register - Reverse and Add to Register command
  1249. __O hw_cau_radr_ca_t RADR_CA[9]; //!< [0x908] General Purpose Register 0 - Reverse and Add to Register command
  1250. uint8_t _reserved4[84];
  1251. __O hw_cau_xor_casr_t XOR_CASR; //!< [0x980] Status register - Exclusive Or command
  1252. __O hw_cau_xor_caa_t XOR_CAA; //!< [0x984] Accumulator register - Exclusive Or command
  1253. __O hw_cau_xor_ca_t XOR_CA[9]; //!< [0x988] General Purpose Register 0 - Exclusive Or command
  1254. uint8_t _reserved5[20];
  1255. __O hw_cau_rotl_casr_t ROTL_CASR; //!< [0x9C0] Status register - Rotate Left command
  1256. __O hw_cau_rotl_caa_t ROTL_CAA; //!< [0x9C4] Accumulator register - Rotate Left command
  1257. __O hw_cau_rotl_ca_t ROTL_CA[9]; //!< [0x9C8] General Purpose Register 0 - Rotate Left command
  1258. uint8_t _reserved6[276];
  1259. __O hw_cau_aesc_casr_t AESC_CASR; //!< [0xB00] Status register - AES Column Operation command
  1260. __O hw_cau_aesc_caa_t AESC_CAA; //!< [0xB04] Accumulator register - AES Column Operation command
  1261. __O hw_cau_aesc_ca_t AESC_CA[9]; //!< [0xB08] General Purpose Register 0 - AES Column Operation command
  1262. uint8_t _reserved7[20];
  1263. __O hw_cau_aesic_casr_t AESIC_CASR; //!< [0xB40] Status register - AES Inverse Column Operation command
  1264. __O hw_cau_aesic_caa_t AESIC_CAA; //!< [0xB44] Accumulator register - AES Inverse Column Operation command
  1265. __O hw_cau_aesic_ca_t AESIC_CA[9]; //!< [0xB48] General Purpose Register 0 - AES Inverse Column Operation command
  1266. } hw_cau_t;
  1267. #pragma pack()
  1268. //! @brief Macro to access all CAU registers.
  1269. //! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct,
  1270. //! use the '&' operator, like <code>&HW_CAU</code>.
  1271. #define HW_CAU (*(hw_cau_t *) REGS_CAU_BASE)
  1272. #endif
  1273. #endif // __HW_CAU_REGISTERS_H__
  1274. // v22/130726/0.9
  1275. // EOF