--- /dev/null
+diff -uNr NVIDIA-Linux-x86-1.0-5336-pkg1/usr/src/nv/nv.c NVIDIA-Linux-x86-1.0-5336-pkg1.fixed/usr/src/nv/nv.c
+--- NVIDIA-Linux-x86-1.0-5336-pkg1/usr/src/nv/nv.c 2004-01-15 04:29:11.000000000 +0100
++++ NVIDIA-Linux-x86-1.0-5336-pkg1.fixed/usr/src/nv/nv.c 2004-02-17 20:53:36.000000000 +0100
+@@ -1103,7 +1103,7 @@
+ * addresses by the CPU. This nopage handler will fault on CPU
+ * accesses to AGP memory and map the address to the correct page.
+ */
+-struct page *nv_kern_vma_nopage(struct vm_area_struct *vma, unsigned long address, int write_access)
++struct page *nv_kern_vma_nopage(struct vm_area_struct *vma, unsigned long address, int *write_access)
+ {
+ #if defined(NVCPU_IA64) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 9))
+ nv_alloc_t *at, *tmp;
+@@ -1183,6 +1183,7 @@
+ nv_kern_vma_open,
+ nv_kern_vma_release, /* "close" */
+ nv_kern_vma_nopage,
++ 0
+ };
+
+ static nv_file_private_t *
+@@ -2558,7 +2559,7 @@
+ * so use the first page, which is page-aligned. this way, our
+ * allocated page table does not need to be page-aligned
+ */
+- *pAddress = (void *) at->page_table[0].dma_addr;
++ *pAddress = (void *)(NV_UINTPTR_T) at->page_table[0].dma_addr;
+ at->flags = NV_ALLOC_TYPE_PCI;
+ nvl_add_alloc(nvl, at);
+ } else
+diff -uNr NVIDIA-Linux-x86-1.0-5336-pkg1/usr/src/nv/nv-linux.h NVIDIA-Linux-x86-1.0-5336-pkg1.fixed/usr/src/nv/nv-linux.h
+--- NVIDIA-Linux-x86-1.0-5336-pkg1/usr/src/nv/nv-linux.h 2004-01-15 04:29:11.000000000 +0100
++++ NVIDIA-Linux-x86-1.0-5336-pkg1.fixed/usr/src/nv/nv-linux.h 2004-02-17 20:57:55.438110888 +0100
+@@ -143,7 +143,7 @@
+ }
+ #define NV_MEM_TRACKING_RETRIEVE_SIZE(ptr, size) \
+ { \
+- (char *) (ptr) -= sizeof(void *); \
++ ptr -= sizeof(void *); \
+ size = *(int *) (ptr); \
+ }
+ #else
+@@ -293,13 +293,13 @@
+ #if defined(NVCPU_IA64)
+ #define NV_VMALLOC(ptr, size) \
+ { \
+- (void *) (ptr) = vmalloc_dma(size); \
++ ptr = vmalloc_dma(size); \
+ VM_ALLOC_RECORD(ptr, size, "vm_alloc"); \
+ }
+ #else
+ #define NV_VMALLOC(ptr, size) \
+ { \
+- (void *) (ptr) = vmalloc_32(size); \
++ ptr = vmalloc_32(size); \
+ VM_ALLOC_RECORD(ptr, size, "vm_alloc"); \
+ }
+ #endif
+@@ -312,13 +312,13 @@
+
+ #define NV_IOREMAP(ptr, physaddr, size) \
+ { \
+- (void *) (ptr) = ioremap(physaddr, size); \
++ ptr = ioremap(physaddr, size); \
+ VM_ALLOC_RECORD(ptr, size, "vm_ioremap"); \
+ }
+
+ #define NV_IOREMAP_NOCACHE(ptr, physaddr, size) \
+ { \
+- (void *) (ptr) = ioremap_nocache(physaddr, size); \
++ ptr = ioremap_nocache(physaddr, size); \
+ VM_ALLOC_RECORD(ptr, size, "vm_ioremap_nocache"); \
+ }
+
+@@ -333,13 +333,13 @@
+ */
+ #define NV_KMALLOC(ptr, size) \
+ { \
+- (void *) (ptr) = kmalloc(size, GFP_KERNEL); \
++ ptr = kmalloc(size, GFP_KERNEL); \
+ KM_ALLOC_RECORD(ptr, size, "km_alloc"); \
+ }
+
+ #define NV_KMALLOC_ATOMIC(ptr, size) \
+ { \
+- (void *) (ptr) = kmalloc(size, GFP_ATOMIC); \
++ ptr = kmalloc(size, GFP_ATOMIC); \
+ KM_ALLOC_RECORD(ptr, size, "km_alloc_atomic"); \
+ }
+
+@@ -352,7 +352,7 @@
+
+ #define NV_GET_FREE_PAGES(ptr, order) \
+ { \
+- (void *) (ptr) = __get_free_pages(NV_GFP_HW, order); \
++ ptr = __get_free_pages(NV_GFP_HW, order); \
+ }
+
+ #define NV_FREE_PAGES(ptr, order) \
+@@ -690,7 +690,7 @@
+
+ /* for the card devices */
+ #define NVL_FROM_FILEP(filep) \
+- ((nv_linux_state_t*) (NV_GET_NVFP(filep))->nvptr)
++ ((NV_GET_NVFP(filep))->nvptr)
+
+ #define NV_GET_NVL_FROM_NV_STATE(nv) \
+ ((nv_linux_state_t *) nv->os_state)