@@ -1204,17 +1204,62 @@ struct mlxcx {
12041204};
12051205
12061206/*
1207- * Register access
1207+ * Register access. Use static inlines.
12081208 */
1209- extern uint16_t mlxcx_get16 (mlxcx_t * , uintptr_t );
1210- extern uint32_t mlxcx_get32 (mlxcx_t * , uintptr_t );
1211- extern uint64_t mlxcx_get64 (mlxcx_t * , uintptr_t );
1209+ static inline uint16_t
1210+ mlxcx_get16 (mlxcx_t * mlxp , uintptr_t off )
1211+ {
1212+ uintptr_t addr = off + (uintptr_t )mlxp -> mlx_regs_base ;
1213+ return (ddi_get16 (mlxp -> mlx_regs_handle , (void * )addr ));
1214+ }
1215+
1216+ static inline uint32_t
1217+ mlxcx_get32 (mlxcx_t * mlxp , uintptr_t off )
1218+ {
1219+ uintptr_t addr = off + (uintptr_t )mlxp -> mlx_regs_base ;
1220+ return (ddi_get32 (mlxp -> mlx_regs_handle , (void * )addr ));
1221+ }
1222+
1223+ static inline uint64_t
1224+ mlxcx_get64 (mlxcx_t * mlxp , uintptr_t off )
1225+ {
1226+ uintptr_t addr = off + (uintptr_t )mlxp -> mlx_regs_base ;
1227+ return (ddi_get64 (mlxp -> mlx_regs_handle , (void * )addr ));
1228+ }
1229+
1230+ static inline void
1231+ mlxcx_put32 (mlxcx_t * mlxp , uintptr_t off , uint32_t val )
1232+ {
1233+ uintptr_t addr = off + (uintptr_t )mlxp -> mlx_regs_base ;
1234+ ddi_put32 (mlxp -> mlx_regs_handle , (void * )addr , val );
1235+ }
12121236
1213- extern void mlxcx_put32 (mlxcx_t * , uintptr_t , uint32_t );
1214- extern void mlxcx_put64 (mlxcx_t * , uintptr_t , uint64_t );
1237+ static inline void
1238+ mlxcx_put64 (mlxcx_t * mlxp , uintptr_t off , uint64_t val )
1239+ {
1240+ uintptr_t addr = off + (uintptr_t )mlxp -> mlx_regs_base ;
1241+ ddi_put64 (mlxp -> mlx_regs_handle , (void * )addr , val );
1242+ }
1243+
1244+ static inline void
1245+ mlxcx_uar_put32 (mlxcx_t * mlxp , mlxcx_uar_t * mlu , uintptr_t off , uint32_t val )
1246+ {
1247+ /*
1248+ * The UAR is always inside the first BAR, which we mapped as
1249+ * mlx_regs
1250+ */
1251+ uintptr_t addr = off + (uintptr_t )mlu -> mlu_base +
1252+ (uintptr_t )mlxp -> mlx_regs_base ;
1253+ ddi_put32 (mlxp -> mlx_regs_handle , (void * )addr , val );
1254+ }
12151255
1216- extern void mlxcx_uar_put32 (mlxcx_t * , mlxcx_uar_t * , uintptr_t , uint32_t );
1217- extern void mlxcx_uar_put64 (mlxcx_t * , mlxcx_uar_t * , uintptr_t , uint64_t );
1256+ static inline void
1257+ mlxcx_uar_put64 (mlxcx_t * mlxp , mlxcx_uar_t * mlu , uintptr_t off , uint64_t val )
1258+ {
1259+ uintptr_t addr = off + (uintptr_t )mlu -> mlu_base +
1260+ (uintptr_t )mlxp -> mlx_regs_base ;
1261+ ddi_put64 (mlxp -> mlx_regs_handle , (void * )addr , val );
1262+ }
12181263
12191264/*
12201265 * Logging functions.
0 commit comments