summaryrefslogtreecommitdiffstats
path: root/bsps/powerpc/motorola_powerpc
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2020-04-08 13:19:51 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2020-07-05 12:56:01 +0200
commit9b5af6a47f799952c178967e04e83053bef57422 (patch)
tree52471dc069681c54d62abb2d002719b998523f41 /bsps/powerpc/motorola_powerpc
parentbsps/powerpc: Fix inline assembly (diff)
downloadrtems-9b5af6a47f799952c178967e04e83053bef57422.tar.bz2
bsps/powerpc: Fix tlbie instruction usage
GCC 10 no longer passes -many to the assembler. This enables more checks in the assembler. The 0 in the tlbie instruction is the L operand which selects a 4KiB page size.
Diffstat (limited to 'bsps/powerpc/motorola_powerpc')
-rw-r--r--bsps/powerpc/motorola_powerpc/bootloader/head.S2
-rw-r--r--bsps/powerpc/motorola_powerpc/bootloader/mm.c4
2 files changed, 3 insertions, 3 deletions
diff --git a/bsps/powerpc/motorola_powerpc/bootloader/head.S b/bsps/powerpc/motorola_powerpc/bootloader/head.S
index 974b78a51c..b7e423e75d 100644
--- a/bsps/powerpc/motorola_powerpc/bootloader/head.S
+++ b/bsps/powerpc/motorola_powerpc/bootloader/head.S
@@ -383,7 +383,7 @@ MMUoff: blr
flush_tlb:
lis r11,0x1000
1: addic. r11,r11,-0x1000
- tlbie r11
+ tlbie r11, 0
bnl 1b
/* tlbsync is not implemented on 601, so use sync which seems to be a superset
* of tlbsync in all cases and do not bother with CPU dependant code
diff --git a/bsps/powerpc/motorola_powerpc/bootloader/mm.c b/bsps/powerpc/motorola_powerpc/bootloader/mm.c
index 1b3df41d49..2675396145 100644
--- a/bsps/powerpc/motorola_powerpc/bootloader/mm.c
+++ b/bsps/powerpc/motorola_powerpc/bootloader/mm.c
@@ -199,7 +199,7 @@ void _handler(int vec, ctxt *p) {
flushva |= ((hte[i].key<<21)&0xf0000000)
| ((hte[i].key<<22)&0x0fc00000);
hte[i].key=0;
- asm volatile("sync; tlbie %0; sync" : : "r" (flushva));
+ asm volatile("sync; tlbie %0, 0; sync" : : "r" (flushva));
found:
hte[i].rpn = rpn;
asm volatile("eieio": : );
@@ -583,7 +583,7 @@ void vflush(map *virtmap) {
| ((p[i].key<<22)&0x0fc00000);
if (va>=virtmap->base && va<=virtmap->end) {
p[i].key=0;
- asm volatile("sync; tlbie %0; sync" : :
+ asm volatile("sync; tlbie %0, 0; sync" : :
"r" (va));
}
}