source: rtems/bsps/powerpc/qoriq/start/mmu-tlb1.S @ 8f8ccee

5
Last change on this file since 8f8ccee was 9964895, checked in by Sebastian Huber <sebastian.huber@…>, on 04/20/18 at 08:35:35

bsps: Move startup files to bsps

Adjust build support files to new directory layout.

This patch is a part of the BSP source reorganization.

Update #3285.

  • Property mode set to 100644
File size: 2.0 KB
Line 
1/**
2 * @file
3 *
4 * @ingroup QorIQMMU
5 *
6 * @brief qoriq_tlb1_write() and qoriq_tlb1_invalidate() implementation.
7 */
8
9/*
10 * Copyright (c) 2011, 2017 embedded brains GmbH.  All rights reserved.
11 *
12 *  embedded brains GmbH
13 *  Dornierstr. 4
14 *  82178 Puchheim
15 *  Germany
16 *  <rtems@embedded-brains.de>
17 *
18 * The license and distribution terms for this file may be
19 * found in the file LICENSE in this distribution or at
20 * http://www.rtems.org/license/LICENSE.
21 */
22
23#include <bspopts.h>
24
25#include <libcpu/powerpc-utility.h>
26
27        .global qoriq_tlb1_write
28        .global qoriq_tlb1_invalidate
29        .global qoriq_tlb1_invalidate_all_by_ts
30
31        .section ".bsp_start_text", "ax"
32
33qoriq_tlb1_write:
34        rlwinm  r3, r3, 16, 10, 15
35#ifdef __powerpc64__
36        rldicr  r8, r8, 0, 51
37#else
38        rlwinm  r8, r8, 0, 0, 19
39#endif
40        oris    r3, r3, 0x1000
41        mtspr   FSL_EIS_MAS0, r3
42        oris    r4, r4, 0xc000
43        rlwinm  r9, r9, 8, 20, 23
44        or      r9, r4, r9
45        mtspr   FSL_EIS_MAS1, r9
46        or      r5, r8, r5
47        mtspr   FSL_EIS_MAS2, r5
48        or      r6, r8, r6
49        mtspr   FSL_EIS_MAS3, r6
50#ifdef __powerpc64__
51        srdi    r8, r8, 32
52        or      r7, r7, r8
53        mtspr   FSL_EIS_MAS7, r7
54#endif
55        mtspr   FSL_EIS_MAS7, r7
56#if defined(QORIQ_HAS_HYPERVISOR_MODE) && !defined(QORIQ_IS_HYPERVISOR_GUEST)
57        li      r0, 0
58        mtspr   FSL_EIS_MAS8, r0
59#endif
60        isync
61        msync
62        tlbwe
63        isync
64        blr
65
66qoriq_tlb1_invalidate:
67        rlwinm  r3, r3, 16, 10, 15
68        oris    r3, r3, 0x1000
69        mtspr   FSL_EIS_MAS0, r3
70        li      r0, 0
71        mtspr   FSL_EIS_MAS1, r0
72        mtspr   FSL_EIS_MAS2, r0
73        mtspr   FSL_EIS_MAS3, r0
74        mtspr   FSL_EIS_MAS7, r0
75#if defined(QORIQ_HAS_HYPERVISOR_MODE) && !defined(QORIQ_IS_HYPERVISOR_GUEST)
76        mtspr   FSL_EIS_MAS8, r0
77#endif
78        isync
79        msync
80        tlbwe
81        isync
82        blr
83
84/* r3 = 0 for TS0, 1 for TS1 */
85qoriq_tlb1_invalidate_all_by_ts:
86        mflr    r12
87        li      r11, QORIQ_TLB1_ENTRY_COUNT
88        mtctr   r11
89        li      r11, 0
90        mr      r10, r3
91
922:
93        rlwinm  r0, r11, 16, 10, 15
94        oris    r0, r0, (FSL_EIS_MAS0_TLBSEL >> 16)
95        mtspr   FSL_EIS_MAS0, r0
96        tlbre
97        mfspr   r0, FSL_EIS_MAS1
98        rlwinm  r0, r0, 20, 31, 31
99        cmpw    r0, r10
100        bne     1f
101        mr      r3, r11
102        bl      qoriq_tlb1_invalidate
1031:
104        addi    r11, r11, 1
105        bdnz    2b
106        mtlr    r12
107        blr
Note: See TracBrowser for help on using the repository browser.