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