> Date: Tue, 4 Oct 2016 10:59:26 +0200 > From: Patrick Wildt <patr...@blueri.se> > > Hi, > > continuing where we left off before the hackathon I would like to add > a diff to the 64-bit bus_addr_t discussion. This diff does not > increase the size of bus_addr_t. Instead it changes the argument > of the function pointer stored in the bus tag from bus_addr_t to > uint64_t. This is an arm only change and will not affect any other > architecture. > > This is needed to pass virtual addresses retrieved from the device tree > between the different simple-busses in the tree topology. In the end > every single hardware that we want to speak to is in the 32-bit range, > not outside. This means the final bus_space_map(9) will work on a > 32-bit value. > > Opinions? ok?
I think this is an acceptable hack. ok kettenis@ > diff --git sys/arch/arm/armv7/armv7_space.c sys/arch/arm/armv7/armv7_space.c > index 4f6c1e0..fbd558a 100644 > --- sys/arch/arm/armv7/armv7_space.c > +++ sys/arch/arm/armv7/armv7_space.c > @@ -165,7 +165,7 @@ struct bus_space armv7_bs_tag = { > }; > > int > -armv7_bs_map(void *t, bus_addr_t bpa, bus_size_t size, > +armv7_bs_map(void *t, uint64_t bpa, bus_size_t size, > int flags, bus_space_handle_t *bshp) > { > u_long startpa, endpa, pa; > diff --git sys/arch/arm/include/bus.h sys/arch/arm/include/bus.h > index f00c897..c108359 100644 > --- sys/arch/arm/include/bus.h > +++ sys/arch/arm/include/bus.h > @@ -93,7 +93,7 @@ struct bus_space { > void *bs_cookie; > > /* mapping/unmapping */ > - int (*bs_map) (void *, bus_addr_t, bus_size_t, > + int (*bs_map) (void *, uint64_t, bus_size_t, > int, bus_space_handle_t *); > void (*bs_unmap) (void *, bus_space_handle_t, > bus_size_t); > @@ -373,7 +373,7 @@ struct bus_space { > */ > > #define bs_map_proto(f) > \ > -int __bs_c(f,_bs_map) (void *t, bus_addr_t addr, \ > +int __bs_c(f,_bs_map) (void *t, uint64_t addr, \ > bus_size_t size, int flags, bus_space_handle_t *bshp); > > #define bs_unmap_proto(f) \ > diff --git sys/arch/arm/simplebus/simplebus.c > sys/arch/arm/simplebus/simplebus.c > index d2f5bfe..325e149 100644 > --- sys/arch/arm/simplebus/simplebus.c > +++ sys/arch/arm/simplebus/simplebus.c > @@ -30,7 +30,7 @@ int simplebus_match(struct device *, void *, void *); > void simplebus_attach(struct device *, struct device *, void *); > > void simplebus_attach_node(struct device *, int); > -int simplebus_bs_map(void *, bus_addr_t, bus_size_t, int, bus_space_handle_t > *); > +int simplebus_bs_map(void *, uint64_t, bus_size_t, int, bus_space_handle_t > *); > > struct simplebus_softc { > struct device sc_dev; > @@ -205,7 +205,7 @@ simplebus_attach_node(struct device *self, int node) > * Translate memory address if needed. > */ > int > -simplebus_bs_map(void *t, bus_addr_t bpa, bus_size_t size, > +simplebus_bs_map(void *t, uint64_t bpa, bus_size_t size, > int flag, bus_space_handle_t *bshp) > { > struct simplebus_softc *sc = (struct simplebus_softc *)t; > diff --git sys/arch/armv7/armv7/armv7_machdep.c > sys/arch/armv7/armv7/armv7_machdep.c > index e869c2c..839e45b 100644 > --- sys/arch/armv7/armv7/armv7_machdep.c > +++ sys/arch/armv7/armv7/armv7_machdep.c > @@ -199,7 +199,7 @@ int safepri = 0; > /* Prototypes */ > > char bootargs[MAX_BOOT_STRING]; > -int bootstrap_bs_map(void *, bus_addr_t, bus_size_t, int, > +int bootstrap_bs_map(void *, uint64_t, bus_size_t, int, > bus_space_handle_t *); > void process_kernel_args(char *); > void consinit(void); > @@ -318,7 +318,7 @@ read_ttb(void) > static vaddr_t section_free = 0xfd000000; /* XXX - huh */ > > int > -bootstrap_bs_map(void *t, bus_addr_t bpa, bus_size_t size, > +bootstrap_bs_map(void *t, uint64_t bpa, bus_size_t size, > int flags, bus_space_handle_t *bshp) > { > u_long startpa, pa, endpa; > @@ -393,7 +393,7 @@ initarm(void *arg0, void *arg1, void *arg2, paddr_t > loadaddr) > > /* early bus_space_map support */ > struct bus_space tmp_bs_tag; > - int (*map_func_save)(void *, bus_addr_t, bus_size_t, int, > + int (*map_func_save)(void *, uint64_t, bus_size_t, int, > bus_space_handle_t *); > > if (arg0) > >