OpenCores
URL https://opencores.org/ocsvn/ao486/ao486/trunk

Subversion Repositories ao486

[/] [ao486/] [trunk/] [rtl/] [ao486/] [commands/] [CMD_PUSHF.txt] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 alfik
 
2
3
`define CMD_PUSHF       #AUTOGEN_NEXT_CMD
4
5
 
6
7
dec_ready_one && decoder[7:0] == 8'h9C
8
`CMD_PUSHF
9
SET(consume_one);
10
11
 
12
13
IF(rd_cmd == `CMD_PUSHF);
14
    SET(rd_req_memory);
15
    SET(rd_req_esp);
16
ENDIF();
17
18
 
19
20
IF(exe_cmd == `CMD_PUSHF);
21
 
22
    SET(exe_result_push, exe_pushf_eflags);
23
 
24
    IF(exe_mutex_current[`MUTEX_ESP_BIT] || exe_mutex_current[`MUTEX_EFLAGS_BIT]); SET(exe_waiting);
25
    ELSE();
26
        IF(v8086_mode && iopl < 2'd3);
27
            SET(exe_waiting);
28
            SET(exe_trigger_gp_fault);
29
        ENDIF(); //exception GP(0)
30
    ENDIF();
31
ENDIF();
32
33
 
34
35
IF(wr_cmd == `CMD_PUSHF);
36
 
37
    SET(wr_push_ss_fault_check);
38
    SET(wr_one_cycle_wait);
39
 
40
    IF(~(write_for_wr_ready)); SET(wr_waiting); ENDIF();
41
 
42
    IF(~(wr_push_ss_fault));
43
        SET(write_stack_virtual);
44
    ENDIF();
45
 
46
    IF(write_for_wr_ready && ~(wr_push_ss_fault));
47
        SAVE(esp, wr_stack_esp);
48
    ENDIF();
49
ENDIF();
50

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.