diff options
Diffstat (limited to 'sys/dev/isp/isp_freebsd.h')
| -rw-r--r-- | sys/dev/isp/isp_freebsd.h | 49 |
1 files changed, 41 insertions, 8 deletions
diff --git a/sys/dev/isp/isp_freebsd.h b/sys/dev/isp/isp_freebsd.h index 66533ca6b98a..fbf9def4c6e2 100644 --- a/sys/dev/isp/isp_freebsd.h +++ b/sys/dev/isp/isp_freebsd.h @@ -60,12 +60,21 @@ #include "opt_ddb.h" #include "opt_isp.h" +/* + * Efficiency- get rid of SBus code && tests unless we need them. + */ +#if defined(__sparcv9__ ) || defined(__sparc__) +#define ISP_SBUS_SUPPORTED 1 +#else +#define ISP_SBUS_SUPPORTED 0 +#endif #define HANDLE_LOOPSTATE_IN_OUTER_LAYERS 1 typedef void ispfwfunc __P((int, int, int, const u_int16_t **)); #ifdef ISP_TARGET_MODE +#define ISP_TARGET_FUNCTIONS 1 #define ATPDPSIZE 256 typedef struct { u_int32_t orig_datalen; @@ -264,14 +273,38 @@ struct isposinfo { #define ISP_NODEWWN(isp) FCPARAM(isp)->isp_nodewwn #define ISP_PORTWWN(isp) FCPARAM(isp)->isp_portwwn -#define ISP_UNSWIZZLE_AND_COPY_PDBP(isp, dest, src) \ - if((void *)src != (void *)dest) bcopy(src, dest, sizeof (isp_pdb_t)) -#define ISP_SWIZZLE_ICB(a, b) -#define ISP_SWIZZLE_REQUEST(a, b) -#define ISP_UNSWIZZLE_RESPONSE(a, b, c) -#define ISP_SWIZZLE_SNS_REQ(a, b) -#define ISP_UNSWIZZLE_SNS_RSP(a, b, c) -#define ISP_SWIZZLE_NVRAM_WORD(isp, x) +#if BYTE_ORDER == BIG_ENDIAN +#ifdef ISP_SBUS_SUPPORTED +#define ISP_IOXPUT_8(isp, s, d) *(d) = s +#define ISP_IOXPUT_16(isp, s, d) \ + *(d) = (isp->isp_bustype == ISP_BT_SBUS)? s : bswap16(s) +#define ISP_IOXPUT_32(isp, s, d) \ + *(d) = (isp->isp_bustype == ISP_BT_SBUS)? s : bswap32(s) +#define ISP_IOXGET_8(isp, s, d) d = (*((u_int8_t *)s)) +#define ISP_IOXGET_16(isp, s, d) \ + d = (isp->isp_bustype == ISP_BT_SBUS)? \ + *((u_int16_t *)s) : bswap16(*((u_int16_t *)s)) +#define ISP_IOXGET_32(isp, s, d) \ + d = (isp->isp_bustype == ISP_BT_SBUS)? \ + *((u_int32_t *)s) : bswap32(*((u_int32_t *)s)) +#else +#define ISP_IOXPUT_8(isp, s, d) *(d) = s +#define ISP_IOXPUT_16(isp, s, d) *(d) = bswap16(s) +#define ISP_IOXPUT_32(isp, s, d) *(d) = bswap32(s) +#define ISP_IOXGET_8(isp, s, d) d = (*((u_int8_t *)s)) +#define ISP_IOXGET_16(isp, s, d) d = bswap16(*((u_int16_t *)s)) +#define ISP_IOXGET_32(isp, s, d) d = bswap32(*((u_int32_t *)s)) +#endif +#define ISP_SWIZZLE_NVRAM_WORD(isp, rp) *rp = bswap16(*rp) +#else +#define ISP_IOXPUT_8(isp, s, d) *(d) = s +#define ISP_IOXPUT_16(isp, s, d) *(d) = s +#define ISP_IOXPUT_32(isp, s, d) *(d) = s +#define ISP_IOXGET_8(isp, s, d) d = *(s) +#define ISP_IOXGET_16(isp, s, d) d = *(s) +#define ISP_IOXGET_32(isp, s, d) d = *(s) +#define ISP_SWIZZLE_NVRAM_WORD(isp, rp) +#endif /* * Includes of common header files |
