@@ -1204,17 +1204,62 @@ struct mlxcx {
1204
1204
};
1205
1205
1206
1206
/*
1207
- * Register access
1207
+ * Register access. Use static inlines.
1208
1208
*/
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
+ }
1212
1236
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
+ }
1215
1255
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
+ }
1218
1263
1219
1264
/*
1220
1265
* Logging functions.
0 commit comments