/[qemu]/qemu/target-i386/translate.c
ViewVC logotype

Diff of /qemu/target-i386/translate.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.31 by bellard, Sat Oct 9 18:08:01 2004 UTC revision 1.32 by bellard, Sun Nov 14 15:39:16 2004 UTC
# Line 1690  static void gen_popa(DisasContext *s) Line 1690  static void gen_popa(DisasContext *s)
1690      gen_op_mov_reg_T1[OT_WORD + s->dflag][R_ESP]();      gen_op_mov_reg_T1[OT_WORD + s->dflag][R_ESP]();
1691  }  }
1692    
 /* NOTE: wrap around in 16 bit not fully handled */  
 /* XXX: check this */  
1693  static void gen_enter(DisasContext *s, int esp_addend, int level)  static void gen_enter(DisasContext *s, int esp_addend, int level)
1694  {  {
1695      int ot, level1, addend, opsize;      int ot, opsize;
1696    
1697      ot = s->dflag + OT_WORD;      ot = s->dflag + OT_WORD;
1698      level &= 0x1f;      level &= 0x1f;
     level1 = level;  
1699      opsize = 2 << s->dflag;      opsize = 2 << s->dflag;
1700    
1701      gen_op_movl_A0_ESP();      gen_op_movl_A0_ESP();
# Line 1712  static void gen_enter(DisasContext *s, i Line 1709  static void gen_enter(DisasContext *s, i
1709      gen_op_mov_TN_reg[OT_LONG][0][R_EBP]();      gen_op_mov_TN_reg[OT_LONG][0][R_EBP]();
1710      gen_op_st_T0_A0[ot + s->mem_index]();      gen_op_st_T0_A0[ot + s->mem_index]();
1711      if (level) {      if (level) {
1712          while (level--) {          gen_op_enter_level(level, s->dflag);
             gen_op_addl_A0_im(-opsize);  
             gen_op_addl_T0_im(-opsize);  
             gen_op_st_T0_A0[ot + s->mem_index]();  
         }  
         gen_op_addl_A0_im(-opsize);  
         gen_op_st_T1_A0[ot + s->mem_index]();  
1713      }      }
1714      gen_op_mov_reg_T1[ot][R_EBP]();      gen_op_mov_reg_T1[ot][R_EBP]();
1715      addend = -esp_addend;      gen_op_addl_T1_im( -esp_addend + (-opsize * level) );
     if (level1)  
         addend -= opsize * (level1 + 1);  
     gen_op_addl_T1_im(addend);  
1716      gen_op_mov_reg_T1[ot][R_ESP]();      gen_op_mov_reg_T1[ot][R_ESP]();
1717  }  }
1718    

Legend:
Removed from v.1.31  
changed lines
  Added in v.1.32

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26