> On 16. Jan 2026, at 15:20, Philippe Mathieu-Daudé <[email protected]> wrote:
> 
> On 16/1/26 14:52, Mohamed Mediouni wrote:
>> Some code can be shared between x86_64 and arm64 WHPX. Do so as much as 
>> reasonable.
>> Signed-off-by: Mohamed Mediouni <[email protected]>
>> Reviewed-by: Pierrick Bouvier <[email protected]>
>> ---
>>  MAINTAINERS                  |   2 +
>>  accel/whpx/meson.build       |   1 +
>>  accel/whpx/whpx-common.c     | 558 +++++++++++++++++++++++++++++++++++
>>  include/system/whpx-all.h    |  20 ++
>>  include/system/whpx-common.h |  21 ++
>>  target/i386/whpx/whpx-all.c  | 551 +---------------------------------
>>  6 files changed, 612 insertions(+), 541 deletions(-)
>>  create mode 100644 accel/whpx/whpx-common.c
>>  create mode 100644 include/system/whpx-all.h
>>  create mode 100644 include/system/whpx-common.h
> 
> 
>> diff --git a/include/system/whpx-all.h b/include/system/whpx-all.h
>> new file mode 100644
>> index 0000000000..f13cdf7f66
>> --- /dev/null
>> +++ b/include/system/whpx-all.h
>> @@ -0,0 +1,20 @@
>> +/* SPDX-License-Identifier: GPL-2.0-or-later */
>> +#ifndef SYSTEM_WHPX_ALL_H
>> +#define SYSTEM_WHPX_ALL_H
>> +
>> +/* Called by whpx-common */
>> +int whpx_vcpu_run(CPUState *cpu);
>> +void whpx_get_registers(CPUState *cpu);
>> +void whpx_set_registers(CPUState *cpu, int level);
>> +int whpx_accel_init(AccelState *as, MachineState *ms);
>> +void whpx_cpu_instance_init(CPUState *cs);
>> +HRESULT whpx_set_exception_exit_bitmap(UINT64 exceptions);
>> +void whpx_apply_breakpoints(
>> +struct whpx_breakpoint_collection *breakpoints,
>> +    CPUState *cpu,
>> +    bool resuming);
>> +void whpx_translate_cpu_breakpoints(
>> +    struct whpx_breakpoints *breakpoints,
>> +    CPUState *cpu,
>> +    int cpu_breakpoint_count);
>> +#endif
>> diff --git a/include/system/whpx-common.h b/include/system/whpx-common.h
>> new file mode 100644
>> index 0000000000..e549c7539c
>> --- /dev/null
>> +++ b/include/system/whpx-common.h
>> @@ -0,0 +1,21 @@
>> +/* SPDX-License-Identifier: GPL-2.0-or-later */
>> +#ifndef SYSTEM_WHPX_COMMON_H
>> +#define SYSTEM_WHPX_COMMON_H
>> +
>> +struct AccelCPUState {
>> +    WHV_EMULATOR_HANDLE emulator;
>> +    bool window_registered;
>> +    bool interruptable;
>> +    bool ready_for_pic_interrupt;
>> +    uint64_t tpr;
>> +    uint64_t apic_base;
>> +    bool interruption_pending;
>> +    /* Must be the last field as it may have a tail */
>> +    WHV_RUN_VP_EXIT_CONTEXT exit_ctx;
>> +};
>> +
>> +int whpx_first_vcpu_starting(CPUState *cpu);
>> +int whpx_last_vcpu_stopping(CPUState *cpu);
>> +void whpx_memory_init(void);
>> +struct whpx_breakpoint *whpx_lookup_breakpoint_by_addr(uint64_t address);
>> +#endif
> I'd rather rename the target-specific handlers as
> whpx_foo() -> whpx_arch_foo() to help follow in common code
> when we are calling target-specific implementations.
> (can be done on top later if the series is good to go)

Hello,

Going to take care of this one with a post-merge follow-up patch, along
with moving the header location.


Reply via email to