|
From: | Michael Rolnik |
Subject: | Re: [PATCH 1/1] Set TARGET_PAGE_BITS to be 10 instead of 8 bits |
Date: | Sat, 10 Apr 2021 20:24:56 +0300 |
If I set TARGET_PAGE_BITS to 12 this assert assert(v_l2_levels >= 0); will fail (page_table_config_init function) because TARGET_PHYS_ADDR_SPACE_BITS is 24 bits, because AVR has 24 is the longest pointer AVR has. I can set TARGET_PHYS_ADDR_SPACE_BITS to 32 and TARGET_PAGE_BITS to 12 and everything will work fine.What do you think?btw, wrote the original comment, you David referred to, when I did not know that QEMU could map several regions to the same page, which is not true. That's why I could change 8 to 10.On Tue, Mar 23, 2021 at 10:11 PM Michael Rolnik <mrolnik@gmail.com> wrote:how long?On Tue, Mar 23, 2021 at 2:46 PM Dr. David Alan Gilbert <dgilbert@redhat.com> wrote:* Michael Rolnik (mrolnik@gmail.com) wrote:
> Signed-off-by: Michael Rolnik <mrolnik@gmail.com>
> ---
> target/avr/cpu-param.h | 8 +-------
> target/avr/helper.c | 2 --
> 2 files changed, 1 insertion(+), 9 deletions(-)
>
> diff --git a/target/avr/cpu-param.h b/target/avr/cpu-param.h
> index 7ef4e7c679..9765a9d0db 100644
> --- a/target/avr/cpu-param.h
> +++ b/target/avr/cpu-param.h
> @@ -22,13 +22,7 @@
> #define AVR_CPU_PARAM_H
>
> #define TARGET_LONG_BITS 32
> -/*
> - * TARGET_PAGE_BITS cannot be more than 8 bits because
> - * 1. all IO registers occupy [0x0000 .. 0x00ff] address range, and they
> - * should be implemented as a device and not memory
> - * 2. SRAM starts at the address 0x0100
I don't know AVR; but that seems to say why you can't make it any larger
- how do you solve that?
Dave
> -#define TARGET_PAGE_BITS 8
> +#define TARGET_PAGE_BITS 10
> #define TARGET_PHYS_ADDR_SPACE_BITS 24
> #define TARGET_VIRT_ADDR_SPACE_BITS 24
> #define NB_MMU_MODES 2
> diff --git a/target/avr/helper.c b/target/avr/helper.c
> index 35e1019594..da658afed3 100644
> --- a/target/avr/helper.c
> +++ b/target/avr/helper.c
> @@ -111,8 +111,6 @@ bool avr_cpu_tlb_fill(CPUState *cs, vaddr address, int size,
> MemTxAttrs attrs = {};
> uint32_t paddr;
>
> - address &= TARGET_PAGE_MASK;
> -
> if (mmu_idx == MMU_CODE_IDX) {
> /* access to code in flash */
> paddr = OFFSET_CODE + address;
> --
> 2.25.1
>
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
--Best Regards,
Michael Rolnik--Best Regards,
Michael Rolnik
[Prev in Thread] | Current Thread | [Next in Thread] |