diff options
author | Dave Brolley <brolley@redhat.com> | 2003-11-03 18:29:57 +0000 |
---|---|---|
committer | Dave Brolley <brolley@redhat.com> | 2003-11-03 18:29:57 +0000 |
commit | 0b01870bf406d5e6dc9f079318b48abae8d1c12b (patch) | |
tree | 6f155e72ee3dd5ddca855f8ca1cfa21e251ddf43 | |
parent | 6ef88553ef3726b3080f967e099617c58c084c96 (diff) | |
download | gdb-0b01870bf406d5e6dc9f079318b48abae8d1c12b.zip gdb-0b01870bf406d5e6dc9f079318b48abae8d1c12b.tar.gz gdb-0b01870bf406d5e6dc9f079318b48abae8d1c12b.tar.bz2 |
2003-11-03 Dave Brolley <brolley@redhat.com>
* cache.c (address_interference): Check for higher priority requests
in the same pipeline.
-rw-r--r-- | sim/frv/ChangeLog | 5 | ||||
-rw-r--r-- | sim/frv/cache.c | 15 |
2 files changed, 17 insertions, 3 deletions
diff --git a/sim/frv/ChangeLog b/sim/frv/ChangeLog index 2589e0d..efeb2bc 100644 --- a/sim/frv/ChangeLog +++ b/sim/frv/ChangeLog @@ -1,3 +1,8 @@ +2003-11-03 Dave Brolley <brolley@redhat.com> + + * cache.c (address_interference): Check for higher priority requests + in the same pipeline. + 2003-10-31 Dave Brolley <brolley@redhat.com> * frv-sim.h (LR_REGNUM): Removed. diff --git a/sim/frv/cache.c b/sim/frv/cache.c index bfefa87..7b2635b 100644 --- a/sim/frv/cache.c +++ b/sim/frv/cache.c @@ -1109,14 +1109,23 @@ address_interference (FRV_CACHE *cache, SI address, FRV_CACHE_REQUEST *req, return 1; } /* If this is not a WAR request, then yield to any WAR requests in - either pipeline. */ + either pipeline or to a higher priority request in the same pipeline. + */ if (req->kind != req_WAR) { for (j = FIRST_STAGE; j < FRV_CACHE_STAGES; ++j) { other_req = cache->pipeline[i].stages[j].request; - if (other_req != NULL && other_req->kind == req_WAR) - return 1; + if (other_req != NULL) + { + if (other_req->kind == req_WAR) + return 1; + if (i == pipe + && (address == (other_req->address & line_mask) + || address == all_address) + && priority > other_req->priority) + return 1; + } } } } |