Hello, Flavio Cruz, le dim. 12 févr. 2023 01:15:05 -0500, a ecrit: > diff --git a/configure.ac b/configure.ac > index e4645bd..8d52d5f 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -55,6 +55,13 @@ AC_SUBST([MIGCOM]) > [MIG=`echo mig | sed "$program_transform_name"`] > AC_SUBST([MIG]) > > +AC_ARG_ENABLE(user32, > + AS_HELP_STRING([--enable-user32], > + [Build mig for 64 bit kernel that works with 32 > bit userland])) > +AS_IF([test "x$enable_user32" = "xyes"], [ > + AC_DEFINE([USER32], [1], ["Build mig for 64 bit kernel that works > with 32 bit userland"]) > +]) > + > AC_OUTPUT([Makefile mig tests/Makefile \ > tests/good/Makefile \ > tests/generate-only/Makefile \
> diff --git a/parser.y b/parser.y > index 03c5ec8..1ebeae5 100644 > --- a/parser.y > +++ b/parser.y > @@ -212,6 +212,16 @@ Subsystem : SubsystemStart > SubsystemMods > IsKernelUser ? ", KernelUser" : "", > IsKernelServer ? ", KernelServer" : ""); > } > + if (IsKernelUser || IsKernelServer) { > + port_size = vm_offset_size; > + port_size_in_bits = vm_offset_size_in_bits; > +#ifdef USER32 > + /* Since we are using MIG to generate stubs for a 64 bit kernel that > operates > + with a 32 bit userland, then we need to consider that `word_size` > is 4 byte aligned. > + */ > + word_size = sizeof(uint32_t); > +#endif > + } > init_type(); > } > ; Mmm, I thought Luca's work was already handling the message translation, so that the stubs parts of the kernel only sees 64bit messages already with proper alignments etc.? At least, I believe we'd rather aim for that, to have only a 64bit mig and a 32bit mig, and not need a separate 64/32bit mig. Samuel