diff options
Diffstat (limited to 'arch/arm/mm/proc-v7.S')
| -rw-r--r-- | arch/arm/mm/proc-v7.S | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S index 3a3c015f8d5c..2c73a7301ff7 100644 --- a/arch/arm/mm/proc-v7.S +++ b/arch/arm/mm/proc-v7.S | |||
| @@ -75,14 +75,14 @@ ENTRY(cpu_v7_do_idle) | |||
| 75 | ENDPROC(cpu_v7_do_idle) | 75 | ENDPROC(cpu_v7_do_idle) |
| 76 | 76 | ||
| 77 | ENTRY(cpu_v7_dcache_clean_area) | 77 | ENTRY(cpu_v7_dcache_clean_area) |
| 78 | #ifndef TLB_CAN_READ_FROM_L1_CACHE | 78 | ALT_SMP(mov pc, lr) @ MP extensions imply L1 PTW |
| 79 | ALT_UP(W(nop)) | ||
| 79 | dcache_line_size r2, r3 | 80 | dcache_line_size r2, r3 |
| 80 | 1: mcr p15, 0, r0, c7, c10, 1 @ clean D entry | 81 | 1: mcr p15, 0, r0, c7, c10, 1 @ clean D entry |
| 81 | add r0, r0, r2 | 82 | add r0, r0, r2 |
| 82 | subs r1, r1, r2 | 83 | subs r1, r1, r2 |
| 83 | bhi 1b | 84 | bhi 1b |
| 84 | dsb | 85 | dsb |
| 85 | #endif | ||
| 86 | mov pc, lr | 86 | mov pc, lr |
| 87 | ENDPROC(cpu_v7_dcache_clean_area) | 87 | ENDPROC(cpu_v7_dcache_clean_area) |
| 88 | 88 | ||
| @@ -402,6 +402,8 @@ __v7_ca9mp_proc_info: | |||
| 402 | __v7_proc __v7_ca9mp_setup | 402 | __v7_proc __v7_ca9mp_setup |
| 403 | .size __v7_ca9mp_proc_info, . - __v7_ca9mp_proc_info | 403 | .size __v7_ca9mp_proc_info, . - __v7_ca9mp_proc_info |
| 404 | 404 | ||
| 405 | #endif /* CONFIG_ARM_LPAE */ | ||
| 406 | |||
| 405 | /* | 407 | /* |
| 406 | * Marvell PJ4B processor. | 408 | * Marvell PJ4B processor. |
| 407 | */ | 409 | */ |
| @@ -411,7 +413,6 @@ __v7_pj4b_proc_info: | |||
| 411 | .long 0xfffffff0 | 413 | .long 0xfffffff0 |
| 412 | __v7_proc __v7_pj4b_setup | 414 | __v7_proc __v7_pj4b_setup |
| 413 | .size __v7_pj4b_proc_info, . - __v7_pj4b_proc_info | 415 | .size __v7_pj4b_proc_info, . - __v7_pj4b_proc_info |
| 414 | #endif /* CONFIG_ARM_LPAE */ | ||
| 415 | 416 | ||
| 416 | /* | 417 | /* |
| 417 | * ARM Ltd. Cortex A7 processor. | 418 | * ARM Ltd. Cortex A7 processor. |
| @@ -420,7 +421,7 @@ __v7_pj4b_proc_info: | |||
| 420 | __v7_ca7mp_proc_info: | 421 | __v7_ca7mp_proc_info: |
| 421 | .long 0x410fc070 | 422 | .long 0x410fc070 |
| 422 | .long 0xff0ffff0 | 423 | .long 0xff0ffff0 |
| 423 | __v7_proc __v7_ca7mp_setup, hwcaps = HWCAP_IDIV | 424 | __v7_proc __v7_ca7mp_setup |
| 424 | .size __v7_ca7mp_proc_info, . - __v7_ca7mp_proc_info | 425 | .size __v7_ca7mp_proc_info, . - __v7_ca7mp_proc_info |
| 425 | 426 | ||
| 426 | /* | 427 | /* |
| @@ -430,10 +431,25 @@ __v7_ca7mp_proc_info: | |||
| 430 | __v7_ca15mp_proc_info: | 431 | __v7_ca15mp_proc_info: |
| 431 | .long 0x410fc0f0 | 432 | .long 0x410fc0f0 |
| 432 | .long 0xff0ffff0 | 433 | .long 0xff0ffff0 |
| 433 | __v7_proc __v7_ca15mp_setup, hwcaps = HWCAP_IDIV | 434 | __v7_proc __v7_ca15mp_setup |
| 434 | .size __v7_ca15mp_proc_info, . - __v7_ca15mp_proc_info | 435 | .size __v7_ca15mp_proc_info, . - __v7_ca15mp_proc_info |
| 435 | 436 | ||
| 436 | /* | 437 | /* |
| 438 | * Qualcomm Inc. Krait processors. | ||
| 439 | */ | ||
| 440 | .type __krait_proc_info, #object | ||
| 441 | __krait_proc_info: | ||
| 442 | .long 0x510f0400 @ Required ID value | ||
| 443 | .long 0xff0ffc00 @ Mask for ID | ||
| 444 | /* | ||
| 445 | * Some Krait processors don't indicate support for SDIV and UDIV | ||
| 446 | * instructions in the ARM instruction set, even though they actually | ||
| 447 | * do support them. | ||
| 448 | */ | ||
| 449 | __v7_proc __v7_setup, hwcaps = HWCAP_IDIV | ||
| 450 | .size __krait_proc_info, . - __krait_proc_info | ||
| 451 | |||
| 452 | /* | ||
| 437 | * Match any ARMv7 processor core. | 453 | * Match any ARMv7 processor core. |
| 438 | */ | 454 | */ |
| 439 | .type __v7_proc_info, #object | 455 | .type __v7_proc_info, #object |
