1 /* $NetBSD: os.h,v 1.3 2021/12/18 23:45:33 riastradh Exp $ */ 2 3 /* SPDX-License-Identifier: MIT */ 4 #ifndef __NVKM_OS_H__ 5 #define __NVKM_OS_H__ 6 #include <nvif/os.h> 7 8 #ifndef __NetBSD__ /* XXX ioread */ 9 #ifdef __BIG_ENDIAN 10 #define ioread16_native ioread16be 11 #define iowrite16_native iowrite16be 12 #define ioread32_native ioread32be 13 #define iowrite32_native iowrite32be 14 #else 15 #define ioread16_native ioread16 16 #define iowrite16_native iowrite16 17 #define ioread32_native ioread32 18 #define iowrite32_native iowrite32 19 #endif 20 #endif 21 22 #ifdef __NetBSD__ 23 #include <sys/bus.h> 24 #ifndef __BUS_SPACE_HAS_STREAM_METHODS 25 #define bus_space_read_stream_2 bus_space_read_2 26 #define bus_space_read_stream_4 bus_space_read_4 27 #define bus_space_write_stream_2 bus_space_write_2 28 #define bus_space_write_stream_4 bus_space_write_4 29 #endif 30 #endif 31 32 #define iowrite64_native(v,p) do { \ 33 u32 __iomem *_p = (u32 __iomem *)(p); \ 34 u64 _v = (v); \ 35 iowrite32_native(lower_32_bits(_v), &_p[0]); \ 36 iowrite32_native(upper_32_bits(_v), &_p[1]); \ 37 } while(0) 38 39 struct nvkm_blob { 40 void *data; 41 u32 size; 42 }; 43 44 static inline void nvkm_blob_dtor(struct nvkm_blob * blob)45nvkm_blob_dtor(struct nvkm_blob *blob) 46 { 47 kfree(blob->data); 48 blob->data = NULL; 49 blob->size = 0; 50 } 51 #endif 52