smmu_v3.cc (14132:d6093eeca3af) | smmu_v3.cc (14221:2954f631ee64) |
---|---|
1/* 2 * Copyright (c) 2013, 2018-2019 ARM Limited 3 * All rights reserved 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software --- 478 unchanged lines hidden (view full) --- 487 addr, cmd.dw0.vmid); 488 for (auto slave_interface : slaveInterfaces) { 489 slave_interface->microTLB->invalidateVAA( 490 addr, cmd.dw0.vmid); 491 slave_interface->mainTLB->invalidateVAA( 492 addr, cmd.dw0.vmid); 493 } 494 tlb.invalidateVAA(addr, cmd.dw0.vmid); | 1/* 2 * Copyright (c) 2013, 2018-2019 ARM Limited 3 * All rights reserved 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software --- 478 unchanged lines hidden (view full) --- 487 addr, cmd.dw0.vmid); 488 for (auto slave_interface : slaveInterfaces) { 489 slave_interface->microTLB->invalidateVAA( 490 addr, cmd.dw0.vmid); 491 slave_interface->mainTLB->invalidateVAA( 492 addr, cmd.dw0.vmid); 493 } 494 tlb.invalidateVAA(addr, cmd.dw0.vmid); |
495 496 if (!cmd.dw1.leaf) 497 walkCache.invalidateVAA(addr, cmd.dw0.vmid); | 495 const bool leaf_only = cmd.dw1.leaf ? true : false; 496 walkCache.invalidateVAA(addr, cmd.dw0.vmid, leaf_only); |
498 break; 499 } 500 501 case CMD_TLBI_NH_VA: { 502 const Addr addr = cmd.addr(); 503 DPRINTF(SMMUv3, "CMD_TLBI_NH_VA va=%#08x asid=%#x vmid=%#x\n", 504 addr, cmd.dw0.asid, cmd.dw0.vmid); 505 for (auto slave_interface : slaveInterfaces) { 506 slave_interface->microTLB->invalidateVA( 507 addr, cmd.dw0.asid, cmd.dw0.vmid); 508 slave_interface->mainTLB->invalidateVA( 509 addr, cmd.dw0.asid, cmd.dw0.vmid); 510 } 511 tlb.invalidateVA(addr, cmd.dw0.asid, cmd.dw0.vmid); | 497 break; 498 } 499 500 case CMD_TLBI_NH_VA: { 501 const Addr addr = cmd.addr(); 502 DPRINTF(SMMUv3, "CMD_TLBI_NH_VA va=%#08x asid=%#x vmid=%#x\n", 503 addr, cmd.dw0.asid, cmd.dw0.vmid); 504 for (auto slave_interface : slaveInterfaces) { 505 slave_interface->microTLB->invalidateVA( 506 addr, cmd.dw0.asid, cmd.dw0.vmid); 507 slave_interface->mainTLB->invalidateVA( 508 addr, cmd.dw0.asid, cmd.dw0.vmid); 509 } 510 tlb.invalidateVA(addr, cmd.dw0.asid, cmd.dw0.vmid); |
512 513 if (!cmd.dw1.leaf) 514 walkCache.invalidateVA(addr, cmd.dw0.asid, cmd.dw0.vmid); | 511 const bool leaf_only = cmd.dw1.leaf ? true : false; 512 walkCache.invalidateVA(addr, cmd.dw0.asid, cmd.dw0.vmid, 513 leaf_only); |
515 break; 516 } 517 518 case CMD_TLBI_S2_IPA: { 519 const Addr addr = cmd.addr(); 520 DPRINTF(SMMUv3, "CMD_TLBI_S2_IPA ipa=%#08x vmid=%#x\n", 521 addr, cmd.dw0.vmid); 522 // This does not invalidate TLBs containing --- 314 unchanged lines hidden --- | 514 break; 515 } 516 517 case CMD_TLBI_S2_IPA: { 518 const Addr addr = cmd.addr(); 519 DPRINTF(SMMUv3, "CMD_TLBI_S2_IPA ipa=%#08x vmid=%#x\n", 520 addr, cmd.dw0.vmid); 521 // This does not invalidate TLBs containing --- 314 unchanged lines hidden --- |