Lines Matching refs:offset
165 vgic_read_irqbits(vic_t *vic, thread_t *vcpu, size_t base_offset, size_t offset) in vgic_read_irqbits() argument
169 assert(offset >= base_offset); in vgic_read_irqbits()
170 assert(offset <= base_offset + (31 * sizeof(uint32_t))); in vgic_read_irqbits()
174 (count_t)((offset - base_offset) / sizeof(uint32_t)) * 32U; in vgic_read_irqbits()
226 vgic_read_priority(vic_t *vic, thread_t *vcpu, size_t offset, in vgic_read_priority() argument
232 vgic_find_dstate(vic, vcpu, (count_t)offset); in vgic_read_priority()
253 vgic_read_config(vic_t *vic, thread_t *vcpu, size_t offset) in vgic_read_config() argument
257 assert(offset <= (63 * sizeof(uint32_t))); in vgic_read_config()
260 count_t range_base = (count_t)(offset / sizeof(uint32_t)) * 16U; in vgic_read_config()
286 gicd_vdevice_read(vic_t *vic, size_t offset, register_t *val, in gicd_vdevice_read() argument
296 if ((offset == offsetof(gicd_t, setspi_nsr)) || in gicd_vdevice_read()
297 (offset == offsetof(gicd_t, clrspi_nsr)) || in gicd_vdevice_read()
298 (offset == offsetof(gicd_t, setspi_sr)) || in gicd_vdevice_read()
299 (offset == offsetof(gicd_t, clrspi_sr)) || in gicd_vdevice_read()
300 (offset == offsetof(gicd_t, sgir))) { in gicd_vdevice_read()
308 } else if (offset == offsetof(gicd_t, ctlr)) { in gicd_vdevice_read()
312 } else if (offset == offsetof(gicd_t, statusr)) { in gicd_vdevice_read()
315 } else if (offset == offsetof(gicd_t, typer)) { in gicd_vdevice_read()
337 } else if (offset == offsetof(gicd_t, iidr)) { in gicd_vdevice_read()
345 } else if (offset == offsetof(gicd_t, typer2)) { in gicd_vdevice_read()
352 } else if (offset == (size_t)OFS_GICD_PIDR2) { in gicd_vdevice_read()
355 } else if ((offset >= OFS_GICD_IGROUPR(0U)) && in gicd_vdevice_read()
356 (offset <= OFS_GICD_IGROUPR(31U))) { in gicd_vdevice_read()
358 offset); in gicd_vdevice_read()
360 } else if ((offset >= OFS_GICD_ISENABLER(0U)) && in gicd_vdevice_read()
361 (offset <= OFS_GICD_ISENABLER(31U))) { in gicd_vdevice_read()
363 OFS_GICD_ISENABLER(0U), offset); in gicd_vdevice_read()
365 } else if ((offset >= OFS_GICD_ICENABLER(0U)) && in gicd_vdevice_read()
366 (offset <= OFS_GICD_ICENABLER(31U))) { in gicd_vdevice_read()
368 OFS_GICD_ICENABLER(0U), offset); in gicd_vdevice_read()
370 } else if ((offset >= OFS_GICD_ISPENDR(0U)) && in gicd_vdevice_read()
371 (offset <= OFS_GICD_ISPENDR(31U))) { in gicd_vdevice_read()
373 offset); in gicd_vdevice_read()
375 } else if ((offset >= OFS_GICD_ICPENDR(0U)) && in gicd_vdevice_read()
376 (offset <= OFS_GICD_ICPENDR(31U))) { in gicd_vdevice_read()
378 offset); in gicd_vdevice_read()
380 } else if ((offset >= OFS_GICD_ISACTIVER(0U)) && in gicd_vdevice_read()
381 (offset <= OFS_GICD_ISACTIVER(31U))) { in gicd_vdevice_read()
383 OFS_GICD_ISACTIVER(0U), offset); in gicd_vdevice_read()
385 } else if ((offset >= OFS_GICD_ICACTIVER(0U)) && in gicd_vdevice_read()
386 (offset <= OFS_GICD_ICACTIVER(31U))) { in gicd_vdevice_read()
388 OFS_GICD_ICACTIVER(0U), offset); in gicd_vdevice_read()
390 } else if (util_offset_in_range(offset, gicd_t, ipriorityr)) { in gicd_vdevice_read()
392 vic, thread, offset - offsetof(gicd_t, ipriorityr), in gicd_vdevice_read()
395 } else if (util_offset_in_range(offset, gicd_t, icfgr)) { in gicd_vdevice_read()
397 vic, thread, offset - offsetof(gicd_t, icfgr)); in gicd_vdevice_read()
399 } else if (util_offset_in_range(offset, gicd_t, itargetsr) || in gicd_vdevice_read()
400 util_offset_in_range(offset, gicd_t, igrpmodr) || in gicd_vdevice_read()
401 util_offset_in_range(offset, gicd_t, nsacr)) { in gicd_vdevice_read()
420 gicd_vdevice_write(vic_t *vic, size_t offset, register_t val, in gicd_vdevice_write() argument
427 offset, val); in gicd_vdevice_write()
429 if (offset == offsetof(gicd_t, ctlr)) { in gicd_vdevice_write()
432 } else if ((offset == offsetof(gicd_t, typer)) || in gicd_vdevice_write()
433 (offset == offsetof(gicd_t, iidr)) || in gicd_vdevice_write()
434 (offset == (size_t)OFS_GICD_PIDR2) || in gicd_vdevice_write()
435 (offset == offsetof(gicd_t, typer2))) { in gicd_vdevice_write()
442 } else if (offset == offsetof(gicd_t, statusr)) { in gicd_vdevice_write()
446 } else if ((offset == offsetof(gicd_t, setspi_nsr)) || in gicd_vdevice_write()
447 (offset == offsetof(gicd_t, clrspi_nsr))) { in gicd_vdevice_write()
452 (offset == offsetof(gicd_t, setspi_nsr)), true); in gicd_vdevice_write()
454 } else if ((offset == offsetof(gicd_t, setspi_sr)) || in gicd_vdevice_write()
455 (offset == offsetof(gicd_t, clrspi_sr))) { in gicd_vdevice_write()
458 } else if ((offset >= OFS_GICD_IGROUPR(0U)) && in gicd_vdevice_write()
459 (offset <= OFS_GICD_IGROUPR(31U))) { in gicd_vdevice_write()
462 index_t n = (index_t)((offset - OFS_GICD_IGROUPR(0U)) / in gicd_vdevice_write()
470 } else if ((offset >= OFS_GICD_ISENABLER(0U)) && in gicd_vdevice_write()
471 (offset <= OFS_GICD_ISENABLER(31U))) { in gicd_vdevice_write()
474 index_t n = (index_t)((offset - OFS_GICD_ISENABLER(0U)) / in gicd_vdevice_write()
492 } else if ((offset >= OFS_GICD_ICENABLER(0U)) && in gicd_vdevice_write()
493 (offset <= OFS_GICD_ICENABLER(31U))) { in gicd_vdevice_write()
496 index_t n = (index_t)((offset - OFS_GICD_ICENABLER(0U)) / in gicd_vdevice_write()
514 } else if ((offset >= OFS_GICD_ISPENDR(0U)) && in gicd_vdevice_write()
515 (offset <= OFS_GICD_ISPENDR(31U))) { in gicd_vdevice_write()
518 index_t n = (index_t)((offset - OFS_GICD_ISPENDR(0U)) / in gicd_vdevice_write()
536 } else if ((offset >= OFS_GICD_ICPENDR(0U)) && in gicd_vdevice_write()
537 (offset <= OFS_GICD_ICPENDR(31U))) { in gicd_vdevice_write()
540 index_t n = (index_t)((offset - OFS_GICD_ICPENDR(0U)) / in gicd_vdevice_write()
558 } else if ((offset >= OFS_GICD_ISACTIVER(0U)) && in gicd_vdevice_write()
559 (offset <= OFS_GICD_ISACTIVER(31U))) { in gicd_vdevice_write()
562 index_t n = (index_t)((offset - OFS_GICD_ISACTIVER(0U)) / in gicd_vdevice_write()
580 } else if ((offset >= OFS_GICD_ICACTIVER(0U)) && in gicd_vdevice_write()
581 (offset <= OFS_GICD_ICACTIVER(31U))) { in gicd_vdevice_write()
584 index_t n = (index_t)((offset - OFS_GICD_ICACTIVER(0U)) / in gicd_vdevice_write()
602 } else if ((offset >= OFS_GICD_IPRIORITYR(0U)) && in gicd_vdevice_write()
603 (offset <= OFS_GICD_IPRIORITYR(1019U))) { in gicd_vdevice_write()
606 index_t n = (index_t)(offset - OFS_GICD_IPRIORITYR(0U)); in gicd_vdevice_write()
615 } else if ((offset >= OFS_GICD_ITARGETSR(0U)) && in gicd_vdevice_write()
616 (offset <= OFS_GICD_ITARGETSR(1019U))) { in gicd_vdevice_write()
619 } else if ((offset >= OFS_GICD_ICFGR(0U)) && in gicd_vdevice_write()
620 (offset <= OFS_GICD_ICFGR(63U))) { in gicd_vdevice_write()
623 index_t n = (index_t)((offset - OFS_GICD_ICFGR(0U)) / in gicd_vdevice_write()
633 } else if ((offset >= OFS_GICD_IGRPMODR(0U)) && in gicd_vdevice_write()
634 (offset <= OFS_GICD_IGRPMODR(31U))) { in gicd_vdevice_write()
637 } else if ((offset >= OFS_GICD_NSACR(0U)) && in gicd_vdevice_write()
638 (offset <= OFS_GICD_NSACR(63U))) { in gicd_vdevice_write()
641 } else if (offset == offsetof(gicd_t, sgir)) { in gicd_vdevice_write()
644 } else if ((offset >= OFS_GICD_CPENDSGIR(0U)) && in gicd_vdevice_write()
645 (offset <= OFS_GICD_CPENDSGIR(15U))) { in gicd_vdevice_write()
648 } else if ((offset >= OFS_GICD_SPENDSGIR(0U)) && in gicd_vdevice_write()
649 (offset <= OFS_GICD_SPENDSGIR(15U))) { in gicd_vdevice_write()
652 } else if ((offset >= OFS_GICD_IROUTER(0U)) && in gicd_vdevice_write()
653 (offset <= OFS_GICD_IROUTER(GIC_SPI_NUM - 1))) { in gicd_vdevice_write()
657 (index_t)((offset - OFS_GICD_IROUTER(0U)) / in gicd_vdevice_write()
669 else if (offset == OFS_GICD_SETCLASSR) { in gicd_vdevice_write()
684 else if ((offset >= OFS_GICD_IPRIORITYR(1020U)) && in gicd_vdevice_write()
685 (offset <= OFS_GICD_IPRIORITYR(1023U))) { in gicd_vdevice_write()
687 } else if ((offset >= OFS_GICD_IROUTER(GIC_SPI_NUM)) && in gicd_vdevice_write()
688 (offset <= OFS_GICD_IROUTER(1023U))) { in gicd_vdevice_write()
705 gicd_access_allowed(size_t size, size_t offset) in gicd_access_allowed() argument
710 if ((offset & (size - 1U)) != 0UL) { in gicd_access_allowed()
714 ret = ((offset >= OFS_GICD_IROUTER(0U)) && in gicd_access_allowed()
715 (offset <= OFS_GICD_IROUTER(GIC_SPI_NUM - 1U))); in gicd_access_allowed()
718 if ((offset >= OFS_GICD_IROUTER(0U)) && in gicd_access_allowed()
719 (offset <= OFS_GICD_IROUTER(1023U))) { in gicd_access_allowed()
729 ret = ((offset == offsetof(gicd_t, setspi_nsr)) || in gicd_access_allowed()
730 (offset == offsetof(gicd_t, clrspi_nsr))); in gicd_access_allowed()
734 ret = (((offset >= OFS_GICD_IPRIORITYR(0U)) && in gicd_access_allowed()
735 (offset <= OFS_GICD_IPRIORITYR(1019U))) || in gicd_access_allowed()
736 ((offset >= OFS_GICD_ITARGETSR(0U)) && in gicd_access_allowed()
737 (offset <= OFS_GICD_ITARGETSR(1019U))) || in gicd_access_allowed()
738 ((offset >= OFS_GICD_CPENDSGIR(0U)) && in gicd_access_allowed()
739 (offset <= OFS_GICD_CPENDSGIR(15U))) || in gicd_access_allowed()
740 ((offset >= OFS_GICD_SPENDSGIR(0U)) && in gicd_access_allowed()
741 (offset <= OFS_GICD_SPENDSGIR(15U)))); in gicd_access_allowed()
744 if ((offset >= OFS_GICD_IROUTER(0U)) && in gicd_access_allowed()
745 (offset <= OFS_GICD_IROUTER(1023U))) { in gicd_access_allowed()
759 size_t offset, register_t *val, size_t access_size, in gicr_vdevice_read() argument
766 if ((offset == offsetof(gicr_t, rd.setlpir)) || in gicr_vdevice_read()
767 (offset == offsetof(gicr_t, rd.clrlpir)) || in gicr_vdevice_read()
768 (offset == offsetof(gicr_t, rd.invlpir)) || in gicr_vdevice_read()
769 (offset == offsetof(gicr_t, rd.invallr))) { in gicr_vdevice_read()
777 } else if (util_balign_down(offset, sizeof(GICR_TYPER_t)) == in gicr_vdevice_read()
804 if (offset != offsetof(gicr_t, rd.typer)) { in gicr_vdevice_read()
806 assert(offset == OFS_GICR_RD_TYPER + sizeof(uint32_t)); in gicr_vdevice_read()
810 } else if (offset == offsetof(gicr_t, rd.iidr)) { in gicr_vdevice_read()
818 } else if (offset == offsetof(gicr_t, PIDR2)) { in gicr_vdevice_read()
821 } else if (offset == offsetof(gicr_t, rd.ctlr)) { in gicr_vdevice_read()
824 } else if (offset == offsetof(gicr_t, rd.statusr)) { in gicr_vdevice_read()
828 } else if (offset == offsetof(gicr_t, rd.waker)) { in gicr_vdevice_read()
839 } else if (offset == offsetof(gicr_t, rd.propbaser)) { in gicr_vdevice_read()
847 } else if (offset == offsetof(gicr_t, rd.pendbaser)) { in gicr_vdevice_read()
860 } else if (offset == offsetof(gicr_t, rd.syncr)) { in gicr_vdevice_read()
870 } else if ((offset == offsetof(gicr_t, sgi.igroupr0)) || in gicr_vdevice_read()
871 (offset == offsetof(gicr_t, sgi.isenabler0)) || in gicr_vdevice_read()
872 (offset == offsetof(gicr_t, sgi.icenabler0)) || in gicr_vdevice_read()
873 (offset == offsetof(gicr_t, sgi.ispendr0)) || in gicr_vdevice_read()
874 (offset == offsetof(gicr_t, sgi.icpendr0)) || in gicr_vdevice_read()
875 (offset == offsetof(gicr_t, sgi.isactiver0)) || in gicr_vdevice_read()
876 (offset == offsetof(gicr_t, sgi.icactiver0))) { in gicr_vdevice_read()
878 vic, gicr_vcpu, offset - offsetof(gicr_t, sgi), in gicr_vdevice_read()
879 offset - offsetof(gicr_t, sgi)); in gicr_vdevice_read()
881 } else if ((offset == offsetof(gicr_t, sgi.igrpmodr0)) || in gicr_vdevice_read()
882 (offset == offsetof(gicr_t, sgi.nsacr))) { in gicr_vdevice_read()
886 } else if (util_offset_in_range(offset, gicr_t, sgi.ipriorityr)) { in gicr_vdevice_read()
889 offset - offsetof(gicr_t, sgi.ipriorityr), access_size); in gicr_vdevice_read()
891 } else if (util_offset_in_range(offset, gicr_t, sgi.icfgr)) { in gicr_vdevice_read()
893 offset - offsetof(gicr_t, sgi.icfgr)); in gicr_vdevice_read()
919 gicr_vdevice_ipriorityr_write(vic_t *vic, thread_t *gicr_vcpu, size_t offset, in gicr_vdevice_ipriorityr_write() argument
923 index_t n = (index_t)(offset - OFS_GICR_SGI_IPRIORITYR(0U)); in gicr_vdevice_ipriorityr_write()
934 gicr_vdevice_activer0_write(vic_t *vic, thread_t *gicr_vcpu, size_t offset, in gicr_vdevice_activer0_write() argument
945 (offset == offsetof(gicr_t, sgi.isactiver0))); in gicr_vdevice_activer0_write()
950 gicr_vdevice_pendr0_write(vic_t *vic, thread_t *gicr_vcpu, size_t offset, in gicr_vdevice_pendr0_write() argument
961 (offset == offsetof(gicr_t, sgi.ispendr0))); in gicr_vdevice_pendr0_write()
966 gicr_vdevice_enabler0_write(vic_t *vic, thread_t *gicr_vcpu, size_t offset, in gicr_vdevice_enabler0_write() argument
977 (offset == offsetof(gicr_t, sgi.isenabler0))); in gicr_vdevice_enabler0_write()
1015 gicr_vdevice_write(vic_t *vic, thread_t *gicr_vcpu, size_t offset, in gicr_vdevice_write() argument
1021 "GICR_WRITE reg = {:x}, val = {:#x}", offset, val); in gicr_vdevice_write()
1023 if (offset == offsetof(gicr_t, rd.ctlr)) { in gicr_vdevice_write()
1027 } else if ((offset == offsetof(gicr_t, rd.iidr)) || in gicr_vdevice_write()
1028 (offset == offsetof(gicr_t, rd.typer)) || in gicr_vdevice_write()
1029 (offset == offsetof(gicr_t, rd.syncr)) || in gicr_vdevice_write()
1030 (offset == offsetof(gicr_t, PIDR2))) { in gicr_vdevice_write()
1037 } else if (offset == offsetof(gicr_t, rd.statusr)) { in gicr_vdevice_write()
1041 } else if (offset == offsetof(gicr_t, rd.waker)) { in gicr_vdevice_write()
1047 } else if ((offset == offsetof(gicr_t, rd.setlpir)) || in gicr_vdevice_write()
1048 (offset == offsetof(gicr_t, rd.clrlpir))) { in gicr_vdevice_write()
1056 } else if (offset == offsetof(gicr_t, rd.propbaser)) { in gicr_vdevice_write()
1059 } else if (offset == offsetof(gicr_t, rd.pendbaser)) { in gicr_vdevice_write()
1063 } else if (offset == offsetof(gicr_t, rd.invlpir)) { in gicr_vdevice_write()
1066 } else if (offset == offsetof(gicr_t, rd.invallr)) { in gicr_vdevice_write()
1071 } else if (offset == offsetof(gicr_t, sgi.igroupr0)) { in gicr_vdevice_write()
1074 } else if ((offset == offsetof(gicr_t, sgi.isenabler0)) || in gicr_vdevice_write()
1075 (offset == offsetof(gicr_t, sgi.icenabler0))) { in gicr_vdevice_write()
1076 gicr_vdevice_enabler0_write(vic, gicr_vcpu, offset, val); in gicr_vdevice_write()
1078 } else if ((offset == offsetof(gicr_t, sgi.ispendr0)) || in gicr_vdevice_write()
1079 (offset == offsetof(gicr_t, sgi.icpendr0))) { in gicr_vdevice_write()
1080 gicr_vdevice_pendr0_write(vic, gicr_vcpu, offset, val); in gicr_vdevice_write()
1082 } else if ((offset == offsetof(gicr_t, sgi.isactiver0)) || in gicr_vdevice_write()
1083 (offset == offsetof(gicr_t, sgi.icactiver0))) { in gicr_vdevice_write()
1084 gicr_vdevice_activer0_write(vic, gicr_vcpu, offset, val); in gicr_vdevice_write()
1086 } else if ((offset >= OFS_GICR_SGI_IPRIORITYR(0U)) && in gicr_vdevice_write()
1087 (offset <= in gicr_vdevice_write()
1089 gicr_vdevice_ipriorityr_write(vic, gicr_vcpu, offset, val, in gicr_vdevice_write()
1092 } else if (offset == OFS_GICR_SGI_ICFGR(0U)) { in gicr_vdevice_write()
1096 } else if (offset == OFS_GICR_SGI_ICFGR(1U)) { in gicr_vdevice_write()
1099 } else if (offset == offsetof(gicr_t, sgi.igrpmodr0)) { in gicr_vdevice_write()
1102 } else if (offset == offsetof(gicr_t, sgi.nsacr)) { in gicr_vdevice_write()
1122 gicr_access_allowed(size_t size, size_t offset) in gicr_access_allowed() argument
1127 if ((offset & (size - 1U)) != 0UL) { in gicr_access_allowed()
1130 ret = ((offset == offsetof(gicr_t, rd.invallr)) || in gicr_access_allowed()
1131 (offset <= offsetof(gicr_t, rd.invlpir)) || in gicr_access_allowed()
1132 (offset == offsetof(gicr_t, rd.pendbaser)) || in gicr_access_allowed()
1133 (offset == offsetof(gicr_t, rd.propbaser)) || in gicr_access_allowed()
1134 (offset == offsetof(gicr_t, rd.setlpir)) || in gicr_access_allowed()
1135 (offset == offsetof(gicr_t, rd.clrlpir)) || in gicr_access_allowed()
1136 (offset == offsetof(gicr_t, rd.typer))); in gicr_access_allowed()
1145 ret = (((offset >= OFS_GICR_SGI_IPRIORITYR(0U)) && in gicr_access_allowed()
1146 (offset <= OFS_GICR_SGI_IPRIORITYR(31U)))); in gicr_access_allowed()
1156 vgic_handle_gicd_access(vic_t *vic, size_t offset, size_t access_size, in vgic_handle_gicd_access() argument
1161 if (gicd_access_allowed(access_size, offset)) { in vgic_handle_gicd_access()
1163 access_ok = gicd_vdevice_write(vic, offset, *value, in vgic_handle_gicd_access()
1166 access_ok = gicd_vdevice_read(vic, offset, value, in vgic_handle_gicd_access()
1174 vgic_handle_gicr_access(vic_t *vic, thread_t *thread, size_t offset, in vgic_handle_gicr_access() argument
1180 if (gicr_access_allowed(access_size, offset)) { in vgic_handle_gicr_access()
1182 access_ok = gicr_vdevice_write(vic, thread, offset, in vgic_handle_gicr_access()
1187 offset, value, in vgic_handle_gicr_access()
1197 size_t offset, size_t access_size, register_t *value, in vgic_handle_vdevice_access() argument
1206 ret = vgic_handle_gicd_access(vic, offset, access_size, value, in vgic_handle_vdevice_access()
1214 ret = vgic_handle_gicr_access(vic, gicr_vcpu, offset, in vgic_handle_vdevice_access()
1235 size_t offset = (size_t)(ipa - PLATFORM_GICD_BASE); in vgic_handle_vdevice_access_fixed_addr() local
1236 ret = vgic_handle_gicd_access(vic, offset, access_size, value, in vgic_handle_vdevice_access_fixed_addr()
1259 size_t offset = (size_t)(ipa - gicr_base); in vgic_handle_vdevice_access_fixed_addr() local
1261 vic, gicr_vcpu, offset, access_size, in vgic_handle_vdevice_access_fixed_addr()