On 2020/2/22 下午3:37, Paolo Bonzini wrote:
> On 22/02/20 03:10, Chen Gang wrote:
>> Set C1 to 1 if stack overflow occurred; set to 0 otherwise".
>>
>> In helper_fxam_ST0, I guess, we need "env->fpus |= 0x200" (but I don't
>> know wheter it will be conflict with SIGND(temp)). And we have to still
>> need foverflow, because all env->fptags being 0 doesn't mean overflow.
> 
> No, you need to add "env->fpus |= 0x200" and "env->fpus &= ~0x200"
> directly to fpush, fpop, etc.
> 

OK. The content below is my next TODO, welcome your opinions.

When overflow occurs, for me, we need keep everything no touch except
set C1 flag. In fxam, we don't clear C1, but keep no touch for clearning
C1 in another places.

When underflow occurs, for me, we need keep everything no touch except
set env->fpstt 8, so the next consecutive fpop/f[i]stp* can be checked
easier, and the next fpush/f[i]ld* can work well in normal.

For fxam, we check env->fpstt == 8 and env->fptags for empty. And when
env->fpstt is 8, it need be set 7 before used in fincstp and ffree_STN.

Thanks.



Reply via email to