[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PULL 07/23] exec.c: Relax restrictions on watchpoint l
From: |
Peter Maydell |
Subject: |
Re: [Qemu-devel] [PULL 07/23] exec.c: Relax restrictions on watchpoint length and alignment |
Date: |
Wed, 17 Sep 2014 21:58:22 -0700 |
On 17 September 2014 21:48, Max Filippov <address@hidden> wrote:
> Hi Peter,
>
> On Fri, Sep 12, 2014 at 6:23 AM, Peter Maydell <address@hidden> wrote:
>> The current implementation of watchpoints requires that they
>> have a power of 2 length which is not greater than TARGET_PAGE_SIZE
>> and that their address is a multiple of their length. Watchpoints
>> on ARM don't fit these restrictions, so change the implementation
>> so they can be relaxed.
>>
>> Signed-off-by: Peter Maydell <address@hidden>
>> Reviewed-by: Richard Henderson <address@hidden>
>> ---
>> exec.c | 44 +++++++++++++++++++++++++++++++-------------
>> include/qom/cpu.h | 2 +-
>> linux-user/main.c | 3 +--
>> 3 files changed, 33 insertions(+), 16 deletions(-)
>>
>> diff --git a/exec.c b/exec.c
>> index 7dddcc8..f3e7fb6 100644
>> --- a/exec.c
>> +++ b/exec.c
>> @@ -582,12 +582,10 @@ int cpu_watchpoint_insert(CPUState *cpu, vaddr addr,
>> vaddr len,
>> int cpu_watchpoint_insert(CPUState *cpu, vaddr addr, vaddr len,
>> int flags, CPUWatchpoint **watchpoint)
>> {
>> - vaddr len_mask = ~(len - 1);
>> CPUWatchpoint *wp;
>>
>> - /* sanity checks: allow power-of-2 lengths, deny unaligned watchpoints
>> */
>> - if ((len & (len - 1)) || (addr & ~len_mask) ||
>> - len == 0 || len > TARGET_PAGE_SIZE) {
>> + /* forbid ranges which are empty or run off the end of the address
>> space */
>> + if (len == 0 || (addr + len - 1) <= addr) {
>
> With this change it's no longer possible to set one-byte-long watchpoint,
> xtensa testsuite fails because of that.
> I guess you meant 'len == 0 || (addr + len - 1) < addr' ?
Oops, yes.
thanks
-- PMM
- [Qemu-devel] [PULL 23/23] hw/arm/boot: enable DTB support when booting ELF images, (continued)
- [Qemu-devel] [PULL 23/23] hw/arm/boot: enable DTB support when booting ELF images, Peter Maydell, 2014/09/12
- [Qemu-devel] [PULL 11/23] target-arm: Implement setting of watchpoints, Peter Maydell, 2014/09/12
- [Qemu-devel] [PULL 14/23] target-arm: Set DBGDSCR.MOE for debug exceptions taken to AArch32, Peter Maydell, 2014/09/12
- [Qemu-devel] [PULL 10/23] cpu-exec: Make debug_excp_handler a QOM CPU method, Peter Maydell, 2014/09/12
- [Qemu-devel] [PULL 16/23] target-arm: Implement minimal DBGVCR, OSDLR_EL1, MDCCSR_EL0, Peter Maydell, 2014/09/12
- [Qemu-devel] [PULL 15/23] target-arm: Remove comment about MDSCR_EL1 being dummy implementation, Peter Maydell, 2014/09/12
- [Qemu-devel] [PULL 19/23] hw/arm/virt: fix pl011 and pl031 irq flags, Peter Maydell, 2014/09/12
- [Qemu-devel] [PULL 05/23] target-arm: Fix broken indentation in arm_cpu_reest(), Peter Maydell, 2014/09/12
- [Qemu-devel] [PULL 07/23] exec.c: Relax restrictions on watchpoint length and alignment, Peter Maydell, 2014/09/12
- [Qemu-devel] [PULL 06/23] hw/arm/virt: Provide flash devices for boot ROMs, Peter Maydell, 2014/09/12
- [Qemu-devel] [PULL 12/23] target-arm: Move extended_addresses_enabled() to internals.h, Peter Maydell, 2014/09/12
- [Qemu-devel] [PULL 20/23] hw/arm/boot: load DTB as a ROM image, Peter Maydell, 2014/09/12
- [Qemu-devel] [PULL 01/23] hw/arm/virt: add linux, stdout-path to /chosen DT node, Peter Maydell, 2014/09/12
- [Qemu-devel] [PULL 08/23] exec.c: Provide full set of dummy wp remove functions in user-mode, Peter Maydell, 2014/09/12
- [Qemu-devel] [PULL 21/23] hw/arm/boot: pass an address limit to and return size from load_dtb(), Peter Maydell, 2014/09/12
- [Qemu-devel] [PULL 03/23] pl061: implement input interrupt logic, Peter Maydell, 2014/09/12
- [Qemu-devel] [PULL 04/23] target-arm: Fix resetting issues on ARMv7-M CPUs, Peter Maydell, 2014/09/12
- [Qemu-devel] [PULL 13/23] target-arm: Implement handling of fired watchpoints, Peter Maydell, 2014/09/12
- [Qemu-devel] [PULL 22/23] hw/arm/boot: load device tree to base of DRAM if no -kernel option was passed, Peter Maydell, 2014/09/12