diff options
Diffstat (limited to 'arch/arm/mm/proc-feroceon.S')
-rw-r--r-- | arch/arm/mm/proc-feroceon.S | 202 |
1 files changed, 49 insertions, 153 deletions
diff --git a/arch/arm/mm/proc-feroceon.S b/arch/arm/mm/proc-feroceon.S index d3883eed7a4a..8a6c2f78c1c3 100644 --- a/arch/arm/mm/proc-feroceon.S +++ b/arch/arm/mm/proc-feroceon.S | |||
@@ -411,29 +411,28 @@ ENTRY(feroceon_dma_unmap_area) | |||
411 | mov pc, lr | 411 | mov pc, lr |
412 | ENDPROC(feroceon_dma_unmap_area) | 412 | ENDPROC(feroceon_dma_unmap_area) |
413 | 413 | ||
414 | ENTRY(feroceon_cache_fns) | 414 | @ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) |
415 | .long feroceon_flush_icache_all | 415 | define_cache_functions feroceon |
416 | .long feroceon_flush_kern_cache_all | 416 | |
417 | .long feroceon_flush_user_cache_all | 417 | .macro range_alias basename |
418 | .long feroceon_flush_user_cache_range | 418 | .globl feroceon_range_\basename |
419 | .long feroceon_coherent_kern_range | 419 | .type feroceon_range_\basename , %function |
420 | .long feroceon_coherent_user_range | 420 | .equ feroceon_range_\basename , feroceon_\basename |
421 | .long feroceon_flush_kern_dcache_area | 421 | .endm |
422 | .long feroceon_dma_map_area | 422 | |
423 | .long feroceon_dma_unmap_area | 423 | /* |
424 | .long feroceon_dma_flush_range | 424 | * Most of the cache functions are unchanged for this case. |
425 | 425 | * Export suitable alias symbols for the unchanged functions: | |
426 | ENTRY(feroceon_range_cache_fns) | 426 | */ |
427 | .long feroceon_flush_icache_all | 427 | range_alias flush_icache_all |
428 | .long feroceon_flush_kern_cache_all | 428 | range_alias flush_user_cache_all |
429 | .long feroceon_flush_user_cache_all | 429 | range_alias flush_kern_cache_all |
430 | .long feroceon_flush_user_cache_range | 430 | range_alias flush_user_cache_range |
431 | .long feroceon_coherent_kern_range | 431 | range_alias coherent_kern_range |
432 | .long feroceon_coherent_user_range | 432 | range_alias coherent_user_range |
433 | .long feroceon_range_flush_kern_dcache_area | 433 | range_alias dma_unmap_area |
434 | .long feroceon_range_dma_map_area | 434 | |
435 | .long feroceon_dma_unmap_area | 435 | define_cache_functions feroceon_range |
436 | .long feroceon_range_dma_flush_range | ||
437 | 436 | ||
438 | .align 5 | 437 | .align 5 |
439 | ENTRY(cpu_feroceon_dcache_clean_area) | 438 | ENTRY(cpu_feroceon_dcache_clean_area) |
@@ -539,93 +538,27 @@ feroceon_crval: | |||
539 | 538 | ||
540 | __INITDATA | 539 | __INITDATA |
541 | 540 | ||
542 | /* | 541 | @ define struct processor (see <asm/proc-fns.h> and proc-macros.S) |
543 | * Purpose : Function pointers used to access above functions - all calls | 542 | define_processor_functions feroceon, dabort=v5t_early_abort, pabort=legacy_pabort |
544 | * come through these | ||
545 | */ | ||
546 | .type feroceon_processor_functions, #object | ||
547 | feroceon_processor_functions: | ||
548 | .word v5t_early_abort | ||
549 | .word legacy_pabort | ||
550 | .word cpu_feroceon_proc_init | ||
551 | .word cpu_feroceon_proc_fin | ||
552 | .word cpu_feroceon_reset | ||
553 | .word cpu_feroceon_do_idle | ||
554 | .word cpu_feroceon_dcache_clean_area | ||
555 | .word cpu_feroceon_switch_mm | ||
556 | .word cpu_feroceon_set_pte_ext | ||
557 | .word 0 | ||
558 | .word 0 | ||
559 | .word 0 | ||
560 | .size feroceon_processor_functions, . - feroceon_processor_functions | ||
561 | 543 | ||
562 | .section ".rodata" | 544 | .section ".rodata" |
563 | 545 | ||
564 | .type cpu_arch_name, #object | 546 | string cpu_arch_name, "armv5te" |
565 | cpu_arch_name: | 547 | string cpu_elf_name, "v5" |
566 | .asciz "armv5te" | 548 | string cpu_feroceon_name, "Feroceon" |
567 | .size cpu_arch_name, . - cpu_arch_name | 549 | string cpu_88fr531_name, "Feroceon 88FR531-vd" |
568 | 550 | string cpu_88fr571_name, "Feroceon 88FR571-vd" | |
569 | .type cpu_elf_name, #object | 551 | string cpu_88fr131_name, "Feroceon 88FR131" |
570 | cpu_elf_name: | ||
571 | .asciz "v5" | ||
572 | .size cpu_elf_name, . - cpu_elf_name | ||
573 | |||
574 | .type cpu_feroceon_name, #object | ||
575 | cpu_feroceon_name: | ||
576 | .asciz "Feroceon" | ||
577 | .size cpu_feroceon_name, . - cpu_feroceon_name | ||
578 | |||
579 | .type cpu_88fr531_name, #object | ||
580 | cpu_88fr531_name: | ||
581 | .asciz "Feroceon 88FR531-vd" | ||
582 | .size cpu_88fr531_name, . - cpu_88fr531_name | ||
583 | |||
584 | .type cpu_88fr571_name, #object | ||
585 | cpu_88fr571_name: | ||
586 | .asciz "Feroceon 88FR571-vd" | ||
587 | .size cpu_88fr571_name, . - cpu_88fr571_name | ||
588 | |||
589 | .type cpu_88fr131_name, #object | ||
590 | cpu_88fr131_name: | ||
591 | .asciz "Feroceon 88FR131" | ||
592 | .size cpu_88fr131_name, . - cpu_88fr131_name | ||
593 | 552 | ||
594 | .align | 553 | .align |
595 | 554 | ||
596 | .section ".proc.info.init", #alloc, #execinstr | 555 | .section ".proc.info.init", #alloc, #execinstr |
597 | 556 | ||
598 | #ifdef CONFIG_CPU_FEROCEON_OLD_ID | 557 | .macro feroceon_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cache:req |
599 | .type __feroceon_old_id_proc_info,#object | 558 | .type __\name\()_proc_info,#object |
600 | __feroceon_old_id_proc_info: | 559 | __\name\()_proc_info: |
601 | .long 0x41009260 | 560 | .long \cpu_val |
602 | .long 0xff00fff0 | 561 | .long \cpu_mask |
603 | .long PMD_TYPE_SECT | \ | ||
604 | PMD_SECT_BUFFERABLE | \ | ||
605 | PMD_SECT_CACHEABLE | \ | ||
606 | PMD_BIT4 | \ | ||
607 | PMD_SECT_AP_WRITE | \ | ||
608 | PMD_SECT_AP_READ | ||
609 | .long PMD_TYPE_SECT | \ | ||
610 | PMD_BIT4 | \ | ||
611 | PMD_SECT_AP_WRITE | \ | ||
612 | PMD_SECT_AP_READ | ||
613 | b __feroceon_setup | ||
614 | .long cpu_arch_name | ||
615 | .long cpu_elf_name | ||
616 | .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP | ||
617 | .long cpu_feroceon_name | ||
618 | .long feroceon_processor_functions | ||
619 | .long v4wbi_tlb_fns | ||
620 | .long feroceon_user_fns | ||
621 | .long feroceon_cache_fns | ||
622 | .size __feroceon_old_id_proc_info, . - __feroceon_old_id_proc_info | ||
623 | #endif | ||
624 | |||
625 | .type __88fr531_proc_info,#object | ||
626 | __88fr531_proc_info: | ||
627 | .long 0x56055310 | ||
628 | .long 0xfffffff0 | ||
629 | .long PMD_TYPE_SECT | \ | 562 | .long PMD_TYPE_SECT | \ |
630 | PMD_SECT_BUFFERABLE | \ | 563 | PMD_SECT_BUFFERABLE | \ |
631 | PMD_SECT_CACHEABLE | \ | 564 | PMD_SECT_CACHEABLE | \ |
@@ -640,59 +573,22 @@ __88fr531_proc_info: | |||
640 | .long cpu_arch_name | 573 | .long cpu_arch_name |
641 | .long cpu_elf_name | 574 | .long cpu_elf_name |
642 | .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP | 575 | .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP |
643 | .long cpu_88fr531_name | 576 | .long \cpu_name |
644 | .long feroceon_processor_functions | 577 | .long feroceon_processor_functions |
645 | .long v4wbi_tlb_fns | 578 | .long v4wbi_tlb_fns |
646 | .long feroceon_user_fns | 579 | .long feroceon_user_fns |
647 | .long feroceon_cache_fns | 580 | .long \cache |
648 | .size __88fr531_proc_info, . - __88fr531_proc_info | 581 | .size __\name\()_proc_info, . - __\name\()_proc_info |
582 | .endm | ||
649 | 583 | ||
650 | .type __88fr571_proc_info,#object | 584 | #ifdef CONFIG_CPU_FEROCEON_OLD_ID |
651 | __88fr571_proc_info: | 585 | feroceon_proc_info feroceon_old_id, 0x41009260, 0xff00fff0, \ |
652 | .long 0x56155710 | 586 | cpu_name=cpu_feroceon_name, cache=feroceon_cache_fns |
653 | .long 0xfffffff0 | 587 | #endif |
654 | .long PMD_TYPE_SECT | \ | ||
655 | PMD_SECT_BUFFERABLE | \ | ||
656 | PMD_SECT_CACHEABLE | \ | ||
657 | PMD_BIT4 | \ | ||
658 | PMD_SECT_AP_WRITE | \ | ||
659 | PMD_SECT_AP_READ | ||
660 | .long PMD_TYPE_SECT | \ | ||
661 | PMD_BIT4 | \ | ||
662 | PMD_SECT_AP_WRITE | \ | ||
663 | PMD_SECT_AP_READ | ||
664 | b __feroceon_setup | ||
665 | .long cpu_arch_name | ||
666 | .long cpu_elf_name | ||
667 | .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP | ||
668 | .long cpu_88fr571_name | ||
669 | .long feroceon_processor_functions | ||
670 | .long v4wbi_tlb_fns | ||
671 | .long feroceon_user_fns | ||
672 | .long feroceon_range_cache_fns | ||
673 | .size __88fr571_proc_info, . - __88fr571_proc_info | ||
674 | 588 | ||
675 | .type __88fr131_proc_info,#object | 589 | feroceon_proc_info 88fr531, 0x56055310, 0xfffffff0, cpu_88fr531_name, \ |
676 | __88fr131_proc_info: | 590 | cache=feroceon_cache_fns |
677 | .long 0x56251310 | 591 | feroceon_proc_info 88fr571, 0x56155710, 0xfffffff0, cpu_88fr571_name, \ |
678 | .long 0xfffffff0 | 592 | cache=feroceon_range_cache_fns |
679 | .long PMD_TYPE_SECT | \ | 593 | feroceon_proc_info 88fr131, 0x56251310, 0xfffffff0, cpu_88fr131_name, \ |
680 | PMD_SECT_BUFFERABLE | \ | 594 | cache=feroceon_range_cache_fns |
681 | PMD_SECT_CACHEABLE | \ | ||
682 | PMD_BIT4 | \ | ||
683 | PMD_SECT_AP_WRITE | \ | ||
684 | PMD_SECT_AP_READ | ||
685 | .long PMD_TYPE_SECT | \ | ||
686 | PMD_BIT4 | \ | ||
687 | PMD_SECT_AP_WRITE | \ | ||
688 | PMD_SECT_AP_READ | ||
689 | b __feroceon_setup | ||
690 | .long cpu_arch_name | ||
691 | .long cpu_elf_name | ||
692 | .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP | ||
693 | .long cpu_88fr131_name | ||
694 | .long feroceon_processor_functions | ||
695 | .long v4wbi_tlb_fns | ||
696 | .long feroceon_user_fns | ||
697 | .long feroceon_range_cache_fns | ||
698 | .size __88fr131_proc_info, . - __88fr131_proc_info | ||