mirror of
https://github.com/wiiu-env/KernelModule.git
synced 2025-05-11 10:01:31 +02:00
Preserve r2/r13 on kern_write
This commit is contained in:
parent
4ecaee8deb
commit
9a9ece838d
@ -142,6 +142,9 @@ void KernelReadSRs(sr_table_t *table) {
|
|||||||
/* Write a 32-bit word with kernel permissions */
|
/* Write a 32-bit word with kernel permissions */
|
||||||
void __attribute__((noinline)) kern_write(void *addr, uint32_t value) {
|
void __attribute__((noinline)) kern_write(void *addr, uint32_t value) {
|
||||||
asm volatile(
|
asm volatile(
|
||||||
|
"stwu 1, -0x10(1)\n"
|
||||||
|
"stw 2, 0x08(1)\n"
|
||||||
|
"stw 13, 0x0C(1)\n"
|
||||||
"li 3,1\n"
|
"li 3,1\n"
|
||||||
"li 4,0\n"
|
"li 4,0\n"
|
||||||
"mr 5,%1\n"
|
"mr 5,%1\n"
|
||||||
@ -154,6 +157,9 @@ void __attribute__((noinline)) kern_write(void *addr, uint32_t value) {
|
|||||||
"sc\n"
|
"sc\n"
|
||||||
"nop\n"
|
"nop\n"
|
||||||
"mr 1,%1\n"
|
"mr 1,%1\n"
|
||||||
|
"lwz 2, 0x8(1)\n"
|
||||||
|
"lwz 13, 0xC(1)\n"
|
||||||
|
"addi 1, 1, 0x10\n"
|
||||||
:
|
:
|
||||||
: "r"(addr), "r"(value)
|
: "r"(addr), "r"(value)
|
||||||
: "memory", "ctr", "lr", "0", "3", "4", "5", "6", "7", "8", "9", "10",
|
: "memory", "ctr", "lr", "0", "3", "4", "5", "6", "7", "8", "9", "10",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user