Revision 204504e2
b/target-s390x/helper.h | ||
---|---|---|
107 | 107 |
DEF_HELPER_FLAGS_3(ipte, TCG_CALL_NO_RWG, void, env, i64, i64) |
108 | 108 |
DEF_HELPER_FLAGS_1(ptlb, TCG_CALL_NO_RWG, void, env) |
109 | 109 |
DEF_HELPER_2(lra, i64, env, i64) |
110 |
DEF_HELPER_3(stura, void, env, i64, i32)
|
|
110 |
DEF_HELPER_3(stura, void, env, i64, i64)
|
|
111 | 111 |
#endif |
112 | 112 |
|
113 | 113 |
#include "exec/def-helper.h" |
b/target-s390x/insn-data.def | ||
---|---|---|
678 | 678 |
C(0xac00, STNSM, SI, Z, la1, 0, 0, 0, stnosm, 0) |
679 | 679 |
/* STORE THEN OR SYSTEM MASK */ |
680 | 680 |
C(0xad00, STOSM, SI, Z, la1, 0, 0, 0, stnosm, 0) |
681 |
/* STORE USING REAL ADDRESS */ |
|
682 |
C(0xb246, STURA, RRE, Z, r1_o, r2_o, 0, 0, stura, 0) |
|
681 | 683 |
/* TEST PROTECTION */ |
682 | 684 |
C(0xe501, TPROT, SSE, Z, la1, a2, 0, 0, tprot, 0) |
683 | 685 |
|
b/target-s390x/mem_helper.c | ||
---|---|---|
1093 | 1093 |
} |
1094 | 1094 |
|
1095 | 1095 |
/* store using real address */ |
1096 |
void HELPER(stura)(CPUS390XState *env, uint64_t addr, uint32_t v1)
|
|
1096 |
void HELPER(stura)(CPUS390XState *env, uint64_t addr, uint64_t v1)
|
|
1097 | 1097 |
{ |
1098 |
stw_phys(get_address(env, 0, 0, addr), v1); |
|
1098 |
stw_phys(get_address(env, 0, 0, addr), (uint32_t)v1);
|
|
1099 | 1099 |
} |
1100 | 1100 |
|
1101 | 1101 |
/* load real address */ |
b/target-s390x/translate.c | ||
---|---|---|
1033 | 1033 |
LOG_DISAS("disas_b2: op 0x%x r1 %d r2 %d\n", op, r1, r2); |
1034 | 1034 |
|
1035 | 1035 |
switch (op) { |
1036 |
case 0x46: /* STURA R1,R2 [RRE] */ |
|
1037 |
/* Store Using Real Address */ |
|
1038 |
check_privileged(s); |
|
1039 |
r1 = (insn >> 4) & 0xf; |
|
1040 |
r2 = insn & 0xf; |
|
1041 |
tmp32_1 = load_reg32(r1); |
|
1042 |
tmp = load_reg(r2); |
|
1043 |
potential_page_fault(s); |
|
1044 |
gen_helper_stura(cpu_env, tmp, tmp32_1); |
|
1045 |
tcg_temp_free_i32(tmp32_1); |
|
1046 |
tcg_temp_free_i64(tmp); |
|
1047 |
break; |
|
1048 | 1036 |
case 0x50: /* CSP R1,R2 [RRE] */ |
1049 | 1037 |
/* Compare And Swap And Purge */ |
1050 | 1038 |
check_privileged(s); |
... | ... | |
2945 | 2933 |
} |
2946 | 2934 |
return NO_EXIT; |
2947 | 2935 |
} |
2936 |
|
|
2937 |
static ExitStatus op_stura(DisasContext *s, DisasOps *o) |
|
2938 |
{ |
|
2939 |
check_privileged(s); |
|
2940 |
potential_page_fault(s); |
|
2941 |
gen_helper_stura(cpu_env, o->in2, o->in1); |
|
2942 |
return NO_EXIT; |
|
2943 |
} |
|
2948 | 2944 |
#endif |
2949 | 2945 |
|
2950 | 2946 |
static ExitStatus op_st8(DisasContext *s, DisasOps *o) |
Also available in: Unified diff