qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

iocsr_helper.c (2147B)


      1 /* SPDX-License-Identifier: GPL-2.0-or-later */
      2 /*
      3  * Copyright (c) 2021 Loongson Technology Corporation Limited
      4  *
      5  * Helpers for IOCSR reads/writes
      6  */
      7 
      8 #include "qemu/osdep.h"
      9 #include "qemu/main-loop.h"
     10 #include "cpu.h"
     11 #include "qemu/host-utils.h"
     12 #include "exec/helper-proto.h"
     13 #include "exec/exec-all.h"
     14 #include "exec/cpu_ldst.h"
     15 #include "tcg/tcg-ldst.h"
     16 
     17 #define GET_MEMTXATTRS(cas) \
     18         ((MemTxAttrs){.requester_id = env_cpu(cas)->cpu_index})
     19 
     20 uint64_t helper_iocsrrd_b(CPULoongArchState *env, target_ulong r_addr)
     21 {
     22     return address_space_ldub(&env->address_space_iocsr, r_addr,
     23                               GET_MEMTXATTRS(env), NULL);
     24 }
     25 
     26 uint64_t helper_iocsrrd_h(CPULoongArchState *env, target_ulong r_addr)
     27 {
     28     return address_space_lduw(&env->address_space_iocsr, r_addr,
     29                               GET_MEMTXATTRS(env), NULL);
     30 }
     31 
     32 uint64_t helper_iocsrrd_w(CPULoongArchState *env, target_ulong r_addr)
     33 {
     34     return address_space_ldl(&env->address_space_iocsr, r_addr,
     35                              GET_MEMTXATTRS(env), NULL);
     36 }
     37 
     38 uint64_t helper_iocsrrd_d(CPULoongArchState *env, target_ulong r_addr)
     39 {
     40     return address_space_ldq(&env->address_space_iocsr, r_addr,
     41                              GET_MEMTXATTRS(env), NULL);
     42 }
     43 
     44 void helper_iocsrwr_b(CPULoongArchState *env, target_ulong w_addr,
     45                       target_ulong val)
     46 {
     47     address_space_stb(&env->address_space_iocsr, w_addr,
     48                       val, GET_MEMTXATTRS(env), NULL);
     49 }
     50 
     51 void helper_iocsrwr_h(CPULoongArchState *env, target_ulong w_addr,
     52                       target_ulong val)
     53 {
     54     address_space_stw(&env->address_space_iocsr, w_addr,
     55                       val, GET_MEMTXATTRS(env), NULL);
     56 }
     57 
     58 void helper_iocsrwr_w(CPULoongArchState *env, target_ulong w_addr,
     59                       target_ulong val)
     60 {
     61     address_space_stl(&env->address_space_iocsr, w_addr,
     62                       val, GET_MEMTXATTRS(env), NULL);
     63 }
     64 
     65 void helper_iocsrwr_d(CPULoongArchState *env, target_ulong w_addr,
     66                       target_ulong val)
     67 {
     68     address_space_stq(&env->address_space_iocsr, w_addr,
     69                       val, GET_MEMTXATTRS(env), NULL);
     70 }