regs.h 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470
  1. /*
  2. * Copyright (C) 2012, Freescale Semiconductor, Inc. All Rights Reserved
  3. * THIS SOURCE CODE IS CONFIDENTIAL AND PROPRIETARY AND MAY NOT
  4. * BE USED OR DISTRIBUTED WITHOUT THE WRITTEN PERMISSION OF
  5. * Freescale Semiconductor, Inc.
  6. */
  7. #ifndef _REGS_H
  8. #define _REGS_H 1
  9. //
  10. // define base address of the register block only if it is not already
  11. // defined, which allows the compiler to override at build time for
  12. // users who've mapped their registers to locations other than the
  13. // physical location
  14. //
  15. #ifndef REGS_BASE
  16. #define REGS_BASE 0x00000000
  17. #endif
  18. //
  19. // common register types
  20. //
  21. #ifndef __LANGUAGE_ASM__
  22. typedef unsigned char reg8_t;
  23. typedef unsigned short reg16_t;
  24. typedef unsigned int reg32_t;
  25. #endif
  26. //
  27. // Typecast macro for C or asm. In C, the cast is applied, while in asm it is excluded. This is
  28. // used to simplify macro definitions in the module register headers.
  29. //
  30. #ifndef __REG_VALUE_TYPE
  31. #ifndef __LANGUAGE_ASM__
  32. #define __REG_VALUE_TYPE(v, t) ((t)(v))
  33. #else
  34. #define __REG_VALUE_TYPE(v, t) (v)
  35. #endif
  36. #endif
  37. //
  38. // macros for single instance registers
  39. //
  40. #define BF_SET(reg, field) HW_##reg##_SET(BM_##reg##_##field)
  41. #define BF_CLR(reg, field) HW_##reg##_CLR(BM_##reg##_##field)
  42. #define BF_TOG(reg, field) HW_##reg##_TOG(BM_##reg##_##field)
  43. #define BF_SETV(reg, field, v) HW_##reg##_SET(BF_##reg##_##field(v))
  44. #define BF_CLRV(reg, field, v) HW_##reg##_CLR(BF_##reg##_##field(v))
  45. #define BF_TOGV(reg, field, v) HW_##reg##_TOG(BF_##reg##_##field(v))
  46. #define BV_FLD(reg, field, sym) BF_##reg##_##field(BV_##reg##_##field##__##sym)
  47. #define BV_VAL(reg, field, sym) BV_##reg##_##field##__##sym
  48. #define BF_RD(reg, field) HW_##reg.B.field
  49. #define BF_WR(reg, field, v) BW_##reg##_##field(v)
  50. #define BF_CS1(reg, f1, v1) \
  51. (HW_##reg##_CLR(BM_##reg##_##f1), \
  52. HW_##reg##_SET(BF_##reg##_##f1(v1)))
  53. #define BF_CS2(reg, f1, v1, f2, v2) \
  54. (HW_##reg##_CLR(BM_##reg##_##f1 | \
  55. BM_##reg##_##f2), \
  56. HW_##reg##_SET(BF_##reg##_##f1(v1) | \
  57. BF_##reg##_##f2(v2)))
  58. #define BF_CS3(reg, f1, v1, f2, v2, f3, v3) \
  59. (HW_##reg##_CLR(BM_##reg##_##f1 | \
  60. BM_##reg##_##f2 | \
  61. BM_##reg##_##f3), \
  62. HW_##reg##_SET(BF_##reg##_##f1(v1) | \
  63. BF_##reg##_##f2(v2) | \
  64. BF_##reg##_##f3(v3)))
  65. #define BF_CS4(reg, f1, v1, f2, v2, f3, v3, f4, v4) \
  66. (HW_##reg##_CLR(BM_##reg##_##f1 | \
  67. BM_##reg##_##f2 | \
  68. BM_##reg##_##f3 | \
  69. BM_##reg##_##f4), \
  70. HW_##reg##_SET(BF_##reg##_##f1(v1) | \
  71. BF_##reg##_##f2(v2) | \
  72. BF_##reg##_##f3(v3) | \
  73. BF_##reg##_##f4(v4)))
  74. #define BF_CS5(reg, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5) \
  75. (HW_##reg##_CLR(BM_##reg##_##f1 | \
  76. BM_##reg##_##f2 | \
  77. BM_##reg##_##f3 | \
  78. BM_##reg##_##f4 | \
  79. BM_##reg##_##f5), \
  80. HW_##reg##_SET(BF_##reg##_##f1(v1) | \
  81. BF_##reg##_##f2(v2) | \
  82. BF_##reg##_##f3(v3) | \
  83. BF_##reg##_##f4(v4) | \
  84. BF_##reg##_##f5(v5)))
  85. #define BF_CS6(reg, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6) \
  86. (HW_##reg##_CLR(BM_##reg##_##f1 | \
  87. BM_##reg##_##f2 | \
  88. BM_##reg##_##f3 | \
  89. BM_##reg##_##f4 | \
  90. BM_##reg##_##f5 | \
  91. BM_##reg##_##f6), \
  92. HW_##reg##_SET(BF_##reg##_##f1(v1) | \
  93. BF_##reg##_##f2(v2) | \
  94. BF_##reg##_##f3(v3) | \
  95. BF_##reg##_##f4(v4) | \
  96. BF_##reg##_##f5(v5) | \
  97. BF_##reg##_##f6(v6)))
  98. #define BF_CS7(reg, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6, f7, v7) \
  99. (HW_##reg##_CLR(BM_##reg##_##f1 | \
  100. BM_##reg##_##f2 | \
  101. BM_##reg##_##f3 | \
  102. BM_##reg##_##f4 | \
  103. BM_##reg##_##f5 | \
  104. BM_##reg##_##f6 | \
  105. BM_##reg##_##f7), \
  106. HW_##reg##_SET(BF_##reg##_##f1(v1) | \
  107. BF_##reg##_##f2(v2) | \
  108. BF_##reg##_##f3(v3) | \
  109. BF_##reg##_##f4(v4) | \
  110. BF_##reg##_##f5(v5) | \
  111. BF_##reg##_##f6(v6) | \
  112. BF_##reg##_##f7(v7)))
  113. #define BF_CS8(reg, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6, f7, v7, f8, v8) \
  114. (HW_##reg##_CLR(BM_##reg##_##f1 | \
  115. BM_##reg##_##f2 | \
  116. BM_##reg##_##f3 | \
  117. BM_##reg##_##f4 | \
  118. BM_##reg##_##f5 | \
  119. BM_##reg##_##f6 | \
  120. BM_##reg##_##f7 | \
  121. BM_##reg##_##f8), \
  122. HW_##reg##_SET(BF_##reg##_##f1(v1) | \
  123. BF_##reg##_##f2(v2) | \
  124. BF_##reg##_##f3(v3) | \
  125. BF_##reg##_##f4(v4) | \
  126. BF_##reg##_##f5(v5) | \
  127. BF_##reg##_##f6(v6) | \
  128. BF_##reg##_##f7(v7) | \
  129. BF_##reg##_##f8(v8)))
  130. //
  131. // macros for multiple instance registers
  132. //
  133. #define BF_SETn(reg, n, field) HW_##reg##_SET(n, BM_##reg##_##field)
  134. #define BF_CLRn(reg, n, field) HW_##reg##_CLR(n, BM_##reg##_##field)
  135. #define BF_TOGn(reg, n, field) HW_##reg##_TOG(n, BM_##reg##_##field)
  136. #define BF_SETVn(reg, n, field, v) HW_##reg##_SET(n, BF_##reg##_##field(v))
  137. #define BF_CLRVn(reg, n, field, v) HW_##reg##_CLR(n, BF_##reg##_##field(v))
  138. #define BF_TOGVn(reg, n, field, v) HW_##reg##_TOG(n, BF_##reg##_##field(v))
  139. #define BV_FLDn(reg, n, field, sym) BF_##reg##_##field(BV_##reg##_##field##__##sym)
  140. #define BV_VALn(reg, n, field, sym) BV_##reg##_##field##__##sym
  141. #define BF_RDn(reg, n, field) HW_##reg(n).B.field
  142. #define BF_WRn(reg, n, field, v) BW_##reg##_##field(n, v)
  143. #define BF_CS1n(reg, n, f1, v1) \
  144. (HW_##reg##_CLR(n, (BM_##reg##_##f1)), \
  145. HW_##reg##_SET(n, (BF_##reg##_##f1(v1))))
  146. #define BF_CS2n(reg, n, f1, v1, f2, v2) \
  147. (HW_##reg##_CLR(n, (BM_##reg##_##f1 | \
  148. BM_##reg##_##f2)), \
  149. HW_##reg##_SET(n, (BF_##reg##_##f1(v1) | \
  150. BF_##reg##_##f2(v2))))
  151. #define BF_CS3n(reg, n, f1, v1, f2, v2, f3, v3) \
  152. (HW_##reg##_CLR(n, (BM_##reg##_##f1 | \
  153. BM_##reg##_##f2 | \
  154. BM_##reg##_##f3)), \
  155. HW_##reg##_SET(n, (BF_##reg##_##f1(v1) | \
  156. BF_##reg##_##f2(v2) | \
  157. BF_##reg##_##f3(v3))))
  158. #define BF_CS4n(reg, n, f1, v1, f2, v2, f3, v3, f4, v4) \
  159. (HW_##reg##_CLR(n, (BM_##reg##_##f1 | \
  160. BM_##reg##_##f2 | \
  161. BM_##reg##_##f3 | \
  162. BM_##reg##_##f4)), \
  163. HW_##reg##_SET(n, (BF_##reg##_##f1(v1) | \
  164. BF_##reg##_##f2(v2) | \
  165. BF_##reg##_##f3(v3) | \
  166. BF_##reg##_##f4(v4))))
  167. #define BF_CS5n(reg, n, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5) \
  168. (HW_##reg##_CLR(n, (BM_##reg##_##f1 | \
  169. BM_##reg##_##f2 | \
  170. BM_##reg##_##f3 | \
  171. BM_##reg##_##f4 | \
  172. BM_##reg##_##f5)), \
  173. HW_##reg##_SET(n, (BF_##reg##_##f1(v1) | \
  174. BF_##reg##_##f2(v2) | \
  175. BF_##reg##_##f3(v3) | \
  176. BF_##reg##_##f4(v4) | \
  177. BF_##reg##_##f5(v5))))
  178. #define BF_CS6n(reg, n, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6) \
  179. (HW_##reg##_CLR(n, (BM_##reg##_##f1 | \
  180. BM_##reg##_##f2 | \
  181. BM_##reg##_##f3 | \
  182. BM_##reg##_##f4 | \
  183. BM_##reg##_##f5 | \
  184. BM_##reg##_##f6)), \
  185. HW_##reg##_SET(n, (BF_##reg##_##f1(v1) | \
  186. BF_##reg##_##f2(v2) | \
  187. BF_##reg##_##f3(v3) | \
  188. BF_##reg##_##f4(v4) | \
  189. BF_##reg##_##f5(v5) | \
  190. BF_##reg##_##f6(v6))))
  191. #define BF_CS7n(reg, n, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6, f7, v7) \
  192. (HW_##reg##_CLR(n, (BM_##reg##_##f1 | \
  193. BM_##reg##_##f2 | \
  194. BM_##reg##_##f3 | \
  195. BM_##reg##_##f4 | \
  196. BM_##reg##_##f5 | \
  197. BM_##reg##_##f6 | \
  198. BM_##reg##_##f7)), \
  199. HW_##reg##_SET(n, (BF_##reg##_##f1(v1) | \
  200. BF_##reg##_##f2(v2) | \
  201. BF_##reg##_##f3(v3) | \
  202. BF_##reg##_##f4(v4) | \
  203. BF_##reg##_##f5(v5) | \
  204. BF_##reg##_##f6(v6) | \
  205. BF_##reg##_##f7(v7))))
  206. #define BF_CS8n(reg, n, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6, f7, v7, f8, v8) \
  207. (HW_##reg##_CLR(n, (BM_##reg##_##f1 | \
  208. BM_##reg##_##f2 | \
  209. BM_##reg##_##f3 | \
  210. BM_##reg##_##f4 | \
  211. BM_##reg##_##f5 | \
  212. BM_##reg##_##f6 | \
  213. BM_##reg##_##f7 | \
  214. BM_##reg##_##f8)), \
  215. HW_##reg##_SET(n, (BF_##reg##_##f1(v1) | \
  216. BF_##reg##_##f2(v2) | \
  217. BF_##reg##_##f3(v3) | \
  218. BF_##reg##_##f4(v4) | \
  219. BF_##reg##_##f5(v5) | \
  220. BF_##reg##_##f6(v6) | \
  221. BF_##reg##_##f7(v7) | \
  222. BF_##reg##_##f8(v8))))
  223. //
  224. // macros for single instance MULTI-BLOCK registers
  225. //
  226. #define BFn_SET(reg, blk, field) HW_##reg##_SET(blk, BM_##reg##_##field)
  227. #define BFn_CLR(reg, blk, field) HW_##reg##_CLR(blk, BM_##reg##_##field)
  228. #define BFn_TOG(reg, blk, field) HW_##reg##_TOG(blk, BM_##reg##_##field)
  229. #define BFn_SETV(reg, blk, field, v) HW_##reg##_SET(blk, BF_##reg##_##field(v))
  230. #define BFn_CLRV(reg, blk, field, v) HW_##reg##_CLR(blk, BF_##reg##_##field(v))
  231. #define BFn_TOGV(reg, blk, field, v) HW_##reg##_TOG(blk, BF_##reg##_##field(v))
  232. #define BVn_FLD(reg, field, sym) BF_##reg##_##field(BV_##reg##_##field##__##sym)
  233. #define BVn_VAL(reg, field, sym) BV_##reg##_##field##__##sym
  234. #define BFn_RD(reg, blk, field) HW_##reg(blk).B.field
  235. #define BFn_WR(reg, blk, field, v) BW_##reg##_##field(blk, v)
  236. #define BFn_CS1(reg, blk, f1, v1) \
  237. (HW_##reg##_CLR(blk, BM_##reg##_##f1), \
  238. HW_##reg##_SET(blk, BF_##reg##_##f1(v1)))
  239. #define BFn_CS2(reg, blk, f1, v1, f2, v2) \
  240. (HW_##reg##_CLR(blk, BM_##reg##_##f1 | \
  241. BM_##reg##_##f2), \
  242. HW_##reg##_SET(blk, BF_##reg##_##f1(v1) | \
  243. BF_##reg##_##f2(v2)))
  244. #define BFn_CS3(reg, blk, f1, v1, f2, v2, f3, v3) \
  245. (HW_##reg##_CLR(blk, BM_##reg##_##f1 | \
  246. BM_##reg##_##f2 | \
  247. BM_##reg##_##f3), \
  248. HW_##reg##_SET(blk, BF_##reg##_##f1(v1) | \
  249. BF_##reg##_##f2(v2) | \
  250. BF_##reg##_##f3(v3)))
  251. #define BFn_CS4(reg, blk, f1, v1, f2, v2, f3, v3, f4, v4) \
  252. (HW_##reg##_CLR(blk, BM_##reg##_##f1 | \
  253. BM_##reg##_##f2 | \
  254. BM_##reg##_##f3 | \
  255. BM_##reg##_##f4), \
  256. HW_##reg##_SET(blk, BF_##reg##_##f1(v1) | \
  257. BF_##reg##_##f2(v2) | \
  258. BF_##reg##_##f3(v3) | \
  259. BF_##reg##_##f4(v4)))
  260. #define BFn_CS5(reg, blk, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5) \
  261. (HW_##reg##_CLR(blk, BM_##reg##_##f1 | \
  262. BM_##reg##_##f2 | \
  263. BM_##reg##_##f3 | \
  264. BM_##reg##_##f4 | \
  265. BM_##reg##_##f5), \
  266. HW_##reg##_SET(blk, BF_##reg##_##f1(v1) | \
  267. BF_##reg##_##f2(v2) | \
  268. BF_##reg##_##f3(v3) | \
  269. BF_##reg##_##f4(v4) | \
  270. BF_##reg##_##f5(v5)))
  271. #define BFn_CS6(reg, blk, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6) \
  272. (HW_##reg##_CLR(blk, BM_##reg##_##f1 | \
  273. BM_##reg##_##f2 | \
  274. BM_##reg##_##f3 | \
  275. BM_##reg##_##f4 | \
  276. BM_##reg##_##f5 | \
  277. BM_##reg##_##f6), \
  278. HW_##reg##_SET(blk, BF_##reg##_##f1(v1) | \
  279. BF_##reg##_##f2(v2) | \
  280. BF_##reg##_##f3(v3) | \
  281. BF_##reg##_##f4(v4) | \
  282. BF_##reg##_##f5(v5) | \
  283. BF_##reg##_##f6(v6)))
  284. #define BFn_CS7(reg, blk, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6, f7, v7) \
  285. (HW_##reg##_CLR(blk, BM_##reg##_##f1 | \
  286. BM_##reg##_##f2 | \
  287. BM_##reg##_##f3 | \
  288. BM_##reg##_##f4 | \
  289. BM_##reg##_##f5 | \
  290. BM_##reg##_##f6 | \
  291. BM_##reg##_##f7), \
  292. HW_##reg##_SET(blk, BF_##reg##_##f1(v1) | \
  293. BF_##reg##_##f2(v2) | \
  294. BF_##reg##_##f3(v3) | \
  295. BF_##reg##_##f4(v4) | \
  296. BF_##reg##_##f5(v5) | \
  297. BF_##reg##_##f6(v6) | \
  298. BF_##reg##_##f7(v7)))
  299. #define BFn_CS8(reg, blk, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6, f7, v7, f8, v8) \
  300. (HW_##reg##_CLR(blk, BM_##reg##_##f1 | \
  301. BM_##reg##_##f2 | \
  302. BM_##reg##_##f3 | \
  303. BM_##reg##_##f4 | \
  304. BM_##reg##_##f5 | \
  305. BM_##reg##_##f6 | \
  306. BM_##reg##_##f7 | \
  307. BM_##reg##_##f8), \
  308. HW_##reg##_SET(blk, BF_##reg##_##f1(v1) | \
  309. BF_##reg##_##f2(v2) | \
  310. BF_##reg##_##f3(v3) | \
  311. BF_##reg##_##f4(v4) | \
  312. BF_##reg##_##f5(v5) | \
  313. BF_##reg##_##f6(v6) | \
  314. BF_##reg##_##f7(v7) | \
  315. BF_##reg##_##f8(v8)))
  316. //
  317. // macros for MULTI-BLOCK multiple instance registers
  318. //
  319. #define BFn_SETn(reg, blk, n, field) HW_##reg##_SET(blk, n, BM_##reg##_##field)
  320. #define BFn_CLRn(reg, blk, n, field) HW_##reg##_CLR(blk, n, BM_##reg##_##field)
  321. #define BFn_TOGn(reg, blk, n, field) HW_##reg##_TOG(blk, n, BM_##reg##_##field)
  322. #define BFn_SETVn(reg, blk, n, field, v) HW_##reg##_SET(blk, n, BF_##reg##_##field(v))
  323. #define BFn_CLRVn(reg, blk, n, field, v) HW_##reg##_CLR(blk, n, BF_##reg##_##field(v))
  324. #define BFn_TOGVn(reg, blk, n, field, v) HW_##reg##_TOG(blk, n, BF_##reg##_##field(v))
  325. #define BVn_FLDn(reg, blk, n, field, sym) BF_##reg##_##field(BV_##reg##_##field##__##sym)
  326. #define BVn_VALn(reg, blk, n, field, sym) BV_##reg##_##field##__##sym
  327. #define BFn_RDn(reg, blk, n, field) HW_##reg(n).B.field
  328. #define BFn_WRn(reg, blk, n, field, v) BW_##reg##_##field(n, v)
  329. #define BFn_CS1n(reg, blk, n, f1, v1) \
  330. (HW_##reg##_CLR(blk, n, (BM_##reg##_##f1)), \
  331. HW_##reg##_SET(blk, n, (BF_##reg##_##f1(v1))))
  332. #define BFn_CS2n(reg, blk, n, f1, v1, f2, v2) \
  333. (HW_##reg##_CLR(blk, n, (BM_##reg##_##f1 | \
  334. BM_##reg##_##f2)), \
  335. HW_##reg##_SET(blk, n, (BF_##reg##_##f1(v1) | \
  336. BF_##reg##_##f2(v2))))
  337. #define BFn_CS3n(reg, blk, n, f1, v1, f2, v2, f3, v3) \
  338. (HW_##reg##_CLR(blk, n, (BM_##reg##_##f1 | \
  339. BM_##reg##_##f2 | \
  340. BM_##reg##_##f3)), \
  341. HW_##reg##_SET(blk, n, (BF_##reg##_##f1(v1) | \
  342. BF_##reg##_##f2(v2) | \
  343. BF_##reg##_##f3(v3))))
  344. #define BFn_CS4n(reg, blk, n, f1, v1, f2, v2, f3, v3, f4, v4) \
  345. (HW_##reg##_CLR(blk, n, (BM_##reg##_##f1 | \
  346. BM_##reg##_##f2 | \
  347. BM_##reg##_##f3 | \
  348. BM_##reg##_##f4)), \
  349. HW_##reg##_SET(blk, n, (BF_##reg##_##f1(v1) | \
  350. BF_##reg##_##f2(v2) | \
  351. BF_##reg##_##f3(v3) | \
  352. BF_##reg##_##f4(v4))))
  353. #define BFn_CS5n(reg, blk, n, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5) \
  354. (HW_##reg##_CLR(blk, n, (BM_##reg##_##f1 | \
  355. BM_##reg##_##f2 | \
  356. BM_##reg##_##f3 | \
  357. BM_##reg##_##f4 | \
  358. BM_##reg##_##f5)), \
  359. HW_##reg##_SET(blk, n, (BF_##reg##_##f1(v1) | \
  360. BF_##reg##_##f2(v2) | \
  361. BF_##reg##_##f3(v3) | \
  362. BF_##reg##_##f4(v4) | \
  363. BF_##reg##_##f5(v5))))
  364. #define BFn_CS6n(reg, blk, n, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6) \
  365. (HW_##reg##_CLR(blk, n, (BM_##reg##_##f1 | \
  366. BM_##reg##_##f2 | \
  367. BM_##reg##_##f3 | \
  368. BM_##reg##_##f4 | \
  369. BM_##reg##_##f5 | \
  370. BM_##reg##_##f6)), \
  371. HW_##reg##_SET(blk, n, (BF_##reg##_##f1(v1) | \
  372. BF_##reg##_##f2(v2) | \
  373. BF_##reg##_##f3(v3) | \
  374. BF_##reg##_##f4(v4) | \
  375. BF_##reg##_##f5(v5) | \
  376. BF_##reg##_##f6(v6))))
  377. #define BFn_CS7n(reg, blk, n, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6, f7, v7) \
  378. (HW_##reg##_CLR(blk, n, (BM_##reg##_##f1 | \
  379. BM_##reg##_##f2 | \
  380. BM_##reg##_##f3 | \
  381. BM_##reg##_##f4 | \
  382. BM_##reg##_##f5 | \
  383. BM_##reg##_##f6 | \
  384. BM_##reg##_##f7)), \
  385. HW_##reg##_SET(blk, n, (BF_##reg##_##f1(v1) | \
  386. BF_##reg##_##f2(v2) | \
  387. BF_##reg##_##f3(v3) | \
  388. BF_##reg##_##f4(v4) | \
  389. BF_##reg##_##f5(v5) | \
  390. BF_##reg##_##f6(v6) | \
  391. BF_##reg##_##f7(v7))))
  392. #define BFn_CS8n(reg, blk, n, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6, f7, v7, f8, v8) \
  393. (HW_##reg##_CLR(blk, n, (BM_##reg##_##f1 | \
  394. BM_##reg##_##f2 | \
  395. BM_##reg##_##f3 | \
  396. BM_##reg##_##f4 | \
  397. BM_##reg##_##f5 | \
  398. BM_##reg##_##f6 | \
  399. BM_##reg##_##f7 | \
  400. BM_##reg##_##f8)), \
  401. HW_##reg##_SET(blk, n, (BF_##reg##_##f1(v1) | \
  402. BF_##reg##_##f2(v2) | \
  403. BF_##reg##_##f3(v3) | \
  404. BF_##reg##_##f4(v4) | \
  405. BF_##reg##_##f5(v5) | \
  406. BF_##reg##_##f6(v6) | \
  407. BF_##reg##_##f7(v7) | \
  408. BF_##reg##_##f8(v8))))
  409. #endif // _REGS_H
  410. ////////////////////////////////////////////////////////////////////////////////