assembly - ARM GIC v3 configuration to use GICR_ registers -


i trying configure timer interrupt kite processor on fast model.

i have enabled gicd enable timer interrupt , updating pending once timer 0 receive cpu interface need enable in gicr. when trying enable in gicr, registers not getting updated when run simulation. updates gicr_igroupr0 register gicr_isenabler0 register not getting updated.

does have idea why 1 register able update , not others?

do need specific configuration use gicr registers? why 1 register able update?

code:

#define gicc_offset 0x00 #define gicd_offset 0x00 #define gicr_offset 0x0100000 #define gicr_sgi_ppi_offset 0x110000 // core 0 /* cbar read , offset distributor , cpu interfaces           added */ #define gicreg(gic, reg) (*reg32(hal_arm_gic_get_base() + (reg)))  /* redistributor control registor gicr_ */  #define gicr_ctlr (gicr_offset + 0x00)  /* redistributor sgi , ppi core 0*/ #define gicr_igroupr0 (gicr_sgi_ppi_offset + 0x80) #define gicr_isenabler0 (gicr_sgi_ppi_offset + 0x100) #define gicr_icenabler0 (gicr_sgi_ppi_offset + 0x180) #define gicr_ispendr0 (gicr_sgi_ppi_offset + 0x200) #define gicr_icpendr0 (gicr_sgi_ppi_offset + 0x280) #define gicr_isactiver0 (gicr_sgi_ppi_offset + 0x300) #define gicr_icactiver0 (gicr_sgi_ppi_offset + 0x380) #define gicr_ipriorityr(n) (gicr_sgi_ppi_offset + 0x400 + (n) * 4) #define gicr_icfgr0 (gicr_sgi_ppi_offset + 0xc00) #define gicr_icfgr1 (gicr_sgi_ppi_offset + 0xc04)  /* distribution regs */ #define gicd_ctlr               (gicd_offset + 0x000u) #define gicd_typer              (gicd_offset + 0x004u) #define gicd_iidr               (gicd_offset + 0x008u) #define gicd_igroupr(n)         (gicd_offset + 0x080u + (n) * 4u) #define gicd_isenabler(n)       (gicd_offset + 0x100u + (n) * 4u) #define gicd_icenabler(n)       (gicd_offset + 0x180u + (n) * 4u) #define gicd_ispendr(n)         (gicd_offset + 0x200u + (n) * 4u) #define gicd_icpendr(n)         (gicd_offset + 0x280u + (n) * 4u) #define gicd_isactiver(n)       (gicd_offset + 0x300u + (n) * 4u) #define gicd_icactiver(n)       (gicd_offset + 0x380u + (n) * 4u) #define gicd_ipriorityr(n)      (gicd_offset + 0x420u + (n) * 4u) #define gicd_itargetsr(n)       (gicd_offset + 0x800u + (n) * 4u) #define gicd_icfgr(n)           (gicd_offset + 0xc00u + (n) * 4u) 

gic v3 configuration:

// check whether gicv3 system registers available mrc p15, 0, r7, c0, c1, 1   @ id_pfr1 ubfx    r7, r7, #28, #4 cmp r7, #1 bne 2f  // enable system register accesses mrc p15, 4, r7, c12, c9, 5  @ icc_hsre orr r7, r7, #( (1 << 0) | (1 << 3)) mcr p15, 4, r7, c12, c9, 5  @ icc_hsre isb  // sre bit forced 0 firmware. // check whether sticks before accessing other sysreg mrc p15, 4, r7, c12, c9, 5  @ icc_hsre tst r7, #icc_sre_el2_sre beq 2f mov r7, #0 mcr p15, 4, r7, c12, c11, 0 @ ich_hcr 2: mov r0, #0x1 mrc p15, 0, r0, c12, c12, 6 orr r0, r0, #0x1 mcr p15, 0, r0, c12, c12, 6 // group 0 enable mrc p15, 0, r0, c12, c12, 7 orr r0, r0, #0x1 mcr p15, 0, r0, c12, c12, 7 // group 1 enable 

after days of search , tries, found issue in arm kite processor itself. arm has released untested start development partner companies.

sad hear this.


Comments

Popular posts from this blog

magento2 - Magento 2 admin grid add filter to collection -

Android volley - avoid multiple requests of the same kind to the server? -

Combining PHP Registration and Login into one class with multiple functions in one PHP file -