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

Subversion Repositories sparc64soc

[/] [sparc64soc/] [trunk/] [os2wb/] [os2wb_dual.v] - Diff between revs 6 and 7

Show entire file | Details | Blame | View Log

Rev 6 Rev 7
Line 575... Line 575...
                     end
                     end
                  5'b01001://INT
                  5'b01001://INT
                     if(pcx_packet_d[117]) // Flush
                     if(pcx_packet_d[117]) // Flush
                                                           begin
                                                           begin
                           cpx_packet_1<={9'h171,pcx_packet_d[113:112],11'h0,pcx_packet_d[64+5:64+4],2'b0,cpu,pcx_packet_d[64+11:64+6],30'h0,pcx_packet_d[17:0],46'b0,pcx_packet_d[17:0]}; //FLUSH instruction answer
                           cpx_packet_1<={9'h171,pcx_packet_d[113:112],11'h0,pcx_packet_d[64+5:64+4],2'b0,cpu,pcx_packet_d[64+11:64+6],30'h0,pcx_packet_d[17:0],46'b0,pcx_packet_d[17:0]}; //FLUSH instruction answer
                           cpx_packet_2<={9'h171,pcx_packet_d[113:112],11'h0,pcx_packet_d[64+5:64+4],2'b0,cpu,pcx_packet_d[64+11:64+6],30'h0,pcx_packet_d[17:0],46'b0,pcx_packet_d[17:0]}; //FLUSH instruction answer
                           //cpx_packet_2<={9'h171,pcx_packet_d[113:112],11'h0,pcx_packet_d[64+5:64+4],2'b0,cpu,pcx_packet_d[64+11:64+6],30'h0,pcx_packet_d[17:0],46'b0,pcx_packet_d[17:0]}; //FLUSH instruction answer
                                                                        cpx_two_packet<=1;
                                                                        //cpx_two_packet<=1;
                                                                        cpu2<=!cpu; // Flush should be sent to both cores
                                                                        //cpu2<=!cpu; // Flush should be sent to both cores
                                                                end
                                                                end
                     else // Tread-to-thread interrupt
                     else // Tread-to-thread interrupt
                                                           begin
                                                           begin
                           cpx_packet_1<={9'h170,pcx_packet_d[113:112],52'h0,pcx_packet_d[17:0],46'h0,pcx_packet_d[17:0]};
                           cpx_packet_1<={9'h170,pcx_packet_d[113:112],52'h0,pcx_packet_d[17:0],46'h0,pcx_packet_d[17:0]};
                                                                        cpu<=pcx_packet_d[10];
                                                                        cpu<=pcx_packet_d[10];
Line 748... Line 748...
                              state<=`PCX_REQ_STEP2;
                              state<=`PCX_REQ_STEP2;
                           end
                           end
                        5'b00101://STRSTORE
                        5'b00101://STRSTORE
                           begin
                           begin
                              cpx_packet_1[143:140]<=4'b0110; // Type
                              cpx_packet_1[143:140]<=4'b0110; // Type
                              cpx_packet_1[127:0]<={5'b0,pcx_packet_d[64+5:64+4],3'b0,pcx_packet_d[64+11:64+6],inval_vect0};
                              cpx_packet_1[127:0]<={5'b0,pcx_packet_d[64+5:64+4],2'b0,cpu,pcx_packet_d[64+11:64+6],inval_vect0};
                              wb_cycle<=0;
                              wb_cycle<=0;
                              state<=`CPX_READY_1;
                              state<=`CPX_READY_1;
                           end
                           end
                        5'b00110://SWAP/LDSTUB
                        5'b00110://SWAP/LDSTUB
                           begin
                           begin
                              cpx_packet_1[143:140]<=4'b0000; // Load return for first packet
                              cpx_packet_1[143:140]<=4'b0000; // Load return for first packet
                              cpx_packet_2[143:140]<=4'b0100; // Store ACK for second packet
                              cpx_packet_2[143:140]<=4'b0100; // Store ACK for second packet
                              cpx_packet_2[127:0]<={5'b0,pcx_packet_d[64+5:64+4],3'b0,pcx_packet_d[64+11:64+6],inval_vect0};
                              cpx_packet_2[127:0]<={5'b0,pcx_packet_d[64+5:64+4],2'b0,cpu,pcx_packet_d[64+11:64+6],inval_vect0};
                              cpx_packet_1[127:0]<={wb_data_i,wb_data_i};
                              cpx_packet_1[127:0]<={wb_data_i,wb_data_i};
                              state<=`PCX_REQ_STEP2;
                              state<=`PCX_REQ_STEP2;
                           end
                           end
                        5'b10000://IFILL
                        5'b10000://IFILL
                           begin
                           begin
Line 1052... Line 1052...
                                                end
                                                end
                                        else
                                        else
                                           if(cpu2 && othercpuhit[1])
                                           if(cpu2 && othercpuhit[1])
                                                   begin
                                                   begin
                        cpx_ready<=1;
                        cpx_ready<=1;
                        cpx_packet<={1'b1,4'b0011,12'b0,5'b0,pcx_packet_d[64+5:64+4],3'b000,pcx_packet_d[64+11:64+6],inval_vect1};;
                        cpx_packet<={1'b1,4'b0011,12'b0,5'b0,pcx_packet_d[64+5],1'b1,3'b000,pcx_packet_d[64+11:64+6],inval_vect1};;
                                        end
                                        end
                                                else
                                                else
                                                   begin
                                                   begin
                                                           cpx_ready<=0;
                                                           cpx_ready<=0;
                                                                cpx_packet<=145'b0;
                                                                cpx_packet<=145'b0;
Line 1068... Line 1068...
                                                end
                                                end
                                        else
                                        else
                                           if(!cpu2 && othercpuhit[1])
                                           if(!cpu2 && othercpuhit[1])
                                                   begin
                                                   begin
                        cpx1_ready<=1;
                        cpx1_ready<=1;
                        cpx1_packet<={1'b1,4'b0011,12'b0,5'b0,pcx_packet_d[64+5:64+4],3'b001,pcx_packet_d[64+11:64+6],inval_vect1};;
                        cpx1_packet<={1'b1,4'b0011,12'b0,5'b0,pcx_packet_d[64+5],1'b1,3'b001,pcx_packet_d[64+11:64+6],inval_vect1};;
                                        end
                                        end
                                                else
                                                else
                                                   begin
                                                   begin
                                                           cpx1_ready<=0;
                                                           cpx1_ready<=0;
                                                                cpx1_packet<=145'b0;
                                                                cpx1_packet<=145'b0;

powered by: WebSVN 2.1.0

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