On Wed, Aug 29, 2012 at 2:34 PM, Peter Maydell <peter.mayd...@linaro.org> wrote: > On 29 August 2012 11:13, Max Filippov <jcmvb...@gmail.com> wrote: >> On Wed, Aug 29, 2012 at 1:38 PM, Peter Maydell <peter.mayd...@linaro.org> >> wrote: >>> On 22 August 2012 19:03, Max Filippov <jcmvb...@gmail.com> wrote: >>>> --- a/target-xtensa/xtensa-semi.c >>>> +++ b/target-xtensa/xtensa-semi.c >>>> @@ -218,6 +218,8 @@ void HELPER(simcall)(CPUXtensaState *env) >>>> >>>> default: >>>> qemu_log("%s(%d): not implemented\n", __func__, regs[2]); >>>> + regs[2] = -1; >>>> + regs[3] = ENOSYS; >>>> break; >>>> } >>> >>> This doesn't look right -- ENOSYS is a host errno, and may vary >>> between host OSes and CPU architectures. I would have thought you'd >>> want to return a value defined by whatever guest ABI we're >>> emulating here. >> >> That means also converting errno after open/close/read/write... >> Is there a way to reuse linux-user errno convertor in the softmmu target? > > I don't think so, no. > > I've just looked at the ARM semihosting code, and we also return > host errnos, though in the ARM case we can sort of justify this > because the definition of the SYS_ERRNO semihosting call says > "Whether errno is set or not, and to what value, is entirely > host-specific, except where the ANSI C standard defines the behavior" > > ...so although returning host errnos is not very useful in some > ways it's not in breach of the semihosting spec. > > Since xtensa-semi.c currently works by returning host errnos > elsewhere I'm happy for this patch to go into 1.2 if you think > it merits it, and maybe look at the errno issue more generally > after that.
Thanks for the review, Peter. Blue, please apply it as is, I will post errno convertor for 1.3. -- Thanks. -- Max