Thanks for your reply. :-)

Su Hang

"Paolo Bonzini" <pbonz...@redhat.com>wrote:
> On 22/03/2018 08:03, Su Hang wrote:
> > When I was reading 'qemu/hw/timer/m48t59.c'(Line:328) and run with
> > `make check-qtest-ppc`,
> > I found when write an invalid value 0xc to address 0x1FFF,
> > `from_bcd` return 12 instead of raising an exception(or error).
> 
> Each device probably has a different behavior when a wrong value is
> written to a register that expects valid BCD.  Therefore, if you want to
> model that, you have to fix it in hw/timer/m48t59.c, not in from_bcd and
> to_bcd.
> 
> However, note that anything that the guest does should never cause an
> assertion.
> 
> Thanks,
> 
> Paolo
> 
> > """(qemu/hw/timer/m48t59.c)
> >     case 0x1FFF:
> >     case 0x07FF:
> >         /* year */
> >     tmp = from_bcd(val);
> >     if (tmp >= 0 && tmp <= 99) {
> > """
> > 
> > 
> > """(qemu/include/qemu/bcd.h)
> > /* Convert a byte between binary and BCD.  */
> > static inline uint8_t to_bcd(uint8_t val)
> > {
> >     return ((val / 10) << 4) | (val % 10);
> > }
> > 
> > static inline uint8_t from_bcd(uint8_t val)
> > {
> >     return ((val >> 4) * 10) + (val & 0x0f);
> > }
> > """
> > 
> > Su Hang
> > 
> 

Reply via email to