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

Subversion Repositories ao486

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

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 alfik
 
2
3
`define CMD_INT_INTO    #AUTOGEN_NEXT_CMD
4
 
5
`define CMDEX_INT_INTO_INT_STEP_0    4'd0
6
`define CMDEX_INT_INTO_INT3_STEP_0   4'd1
7
`define CMDEX_INT_INTO_INTO_STEP_0   4'd2
8
 
9
`define CMDEX_INT_INTO_INT1_STEP_0   4'd3
10
11
 
12
13
(dec_ready_one && (decoder[7:0] == 8'hCC || decoder[7:0] == 8'hCE || decoder[7:0] == 8'hF1)) || (dec_ready_one_one && decoder[7:0] == 8'hCD)
14
`CMD_INT_INTO
15
SET(dec_cmdex,
16
    (decoder[2:0] == 3'b100)? `CMDEX_INT_INTO_INT3_STEP_0 :
17
    (decoder[2:0] == 3'b101)? `CMDEX_INT_INTO_INT_STEP_0 :
18
    (decoder[2:0] == 3'b110)? `CMDEX_INT_INTO_INTO_STEP_0 :
19
                              `CMDEX_INT_INTO_INT1_STEP_0);
20
IF((decoder[0] ^ decoder[2]) == 1'b1); SET(consume_one); ELSE(); SET(consume_one_one); ENDIF();
21
SET(dec_is_complex);
22
23
 
24
25
//no push
26
IF(mc_cmd == `CMD_INT_INTO && (mc_cmdex_last == `CMDEX_INT_INTO_INT_STEP_0 || mc_cmdex_last == `CMDEX_INT_INTO_INT3_STEP_0 || mc_cmdex_last == `CMDEX_INT_INTO_INT1_STEP_0));
27
    JMP(`CMDEX_int_STEP_0);
28
ENDIF();
29
 
30
IF(`CMDEX_INT_INTO_INTO_STEP_0 && oflag);
31
    JMP(`CMDEX_int_STEP_0);
32
ENDIF();
33
 
34
IF(`CMDEX_INT_INTO_INTO_STEP_0 && ~(oflag));
35
    `CMDEX_INT_INTO_INTO_STEP_0
36
ENDIF();
37
38
 
39
40
IF(rd_cmd == `CMD_INT_INTO && rd_cmdex == `CMDEX_INT_INTO_INTO_STEP_0);
41
    IF(rd_mutex_busy_eflags); SET(rd_waiting); ENDIF();
42
ENDIF();
43
44
 
45
46
IF(wr_cmd == `CMD_INT_INTO && wr_cmdex == `CMDEX_INT_INTO_INT_STEP_0);
47
    SET(wr_not_finished);
48
 
49
    SET(wr_int);
50
    SET(wr_int_soft_int);
51
    SET(wr_int_soft_int_ib);
52
    SET(wr_int_vector, wr_decoder[15:8]);
53
ENDIF();
54
55
 
56
57
IF(wr_cmd == `CMD_INT_INTO && wr_cmdex == `CMDEX_INT_INTO_INT3_STEP_0);
58
    SET(wr_not_finished);
59
 
60
    SET(wr_int);
61
    SET(wr_int_soft_int);
62
    //wr_int_soft_int_ib false
63
    SET(wr_int_vector, `EXCEPTION_BP);
64
ENDIF();
65
66
 
67
68
IF(wr_cmd == `CMD_INT_INTO && wr_cmdex == `CMDEX_INT_INTO_INT1_STEP_0);
69
    SET(wr_not_finished);
70
 
71
    SET(wr_int);
72
    //wr_int_soft_int false
73
    //wr_int_soft_int_ib false
74
    SET(wr_int_vector, `EXCEPTION_DB);
75
 
76
    SET(wr_exception_external_set);
77
ENDIF();
78
79
 
80
81
IF(wr_cmd == `CMD_INT_INTO && wr_cmdex == `CMDEX_INT_INTO_INTO_STEP_0);
82
 
83
    IF(oflag);
84
        SET(wr_not_finished);
85
 
86
        SET(wr_int);
87
        SET(wr_int_soft_int);
88
        //wr_int_soft_int_ib false
89
        SET(wr_int_vector, `EXCEPTION_OF);
90
    ELSE();
91
 
92
        SET(wr_req_reset_micro);
93
        SET(wr_req_reset_rd);
94
        SET(wr_req_reset_exe);
95
    ENDIF();
96
ENDIF();
97
98
 
99
 
100
 

powered by: WebSVN 2.1.0

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