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

Subversion Repositories ao486

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

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 alfik
 
2
3
`define CMD_NEG         #AUTOGEN_NEXT_CMD
4
5
 
6
7
dec_ready_modregrm_one && { decoder[7:1], 1'b0 } == 8'hF6 && decoder[13:11] == 3'd3
8
prefix_group_1_lock && `DEC_MODREGRM_IS_MOD_11
9
`CMD_NEG
10
IF(decoder[0] == 1'b0); SET(dec_is_8bit); ENDIF();
11
SET(consume_modregrm_one);
12
13
 
14
15
IF(rd_cmd == `CMD_NEG);
16
 
17
    SET(rd_req_eflags);
18
    SET(rd_dst_is_0);
19
 
20
    // dst: reg, src: reg
21
    IF(rd_modregrm_mod == 2'b11);
22
 
23
        // reg, reg
24
        SET(rd_dst_is_rm);
25
        SET(rd_src_is_rm);
26
 
27
        SET(rd_req_rm);
28
 
29
        IF(rd_mutex_busy_modregrm_rm); SET(rd_waiting); ENDIF();
30
    ENDIF();
31
 
32
    // dst: memory, src: reg
33
    IF(rd_modregrm_mod != 2'b11);
34
 
35
        IF(rd_mutex_busy_memory); SET(rd_waiting);
36
        ELSE();
37
            SET(rd_dst_is_memory);
38
            SET(rd_src_is_memory);
39
 
40
            SET(rd_req_memory);
41
 
42
            SET(read_rmw_virtual);
43
 
44
            IF(~(read_for_rd_ready)); SET(rd_waiting); ENDIF();
45
        ENDIF();
46
    ENDIF();
47
ENDIF();
48
49
 
50
51
IF(exe_cmd == `CMD_NEG);
52
 
53
    SET(exe_arith_index, (`ARITH_VALID | `ARITH_SUB));
54
    SET(exe_result, exe_arith_sub[31:0]);
55
 
56
ENDIF();
57
58
 
59
60
IF(wr_cmd == `CMD_NEG);
61
 
62
    IF(wr_dst_is_memory && ~(write_for_wr_ready)); SET(wr_waiting); ENDIF();
63
 
64
    SET(write_rmw_virtual,   wr_dst_is_memory);
65
    SET(write_regrm,         wr_dst_is_rm);
66
 
67
    SAVE(zflag, zflag_result);
68
    SAVE(sflag, sflag_result);
69
    SAVE(pflag, pflag_result);
70
 
71
    SAVE(aflag, aflag_arith);
72
    SAVE(cflag, cflag_arith);
73
    SAVE(oflag, oflag_arith);
74
ENDIF();
75

powered by: WebSVN 2.1.0

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