cpu.c (0529245488865038344d64fff7ee05864d3d17f6) cpu.c (56c6c98df85cb03b1e72ef92111c4f9dde542d74)
1/*
2 * QEMU ARM CPU
3 *
4 * Copyright (c) 2012 SUSE LINUX Products GmbH
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2

--- 76 unchanged lines hidden (view full) ---

85 */
86 if (is_a64(env)) {
87 env->pc = tb_pc(tb);
88 } else {
89 env->regs[15] = tb_pc(tb);
90 }
91 }
92}
1/*
2 * QEMU ARM CPU
3 *
4 * Copyright (c) 2012 SUSE LINUX Products GmbH
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2

--- 76 unchanged lines hidden (view full) ---

85 */
86 if (is_a64(env)) {
87 env->pc = tb_pc(tb);
88 } else {
89 env->regs[15] = tb_pc(tb);
90 }
91 }
92}
93
94static void arm_restore_state_to_opc(CPUState *cs,
95 const TranslationBlock *tb,
96 const uint64_t *data)
97{
98 CPUARMState *env = cs->env_ptr;
99
100 if (is_a64(env)) {
101 if (TARGET_TB_PCREL) {
102 env->pc = (env->pc & TARGET_PAGE_MASK) | data[0];
103 } else {
104 env->pc = data[0];
105 }
106 env->condexec_bits = 0;
107 env->exception.syndrome = data[2] << ARM_INSN_START_WORD2_SHIFT;
108 } else {
109 if (TARGET_TB_PCREL) {
110 env->regs[15] = (env->regs[15] & TARGET_PAGE_MASK) | data[0];
111 } else {
112 env->regs[15] = data[0];
113 }
114 env->condexec_bits = data[1];
115 env->exception.syndrome = data[2] << ARM_INSN_START_WORD2_SHIFT;
116 }
117}
93#endif /* CONFIG_TCG */
94
95static bool arm_cpu_has_work(CPUState *cs)
96{
97 ARMCPU *cpu = ARM_CPU(cs);
98
99 return (cpu->power_state != PSCI_OFF)
100 && cs->interrupt_request &

--- 2046 unchanged lines hidden (view full) ---

2147};
2148#endif
2149
2150#ifdef CONFIG_TCG
2151static const struct TCGCPUOps arm_tcg_ops = {
2152 .initialize = arm_translate_init,
2153 .synchronize_from_tb = arm_cpu_synchronize_from_tb,
2154 .debug_excp_handler = arm_debug_excp_handler,
118#endif /* CONFIG_TCG */
119
120static bool arm_cpu_has_work(CPUState *cs)
121{
122 ARMCPU *cpu = ARM_CPU(cs);
123
124 return (cpu->power_state != PSCI_OFF)
125 && cs->interrupt_request &

--- 2046 unchanged lines hidden (view full) ---

2172};
2173#endif
2174
2175#ifdef CONFIG_TCG
2176static const struct TCGCPUOps arm_tcg_ops = {
2177 .initialize = arm_translate_init,
2178 .synchronize_from_tb = arm_cpu_synchronize_from_tb,
2179 .debug_excp_handler = arm_debug_excp_handler,
2180 .restore_state_to_opc = arm_restore_state_to_opc,
2155
2156#ifdef CONFIG_USER_ONLY
2157 .record_sigsegv = arm_cpu_record_sigsegv,
2158 .record_sigbus = arm_cpu_record_sigbus,
2159#else
2160 .tlb_fill = arm_cpu_tlb_fill,
2161 .cpu_exec_interrupt = arm_cpu_exec_interrupt,
2162 .do_interrupt = arm_cpu_do_interrupt,

--- 93 unchanged lines hidden ---
2181
2182#ifdef CONFIG_USER_ONLY
2183 .record_sigsegv = arm_cpu_record_sigsegv,
2184 .record_sigbus = arm_cpu_record_sigbus,
2185#else
2186 .tlb_fill = arm_cpu_tlb_fill,
2187 .cpu_exec_interrupt = arm_cpu_exec_interrupt,
2188 .do_interrupt = arm_cpu_do_interrupt,

--- 93 unchanged lines hidden ---