Skip to content

Commit

Permalink
fix(exception): connect new address port for vector access exceptions (
Browse files Browse the repository at this point in the history
…#3626)

The vector exception address comes from the VMergebuffer, which needs to
store all 64 bits addresses and connect to the LSQ exception processing.
  • Loading branch information
Anzooooo authored Sep 24, 2024
1 parent fb27d7a commit 87b463a
Show file tree
Hide file tree
Showing 3 changed files with 3 additions and 1 deletion.
1 change: 1 addition & 0 deletions src/main/scala/xiangshan/mem/lsqueue/LoadQueue.scala
Original file line number Diff line number Diff line change
Expand Up @@ -264,6 +264,7 @@ class LoadQueue(implicit p: Parameters) extends XSModule
exceptionBuffer.io.req(LoadPipelineWidth + i).valid := io.vecFeedback(i).valid && io.vecFeedback(i).bits.feedback(VecFeedbacks.FLUSH) // have exception
exceptionBuffer.io.req(LoadPipelineWidth + i).bits := DontCare
exceptionBuffer.io.req(LoadPipelineWidth + i).bits.vaddr := io.vecFeedback(i).bits.vaddr
exceptionBuffer.io.req(LoadPipelineWidth + i).bits.fullva := io.vecFeedback(i).bits.vaddr
exceptionBuffer.io.req(LoadPipelineWidth + i).bits.gpaddr := io.vecFeedback(i).bits.gpaddr
exceptionBuffer.io.req(LoadPipelineWidth + i).bits.uop.uopIdx := io.vecFeedback(i).bits.uopidx
exceptionBuffer.io.req(LoadPipelineWidth + i).bits.uop.robIdx := io.vecFeedback(i).bits.robidx
Expand Down
1 change: 1 addition & 0 deletions src/main/scala/xiangshan/mem/lsqueue/StoreQueue.scala
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,7 @@ class StoreQueue(implicit p: Parameters) extends XSModule
exceptionBuffer.io.storeAddrIn(StorePipelineWidth * 2 + i).valid := io.vecFeedback(i).valid && io.vecFeedback(i).bits.feedback(VecFeedbacks.FLUSH) // have exception
exceptionBuffer.io.storeAddrIn(StorePipelineWidth * 2 + i).bits := DontCare
exceptionBuffer.io.storeAddrIn(StorePipelineWidth * 2 + i).bits.vaddr := io.vecFeedback(i).bits.vaddr
exceptionBuffer.io.storeAddrIn(StorePipelineWidth * 2 + i).bits.fullva := io.vecFeedback(i).bits.vaddr
exceptionBuffer.io.storeAddrIn(StorePipelineWidth * 2 + i).bits.gpaddr := io.vecFeedback(i).bits.gpaddr
exceptionBuffer.io.storeAddrIn(StorePipelineWidth * 2 + i).bits.uop.uopIdx := io.vecFeedback(i).bits.uopidx
exceptionBuffer.io.storeAddrIn(StorePipelineWidth * 2 + i).bits.uop.robIdx := io.vecFeedback(i).bits.robidx
Expand Down
2 changes: 1 addition & 1 deletion src/main/scala/xiangshan/mem/vector/VMergeBuffer.scala
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ class MBufferBundle(implicit p: Parameters) extends VLSUBundle{
// for exception
val vstart = UInt(elemIdxBits.W)
val vl = UInt(elemIdxBits.W)
val vaddr = UInt(VAddrBits.W)
val vaddr = UInt(XLEN.W)
val gpaddr = UInt(GPAddrBits.W)
val isForVSnonLeafPTE= Bool()
val fof = Bool()
Expand Down

0 comments on commit 87b463a

Please sign in to comment.