On 19 September 2018 at 07:47, Roman Kapl <roman.k...@sysgo.com> wrote: > It seems that the `dcbz` instruction is not emulated correctly (which may > lead to some garbage in inittab?). However, if I manualy inline the > `helper_dcbz_common` code into `helper dcbz`, it starts to work.
This is because helper_dcbz_common() uses GETPC() to get the return address inside generated code which will be used when an exception occurs. This only works from a function called directly from generated code. If you want to abstract out into a second function, then you need: * the second function to take a retaddr argument, which it can then pass to cpu_stq_data_ra() * the top level helpers called from TCG to pass GETPC() as that retaddr parameter Incidentally, calling your secondary helper function "helper_dcbz_common" is not ideal -- the "helper_" prefix is generally used to indicate functions which are directly called from TCG generated code as helper functions (which does matter for some purposes, like this one). thanks -- PMM