mirror of
https://github.com/reactos/reactos.git
synced 2024-11-09 08:08:38 +00:00
24 lines
609 B
C
24 lines
609 B
C
|
#include "ppcmmu/mmu.h"
|
||
|
#include "ppcmmu/mmuutil.h"
|
||
|
#include "mmuobject.h"
|
||
|
|
||
|
int mmunitest()
|
||
|
{
|
||
|
int ret;
|
||
|
int (*fun)(int ret) = (void *)0x80000000;
|
||
|
ppc_map_info_t info = { 0 };
|
||
|
volatile int oldmsr, msr = 0x2030;
|
||
|
__asm__("mfmsr 0\n\tstw 0,0(%0)" : : "r" (&oldmsr));
|
||
|
mmusetvsid(8, 9, 0);
|
||
|
info.flags = MMU_ALL_RW;
|
||
|
info.proc = 0;
|
||
|
info.addr = (vaddr_t)fun;
|
||
|
mmuaddpage(&info, 1);
|
||
|
__asm__("mtmsr %0" : : "r" (msr));
|
||
|
__asm__("mtsdr1 %0" : : "r" (HTABORG));
|
||
|
*((int *)fun) = 0x4e800020;
|
||
|
ret = fun(3);
|
||
|
__asm__("mtmsr %0" : : "r" (oldmsr));
|
||
|
return ret != 3;
|
||
|
}
|