@@ -1236,17 +1236,62 @@ struct mlxcx {
12361236};
12371237
12381238/*
1239- * Register access
1239+ * Register access. Use static inlines.
12401240 */
1241- extern uint16_t mlxcx_get16 (mlxcx_t * , uintptr_t );
1242- extern uint32_t mlxcx_get32 (mlxcx_t * , uintptr_t );
1243- extern uint64_t mlxcx_get64 (mlxcx_t * , uintptr_t );
1241+ static inline uint16_t
1242+ mlxcx_get16 (mlxcx_t * mlxp , uintptr_t off )
1243+ {
1244+ uintptr_t addr = off + (uintptr_t )mlxp -> mlx_regs_base ;
1245+ return (ddi_get16 (mlxp -> mlx_regs_handle , (void * )addr ));
1246+ }
1247+
1248+ static inline uint32_t
1249+ mlxcx_get32 (mlxcx_t * mlxp , uintptr_t off )
1250+ {
1251+ uintptr_t addr = off + (uintptr_t )mlxp -> mlx_regs_base ;
1252+ return (ddi_get32 (mlxp -> mlx_regs_handle , (void * )addr ));
1253+ }
1254+
1255+ static inline uint64_t
1256+ mlxcx_get64 (mlxcx_t * mlxp , uintptr_t off )
1257+ {
1258+ uintptr_t addr = off + (uintptr_t )mlxp -> mlx_regs_base ;
1259+ return (ddi_get64 (mlxp -> mlx_regs_handle , (void * )addr ));
1260+ }
1261+
1262+ static inline void
1263+ mlxcx_put32 (mlxcx_t * mlxp , uintptr_t off , uint32_t val )
1264+ {
1265+ uintptr_t addr = off + (uintptr_t )mlxp -> mlx_regs_base ;
1266+ ddi_put32 (mlxp -> mlx_regs_handle , (void * )addr , val );
1267+ }
12441268
1245- extern void mlxcx_put32 (mlxcx_t * , uintptr_t , uint32_t );
1246- extern void mlxcx_put64 (mlxcx_t * , uintptr_t , uint64_t );
1269+ static inline void
1270+ mlxcx_put64 (mlxcx_t * mlxp , uintptr_t off , uint64_t val )
1271+ {
1272+ uintptr_t addr = off + (uintptr_t )mlxp -> mlx_regs_base ;
1273+ ddi_put64 (mlxp -> mlx_regs_handle , (void * )addr , val );
1274+ }
1275+
1276+ static inline void
1277+ mlxcx_uar_put32 (mlxcx_t * mlxp , mlxcx_uar_t * mlu , uintptr_t off , uint32_t val )
1278+ {
1279+ /*
1280+ * The UAR is always inside the first BAR, which we mapped as
1281+ * mlx_regs
1282+ */
1283+ uintptr_t addr = off + (uintptr_t )mlu -> mlu_base +
1284+ (uintptr_t )mlxp -> mlx_regs_base ;
1285+ ddi_put32 (mlxp -> mlx_regs_handle , (void * )addr , val );
1286+ }
12471287
1248- extern void mlxcx_uar_put32 (mlxcx_t * , mlxcx_uar_t * , uintptr_t , uint32_t );
1249- extern void mlxcx_uar_put64 (mlxcx_t * , mlxcx_uar_t * , uintptr_t , uint64_t );
1288+ static inline void
1289+ mlxcx_uar_put64 (mlxcx_t * mlxp , mlxcx_uar_t * mlu , uintptr_t off , uint64_t val )
1290+ {
1291+ uintptr_t addr = off + (uintptr_t )mlu -> mlu_base +
1292+ (uintptr_t )mlxp -> mlx_regs_base ;
1293+ ddi_put64 (mlxp -> mlx_regs_handle , (void * )addr , val );
1294+ }
12501295
12511296/*
12521297 * Logging functions.
0 commit comments