summaryrefslogtreecommitdiff
path: root/src/TRK_MINNOW_DOLPHIN/ppc/Generic/flush_cache.c
blob: fcfbd12a37dd8b7a38872a48bc37affabd7697af (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/**
 * flush_cache.c
 * Description:
 */

#include "dolphin/types.h"

asm void TRK_flush_cache(u32, int) {
    // clang-format off
    nofralloc

    lis r5, 0xFFFF
    ori r5, r5, 0xFFF1
    and r5, r5, r3
    subf r3, r5, r3
    add r4, r4, r3

loop:
    dcbst 0, r5
    dcbf 0, r5
    sync
    icbi 0, r5
    addic r5, r5, 8
    addic. r4, r4, -8
    bge loop

    isync 
    blr
    // clang-format on
}