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

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

magento2 - Magento 2 admin grid add filter to collection -

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