The patch below postfixes two constants in ips.c with ULL, on 32 bit
archs this constant is too big for an int.
The cast doesn't do the right thing, 0xffffffffffffffff is in C an int
and the cast casts 0xffffffffffffffff interpreted as an int to an u64.
cu
Adrian
--- linux-2.5.73-not-full/drivers/scsi/ips.c.old 2003-06-24 20:07:48.000000000 +0200
+++ linux-2.5.73-not-full/drivers/scsi/ips.c 2003-06-24 20:08:34.000000000 +0200
@@ -7009,10 +7009,10 @@
* are guaranteed to be < 4G.
*/
if ( IPS_ENABLE_DMA64 && IPS_HAS_ENH_SGLIST(ha) &&
- !pci_set_dma_mask(ha->pcidev, (u64)0xffffffffffffffff)) {
+ !pci_set_dma_mask(ha->pcidev, 0xffffffffffffffffULL)) {
(ha)->flags |= IPS_HA_ENH_SG;
} else {
- if ( pci_set_dma_mask(ha->pcidev, (u64)0xffffffff) != 0 ) {
+ if ( pci_set_dma_mask(ha->pcidev, 0xffffffffULL) != 0 ) {
printk(KERN_WARNING "Unable to set DMA Mask\n");
return ips_abort_init(ha, index);
}