Revision ba1c6e37 op-i386.c

b/op-i386.c
10 10

  
11 11
#define NULL 0
12 12

  
13
typedef struct FILE FILE;
14

  
15
extern FILE *stderr;
16
extern int fprintf(FILE *, const char *, ...);
17

  
13 18
#ifdef __i386__
14 19
register int T0 asm("esi");
15 20
register int T1 asm("ebx");
16 21
register int A0 asm("edi");
17
register struct CPU86State *env asm("ebp");
22
register struct CPUX86State *env asm("ebp");
18 23
#define FORCE_RET() asm volatile ("ret");
19 24
#endif
20 25
#ifdef __powerpc__
21 26
register int T0 asm("r24");
22 27
register int T1 asm("r25");
23 28
register int A0 asm("r26");
24
register struct CPU86State *env asm("r27");
29
register struct CPUX86State *env asm("r27");
25 30
#define FORCE_RET() asm volatile ("blr");
26 31
#endif
27 32
#ifdef __arm__
28 33
register int T0 asm("r4");
29 34
register int T1 asm("r5");
30 35
register int A0 asm("r6");
31
register struct CPU86State *env asm("r7");
36
register struct CPUX86State *env asm("r7");
32 37
#define FORCE_RET() asm volatile ("mov pc, lr");
33 38
#endif
34 39
#ifdef __mips__
35 40
register int T0 asm("s0");
36 41
register int T1 asm("s1");
37 42
register int A0 asm("s2");
38
register struct CPU86State *env asm("s3");
43
register struct CPUX86State *env asm("s3");
39 44
#define FORCE_RET() asm volatile ("jr $31");
40 45
#endif
41 46
#ifdef __sparc__
42 47
register int T0 asm("l0");
43 48
register int T1 asm("l1");
44 49
register int A0 asm("l2");
45
register struct CPU86State *env asm("l3");
50
register struct CPUX86State *env asm("l3");
46 51
#define FORCE_RET() asm volatile ("retl ; nop");
47 52
#endif
48 53

  
......
465 470

  
466 471
/* constant load */
467 472

  
468
void OPPROTO op1_movl_T0_im(void)
473
void OPPROTO op_movl_T0_im(void)
469 474
{
470 475
    T0 = PARAM1;
471 476
}
472 477

  
473
void OPPROTO op1_movl_T1_im(void)
478
void OPPROTO op_movl_T1_im(void)
474 479
{
475 480
    T1 = PARAM1;
476 481
}
477 482

  
478
void OPPROTO op1_movl_A0_im(void)
483
void OPPROTO op_movl_A0_im(void)
479 484
{
480 485
    A0 = PARAM1;
481 486
}
......
1592 1597
    helper_fcos();
1593 1598
}
1594 1599

  
1600
/* main execution loop */
1601
uint8_t code_gen_buffer[65536];
1602

  
1603

  
1604
int cpu_x86_exec(CPUX86State *env1)
1605
{
1606
    int saved_T0, saved_T1, saved_A0;
1607
    CPUX86State *saved_env;
1608
    int code_gen_size;
1609
    void (*gen_func)(void);
1610
    
1611
    /* first we save global registers */
1612
    saved_T0 = T0;
1613
    saved_T1 = T1;
1614
    saved_A0 = A0;
1615
    saved_env = env;
1616
    env = env1;
1617
    
1618
    for(;;) {
1619
        cpu_x86_gen_code(code_gen_buffer, &code_gen_size, (uint8_t *)env->pc);
1620
        /* execute the generated code */
1621
        gen_func = (void *)code_gen_buffer;
1622
        gen_func();
1623
    }
1624
        
1625
    /* restore global registers */
1626
    T0 = saved_T0;
1627
    T1 = saved_T1;
1628
    A0 = saved_A0;
1629
    env = saved_env;
1630
    return 0;
1631
}

Also available in: Unified diff