diff options
Diffstat (limited to 'arch/blackfin/mach-common/cplbmgr.S')
-rw-r--r-- | arch/blackfin/mach-common/cplbmgr.S | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/arch/blackfin/mach-common/cplbmgr.S b/arch/blackfin/mach-common/cplbmgr.S index faca1ab344d2..f5cf3accef37 100644 --- a/arch/blackfin/mach-common/cplbmgr.S +++ b/arch/blackfin/mach-common/cplbmgr.S | |||
@@ -190,7 +190,14 @@ ENTRY(_cplb_mgr) | |||
190 | [P0 - 4] = R0; | 190 | [P0 - 4] = R0; |
191 | R0 = [P0 - 0x100]; | 191 | R0 = [P0 - 0x100]; |
192 | [P0-0x104] = R0; | 192 | [P0-0x104] = R0; |
193 | .Lie_move:P0+=4; | 193 | .Lie_move: |
194 | P0+=4; | ||
195 | |||
196 | /* Clear ICPLB_DATA15, in case we don't find a replacement | ||
197 | * otherwise, we would have a duplicate entry, and will crash | ||
198 | */ | ||
199 | R0 = 0; | ||
200 | [P0 - 4] = R0; | ||
194 | 201 | ||
195 | /* We've made space in the ICPLB table, so that ICPLB15 | 202 | /* We've made space in the ICPLB table, so that ICPLB15 |
196 | * is now free to be overwritten. Next, we have to determine | 203 | * is now free to be overwritten. Next, we have to determine |
@@ -515,14 +522,23 @@ ENTRY(_cplb_mgr) | |||
515 | R0 = [P0++]; /* move data */ | 522 | R0 = [P0++]; /* move data */ |
516 | [P0 - 8] = R0; | 523 | [P0 - 8] = R0; |
517 | R0 = [P0-0x104] /* move address */ | 524 | R0 = [P0-0x104] /* move address */ |
518 | .Lde_move: [P0-0x108] = R0; | 525 | .Lde_move: |
526 | [P0-0x108] = R0; | ||
527 | |||
528 | .Lde_moved: | ||
529 | NOP; | ||
530 | |||
531 | /* Clear DCPLB_DATA15, in case we don't find a replacement | ||
532 | * otherwise, we would have a duplicate entry, and will crash | ||
533 | */ | ||
534 | R0 = 0; | ||
535 | [P0 - 0x4] = R0; | ||
519 | 536 | ||
520 | /* We've now made space in DCPLB15 for the new CPLB to be | 537 | /* We've now made space in DCPLB15 for the new CPLB to be |
521 | * installed. The next stage is to locate a CPLB in the | 538 | * installed. The next stage is to locate a CPLB in the |
522 | * config table that covers the faulting address. | 539 | * config table that covers the faulting address. |
523 | */ | 540 | */ |
524 | 541 | ||
525 | .Lde_moved:NOP; | ||
526 | R0 = I0; /* Our faulting address */ | 542 | R0 = I0; /* Our faulting address */ |
527 | 543 | ||
528 | P2.L = _dpdt_table; | 544 | P2.L = _dpdt_table; |