[PATCH v1 0/2] [libbsd] Install correct machine include headers

Gedare Bloom gedare at rtems.org
Tue Jun 1 17:24:48 UTC 2021


On Mon, May 10, 2021 at 11:26 AM Jan Sommer <jan.sommer at dlr.de> wrote:
>
> Hello,
>
> This is a follow-up on this discussion regarding the installed header files
> in libbsd: https://lists.rtems.org/pipermail/devel/2021-April/066211.html
>
> The current situation is, that for example for all machines the bus.h is installed from
> within the rtemsbsd directory (https://git.rtems.org/rtems-libbsd/tree/rtemsbsd/include/machine/bus.h).
>
> According to the file docu it originates from the amd64 version of this file.
> It also has the following section in it which we ran into when compiling Chris' ptpd2 archive:
>
> #ifdef __i386__
>   #error "your include paths are wrong"
> #endif
>
> This patchset does the following:
> - Add the target dependent machine include directory to 'header-paths' in libbsd.py
> - Import (mostly) '_bus.h', 'bus.h' and 'cpufunc.h' for the targets from freebsd-org
> - Remove those header files from rtemsbsd directory
>
> As a result the matching versions for machine dependent header files are now installed
> for each BSP.
> Would this be an acceptable solution?
>
> So far I compiled some BSPs for i386, arm, aarch64, powerpc, riscv, sparc and sparc64 to check that they still compile after the changes.
> Are there any other architectures which should be included?
>
> I ran into one problem regarding the compilation of rtemsbsd/sys/dev/dw_mmc/dw_mmc.c:105
>
> > return (bus_space_read_4(0, sc->bushandle, off));
>
> The first parameter creates an error for riscv (I think because dereferencing a NULL pointer).
> Are there any suggestion how to solve it (I am not familiar with the bus space and there is a lot of macro magic going on)?
>
It looks like this will be a problem for any architecture. so should
the function that calls bus_space_write_4(0 ...)
 The macro trail goes...

#define        __bs_rs(sz, t, h, o)                                            \
       (*(t)->__bs_opname(r,sz))((t)->bs_cookie, h, o)

#define        bus_space_read_4(t, h, o)       __bs_rs(4,(t),(h),(o))

so t is dereferenced. It appears to be an error in the API usage by
the dw_mmc.c code to not specify a valid bus space.

> Also, I am not sure if I always added the header files in the right
> module in libbsd.py. Any suggestions where to put them instead would be welcome.
>
> Best regards,
>
>     Jan
>
> Jan Sommer (2):
>   rtemsbd: Remove machine dependent files and use the ones from freebsd
>   machine: Add machine dependent header files to libbsd.py
>
>  freebsd/sys/arm/include/machine/_bus.h        |  47 +
>  freebsd/sys/arm/include/machine/bus.h         | 769 ++++++++++++++++
>  freebsd/sys/arm64/include/machine/_bus.h      |  46 +
>  freebsd/sys/arm64/include/machine/bus.h       | 469 ++++++++++
>  freebsd/sys/powerpc/include/machine/_bus.h    |  50 +
>  freebsd/sys/powerpc/include/machine/bus.h     | 467 ++++++++++
>  freebsd/sys/riscv/include/machine/_bus.h      |  46 +
>  freebsd/sys/riscv/include/machine/bus.h       | 469 ++++++++++
>  freebsd/sys/riscv/include/machine/cpufunc.h   | 135 +++
>  freebsd/sys/riscv/include/machine/riscvreg.h  | 246 +++++
>  .../sys/sparc}/include/machine/_bus.h         |   0
>  .../sys/sparc}/include/machine/bus.h          |   0
>  freebsd/sys/sparc/include/machine/cpufunc.h   |   0
>  freebsd/sys/sparc64/include/machine/_bus.h    |  41 +
>  freebsd/sys/sparc64/include/machine/bus.h     | 852 ++++++++++++++++++
>  libbsd.py                                     |  26 +-
>  rtemsbsd/include/machine/cpufunc.h            |   1 -
>  waf_libbsd.py                                 |   2 -
>  18 files changed, 3660 insertions(+), 6 deletions(-)
>  create mode 100644 freebsd/sys/arm/include/machine/_bus.h
>  create mode 100644 freebsd/sys/arm/include/machine/bus.h
>  create mode 100644 freebsd/sys/arm64/include/machine/_bus.h
>  create mode 100644 freebsd/sys/arm64/include/machine/bus.h
>  create mode 100644 freebsd/sys/powerpc/include/machine/_bus.h
>  create mode 100644 freebsd/sys/powerpc/include/machine/bus.h
>  create mode 100644 freebsd/sys/riscv/include/machine/_bus.h
>  create mode 100644 freebsd/sys/riscv/include/machine/bus.h
>  create mode 100644 freebsd/sys/riscv/include/machine/cpufunc.h
>  create mode 100644 freebsd/sys/riscv/include/machine/riscvreg.h
>  rename {rtemsbsd => freebsd/sys/sparc}/include/machine/_bus.h (100%)
>  rename {rtemsbsd => freebsd/sys/sparc}/include/machine/bus.h (100%)
>  create mode 100644 freebsd/sys/sparc/include/machine/cpufunc.h
>  create mode 100644 freebsd/sys/sparc64/include/machine/_bus.h
>  create mode 100644 freebsd/sys/sparc64/include/machine/bus.h
>  delete mode 100644 rtemsbsd/include/machine/cpufunc.h
>
> --
> 2.17.1
>
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel


More information about the devel mailing list