Changeset 845

Show
Ignore:
Timestamp:
02/08/07 20:51:41 (2 years ago)
Author:
common
Message:

libemu

  • add result{8,16,32}_flags_update(struct emu_cpu *c, uint{8,16,32}_t result);
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • libemu/trunk/include/emu/emu_cpu.h

    r844 r845  
    5959void emu_cpu_debug_print(struct emu_cpu *c); 
    6060 
     61 
     62inline void result8_flags_update(struct emu_cpu *c, uint8_t result); 
     63inline void result16_flags_update(struct emu_cpu *c, uint16_t result); 
     64inline void result32_flags_update(struct emu_cpu *c, uint32_t result); 
     65 
     66 
    6167#endif /* HAVEEMU_CPU_H */ 
  • libemu/trunk/src/emu_cpu.c

    r844 r845  
    215215{ 
    216216        return c->eflags; 
     217} 
     218 
     219inline void result8_flags_update(struct emu_cpu *c, uint8_t result) 
     220{ 
     221        int i; 
     222        int num_bits=0; 
     223        for ( i=0;i<sizeof(result);i++ ) 
     224                if (result & (1 << i) ) 
     225                        num_bits++; 
     226 
     227        if (num_bits == 0) 
     228                CPU_FLAG_SET(c,f_zf); 
     229 
     230        if ((num_bits %2) == 0) 
     231                CPU_FLAG_SET(c,f_pf); 
     232 
     233        if (result & (1 << (sizeof(result) - 1))) 
     234                CPU_FLAG_SET(c,f_sf); 
     235} 
     236 
     237inline void result16_flags_update(struct emu_cpu *c, uint16_t result) 
     238{ 
     239        int i; 
     240        int num_bits=0; 
     241        for ( i=0;i<sizeof(result);i++ ) 
     242                if (result & (1 << i) ) 
     243                        num_bits++; 
     244 
     245        if (num_bits == 0) 
     246                CPU_FLAG_SET(c,f_zf); 
     247 
     248        if ((num_bits %2) == 0) 
     249                CPU_FLAG_SET(c,f_pf); 
     250 
     251        if (result & (1 << (sizeof(result) - 1))) 
     252                CPU_FLAG_SET(c,f_sf);} 
     253 
     254inline void result32_flags_update(struct emu_cpu *c, uint32_t result) 
     255{ 
     256        int i; 
     257        int num_bits=0; 
     258        for ( i=0;i<sizeof(result);i++ ) 
     259                if (result & (1 << i) ) 
     260                        num_bits++; 
     261 
     262        if (num_bits == 0) 
     263                CPU_FLAG_SET(c,f_zf); 
     264 
     265        if ((num_bits %2) == 0) 
     266                CPU_FLAG_SET(c,f_pf); 
     267 
     268        if (result & (1 << (sizeof(result) - 1))) 
     269                CPU_FLAG_SET(c,f_sf); 
    217270} 
    218271