about summary refs log tree commit diff stats
path: root/src/dynarec/la64/dynarec_la64_jmpnext.c
blob: abb49ff982307bef7c8ba65716d0b8665aa87413 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdint.h>

#include "la64_emitter.h"

#define EMIT(A)       \
    do {              \
        *block = (A); \
        ++block;      \
    } while (0)
void CreateJmpNext(void* addr, void* next)
{
    uint32_t* block = (uint32_t*)addr;
    uintptr_t diff = (intptr_t)next - (intptr_t)addr;
    PCADDU12I(x2, SPLIT20(diff));
    LD_D(x2, x2, SPLIT12(diff));
    BR(x2);
}