stack was misaligned
This commit is contained in:
@@ -554,7 +554,9 @@ access_mmu:
|
|||||||
move.l MCF_MMU_MMUAR,d0
|
move.l MCF_MMU_MMUAR,d0
|
||||||
cmp.l #__FASTRAM_END,d0 // above max User RAM area?
|
cmp.l #__FASTRAM_END,d0 // above max User RAM area?
|
||||||
bge bus_error // -> bus error
|
bge bus_error // -> bus error
|
||||||
bra _mmutr_miss // else we have an MMU TLB miss
|
bsr _mmutr_miss // else we have an MMU TLB miss
|
||||||
|
move.l (sp)+,d0 // restore register
|
||||||
|
rte
|
||||||
|
|
||||||
bus_error:
|
bus_error:
|
||||||
move.l (sp)+,d0 // restore register
|
move.l (sp)+,d0 // restore register
|
||||||
|
|||||||
@@ -345,7 +345,7 @@ void mmu_init(void)
|
|||||||
MCF_MMU_MMUOR_UAA; /* update allocation address field */
|
MCF_MMU_MMUOR_UAA; /* update allocation address field */
|
||||||
}
|
}
|
||||||
|
|
||||||
void __attribute__((interrupt)) mmutr_miss(void)
|
void mmutr_miss(void)
|
||||||
{
|
{
|
||||||
register uint32_t address asm("d0");
|
register uint32_t address asm("d0");
|
||||||
|
|
||||||
@@ -367,6 +367,7 @@ void __attribute__((interrupt)) mmutr_miss(void)
|
|||||||
MCF_MMU_MMUOR = MCF_MMU_MMUOR_ITLB | /* instruction */
|
MCF_MMU_MMUOR = MCF_MMU_MMUOR_ITLB | /* instruction */
|
||||||
MCF_MMU_MMUOR_ACC | /* access TLB */
|
MCF_MMU_MMUOR_ACC | /* access TLB */
|
||||||
MCF_MMU_MMUOR_UAA; /* update allocation address field */
|
MCF_MMU_MMUOR_UAA; /* update allocation address field */
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user