diff options
| author | David Mosberger <davidm@tiger.hpl.hp.com> | 2003-06-12 01:12:47 -0700 |
|---|---|---|
| committer | David Mosberger <davidm@tiger.hpl.hp.com> | 2003-06-12 01:12:47 -0700 |
| commit | 9f3d1b849f047bd8d4fe55b47d3feb3f84c336ff (patch) | |
| tree | c16afa106631d3f5a6106474f3468f95910aeabf | |
| parent | 6e43992796d4b587acd0eab43b2d9078d2b96056 (diff) | |
patch.c:
ia64: don't forget to establish coherence after vtop patching
| -rw-r--r-- | arch/ia64/kernel/patch.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/arch/ia64/kernel/patch.c b/arch/ia64/kernel/patch.c index aaae5a501d73..6818ce5f850c 100644 --- a/arch/ia64/kernel/patch.c +++ b/arch/ia64/kernel/patch.c @@ -87,15 +87,6 @@ ia64_patch_imm60 (u64 insn_addr, u64 val) * at execution time, but sometimes (either for performance reasons * or during error recovery) we cannot to this. Patch the marked * bundles to load the physical address. - * The 64-bit value in a "movl reg=value" is scattered between the - * two words of the bundle like this: - * - * 6 6 5 4 3 2 1 - * 3210987654321098765432109876543210987654321098765432109876543210 - * ABBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCDEEEEEFFFFFFFFFGGGGGGG - * - * CCCCCCCCCCCCCCCCCCxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx - * xxxxAFFFFFFFFFEEEEEDxGGGGGGGxxxxxxxxxxxxxBBBBBBBBBBBBBBBBBBBBBBB */ void __init ia64_patch_vtop (unsigned long start, unsigned long end) @@ -108,8 +99,14 @@ ia64_patch_vtop (unsigned long start, unsigned long end) /* replace virtual address with corresponding physical address: */ ia64_patch_imm64(ip, ia64_tpa(get_imm64(ip))); + ia64_fc(ip); ++offp; } + ia64_insn_group_barrier(); + ia64_sync_i(); + ia64_insn_group_barrier(); + ia64_srlz_i(); + ia64_insn_group_barrier(); } void |
