From 3aae7b16d2372c50b8167aafc39cc030e811afe0 Mon Sep 17 00:00:00 2001 From: Bruce Evans Date: Sun, 30 Apr 2000 10:01:56 +0000 Subject: [PATCH] Fixed the type of some ivar access functions. Ivars have type uintptr_t, not u_long. On i386's with 64-bit longs, returning u_longs indirectly in (more than) the space reserved for uintptr_t's tended to corrupt the previous frame pointer in the stack frame, so it was not easy to debug. The type mismatches are hidden by the bogus cast in DEVMETHOD(). --- sys/dev/atkbdc/atkbdc_isa.c | 8 ++++---- sys/dev/atkbdc/atkbdc_subr.c | 8 ++++---- sys/dev/fdc/fdc.c | 2 +- sys/dev/pci/pci.c | 2 +- sys/isa/atkbdc_isa.c | 8 ++++---- sys/isa/fd.c | 2 +- sys/pci/pci.c | 2 +- sys/pci/pcisupport.c | 2 +- 8 files changed, 17 insertions(+), 17 deletions(-) diff --git a/sys/dev/atkbdc/atkbdc_isa.c b/sys/dev/atkbdc/atkbdc_isa.c index b5d5e002948..246e2745bbc 100644 --- a/sys/dev/atkbdc/atkbdc_isa.c +++ b/sys/dev/atkbdc/atkbdc_isa.c @@ -62,9 +62,9 @@ static int atkbdc_probe(device_t dev); static int atkbdc_attach(device_t dev); static int atkbdc_print_child(device_t bus, device_t dev); static int atkbdc_read_ivar(device_t bus, device_t dev, int index, - u_long *val); + uintptr_t *val); static int atkbdc_write_ivar(device_t bus, device_t dev, int index, - u_long val); + uintptr_t val); static device_method_t atkbdc_methods[] = { DEVMETHOD(device_probe, atkbdc_probe), @@ -254,7 +254,7 @@ atkbdc_print_child(device_t bus, device_t dev) } static int -atkbdc_read_ivar(device_t bus, device_t dev, int index, u_long *val) +atkbdc_read_ivar(device_t bus, device_t dev, int index, uintptr_t *val) { atkbdc_device_t *ivar; @@ -285,7 +285,7 @@ atkbdc_read_ivar(device_t bus, device_t dev, int index, u_long *val) } static int -atkbdc_write_ivar(device_t bus, device_t dev, int index, u_long val) +atkbdc_write_ivar(device_t bus, device_t dev, int index, uintptr_t val) { atkbdc_device_t *ivar; diff --git a/sys/dev/atkbdc/atkbdc_subr.c b/sys/dev/atkbdc/atkbdc_subr.c index b5d5e002948..246e2745bbc 100644 --- a/sys/dev/atkbdc/atkbdc_subr.c +++ b/sys/dev/atkbdc/atkbdc_subr.c @@ -62,9 +62,9 @@ static int atkbdc_probe(device_t dev); static int atkbdc_attach(device_t dev); static int atkbdc_print_child(device_t bus, device_t dev); static int atkbdc_read_ivar(device_t bus, device_t dev, int index, - u_long *val); + uintptr_t *val); static int atkbdc_write_ivar(device_t bus, device_t dev, int index, - u_long val); + uintptr_t val); static device_method_t atkbdc_methods[] = { DEVMETHOD(device_probe, atkbdc_probe), @@ -254,7 +254,7 @@ atkbdc_print_child(device_t bus, device_t dev) } static int -atkbdc_read_ivar(device_t bus, device_t dev, int index, u_long *val) +atkbdc_read_ivar(device_t bus, device_t dev, int index, uintptr_t *val) { atkbdc_device_t *ivar; @@ -285,7 +285,7 @@ atkbdc_read_ivar(device_t bus, device_t dev, int index, u_long *val) } static int -atkbdc_write_ivar(device_t bus, device_t dev, int index, u_long val) +atkbdc_write_ivar(device_t bus, device_t dev, int index, uintptr_t val) { atkbdc_device_t *ivar; diff --git a/sys/dev/fdc/fdc.c b/sys/dev/fdc/fdc.c index c1b02b1ec40..cd4df134945 100644 --- a/sys/dev/fdc/fdc.c +++ b/sys/dev/fdc/fdc.c @@ -660,7 +660,7 @@ static struct isa_pnp_id fdc_ids[] = { }; static int -fdc_read_ivar(device_t dev, device_t child, int which, u_long *result) +fdc_read_ivar(device_t dev, device_t child, int which, uintptr_t *result) { struct fdc_ivars *ivars = device_get_ivars(child); diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c index 23d94745274..205fdfc8a97 100644 --- a/sys/dev/pci/pci.c +++ b/sys/dev/pci/pci.c @@ -1267,7 +1267,7 @@ pci_probe_nomatch(device_t dev, device_t child) } static int -pci_read_ivar(device_t dev, device_t child, int which, u_long *result) +pci_read_ivar(device_t dev, device_t child, int which, uintptr_t *result) { struct pci_devinfo *dinfo; pcicfgregs *cfg; diff --git a/sys/isa/atkbdc_isa.c b/sys/isa/atkbdc_isa.c index b5d5e002948..246e2745bbc 100644 --- a/sys/isa/atkbdc_isa.c +++ b/sys/isa/atkbdc_isa.c @@ -62,9 +62,9 @@ static int atkbdc_probe(device_t dev); static int atkbdc_attach(device_t dev); static int atkbdc_print_child(device_t bus, device_t dev); static int atkbdc_read_ivar(device_t bus, device_t dev, int index, - u_long *val); + uintptr_t *val); static int atkbdc_write_ivar(device_t bus, device_t dev, int index, - u_long val); + uintptr_t val); static device_method_t atkbdc_methods[] = { DEVMETHOD(device_probe, atkbdc_probe), @@ -254,7 +254,7 @@ atkbdc_print_child(device_t bus, device_t dev) } static int -atkbdc_read_ivar(device_t bus, device_t dev, int index, u_long *val) +atkbdc_read_ivar(device_t bus, device_t dev, int index, uintptr_t *val) { atkbdc_device_t *ivar; @@ -285,7 +285,7 @@ atkbdc_read_ivar(device_t bus, device_t dev, int index, u_long *val) } static int -atkbdc_write_ivar(device_t bus, device_t dev, int index, u_long val) +atkbdc_write_ivar(device_t bus, device_t dev, int index, uintptr_t val) { atkbdc_device_t *ivar; diff --git a/sys/isa/fd.c b/sys/isa/fd.c index c1b02b1ec40..cd4df134945 100644 --- a/sys/isa/fd.c +++ b/sys/isa/fd.c @@ -660,7 +660,7 @@ static struct isa_pnp_id fdc_ids[] = { }; static int -fdc_read_ivar(device_t dev, device_t child, int which, u_long *result) +fdc_read_ivar(device_t dev, device_t child, int which, uintptr_t *result) { struct fdc_ivars *ivars = device_get_ivars(child); diff --git a/sys/pci/pci.c b/sys/pci/pci.c index 23d94745274..205fdfc8a97 100644 --- a/sys/pci/pci.c +++ b/sys/pci/pci.c @@ -1267,7 +1267,7 @@ pci_probe_nomatch(device_t dev, device_t child) } static int -pci_read_ivar(device_t dev, device_t child, int which, u_long *result) +pci_read_ivar(device_t dev, device_t child, int which, uintptr_t *result) { struct pci_devinfo *dinfo; pcicfgregs *cfg; diff --git a/sys/pci/pcisupport.c b/sys/pci/pcisupport.c index 4ca279e7fac..8d1752f37da 100644 --- a/sys/pci/pcisupport.c +++ b/sys/pci/pcisupport.c @@ -769,7 +769,7 @@ static int pcib_attach(device_t dev) } static int -pcib_read_ivar(device_t dev, device_t child, int which, u_long *result) +pcib_read_ivar(device_t dev, device_t child, int which, uintptr_t *result) { if (which == PCIB_IVAR_HOSE) { /*