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

Subversion Repositories ao486

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

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 alfik
 
2
3
`define CMD_SGDT        #AUTOGEN_NEXT_CMD
4
 
5
`define CMD_SIDT        #AUTOGEN_NEXT_CMD
6
 
7
`define CMDEX_SGDT_SIDT_STEP_1  4'd0
8
`define CMDEX_SGDT_SIDT_STEP_2  4'd1
9
10
 
11
12
dec_ready_2byte_modregrm && decoder[7:0] == 8'h01 && decoder[13:11] == 3'd0
13
prefix_group_1_lock || `DEC_MODREGRM_IS_MOD_11
14
`CMD_SGDT
15
SET(dec_cmdex, `CMDEX_SGDT_SIDT_STEP_1);
16
SET(consume_modregrm_one);
17
SET(dec_is_complex);
18
19
 
20
21
dec_ready_2byte_modregrm && decoder[7:0] == 8'h01 && decoder[13:11] == 3'd1
22
prefix_group_1_lock || `DEC_MODREGRM_IS_MOD_11
23
`CMD_SIDT
24
SET(dec_cmdex, `CMDEX_SGDT_SIDT_STEP_1);
25
SET(consume_modregrm_one);
26
SET(dec_is_complex);
27
28
 
29
30
IF(mc_cmd == `CMD_SGDT || mc_cmd == `CMD_SIDT);
31
    LAST_DIRECT(mc_cmd, `CMDEX_SGDT_SIDT_STEP_2);
32
ENDIF();
33
34
 
35
36
IF((rd_cmd == `CMD_SGDT || rd_cmd == `CMD_SIDT));
37
 
38
    SET(address_ea_buffer_plus_2);
39
 
40
    IF(rd_cmdex == `CMDEX_SGDT_SIDT_STEP_1);
41
        SET(read_length_word);
42
    ENDIF();
43
 
44
    IF(rd_cmdex == `CMDEX_SGDT_SIDT_STEP_2);
45
        SET(address_ea_buffer);
46
        SET(read_length_dword);
47
    ENDIF();
48
 
49
    SET(rd_req_memory);
50
 
51
    // only memory operand
52
    SET(write_virtual_check);
53
 
54
    IF(~(write_virtual_check_ready)); SET(rd_waiting); ENDIF();
55
ENDIF();
56
57
 
58
59
IF(exe_cmd == `CMD_SGDT);
60
 
61
    IF(exe_cmdex == `CMDEX_SGDT_SIDT_STEP_1);
62
        SET(exe_result, { 16'd0, gdtr_limit });
63
    ENDIF();
64
 
65
    IF(exe_cmdex == `CMDEX_SGDT_SIDT_STEP_2);
66
        SET(exe_result, gdtr_base);
67
    ENDIF();
68
ENDIF();
69
70
 
71
72
IF(exe_cmd == `CMD_SIDT);
73
 
74
    IF(exe_cmdex == `CMDEX_SGDT_SIDT_STEP_1);
75
        SET(exe_result, { 16'd0, idtr_limit });
76
    ENDIF();
77
 
78
    IF(exe_cmdex == `CMDEX_SGDT_SIDT_STEP_2);
79
        SET(exe_result, idtr_base);
80
    ENDIF();
81
ENDIF();
82
83
 
84
85
IF((wr_cmd == `CMD_SGDT || wr_cmd == `CMD_SIDT));
86
    IF(wr_cmdex == `CMDEX_SGDT_SIDT_STEP_1);
87
        SET(write_length_word);
88
        SET(wr_not_finished);
89
    ENDIF();
90
 
91
    IF(wr_cmdex == `CMDEX_SGDT_SIDT_STEP_2);
92
        SET(write_length_dword);
93
    ENDIF();
94
 
95
    IF(~(write_for_wr_ready)); SET(wr_waiting); ENDIF();
96
 
97
    SET(write_virtual);
98
ENDIF();
99
100
 

powered by: WebSVN 2.1.0

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