[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH for-1.2 v2] target-xtensa: return ENOSYS for uni
From: |
Max Filippov |
Subject: |
Re: [Qemu-devel] [PATCH for-1.2 v2] target-xtensa: return ENOSYS for unimplemented simcalls |
Date: |
Wed, 29 Aug 2012 14:54:44 +0400 |
On Wed, Aug 29, 2012 at 2:34 PM, Peter Maydell <address@hidden> wrote:
> On 29 August 2012 11:13, Max Filippov <address@hidden> wrote:
>> On Wed, Aug 29, 2012 at 1:38 PM, Peter Maydell <address@hidden> wrote:
>>> On 22 August 2012 19:03, Max Filippov <address@hidden> 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