[BACK]Return to gic.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / arch / arm / cortex

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/arch/arm/cortex/gic.c between version 1.32.2.3 and 1.32.2.4

version 1.32.2.3, 2018/07/28 04:37:27 version 1.32.2.4, 2018/09/30 01:45:37
Line 43  __KERNEL_RCSID(0, "$NetBSD$");
Line 43  __KERNEL_RCSID(0, "$NetBSD$");
 #include <sys/evcnt.h>  #include <sys/evcnt.h>
 #include <sys/intr.h>  #include <sys/intr.h>
 #include <sys/proc.h>  #include <sys/proc.h>
   #include <sys/atomic.h>
   
 #include <arm/armreg.h>  #include <arm/armreg.h>
 #include <arm/atomic.h>  #include <arm/atomic.h>
Line 514  armgic_cpu_init(struct pic_softc *pic, s
Line 515  armgic_cpu_init(struct pic_softc *pic, s
 {  {
         struct armgic_softc * const sc = PICTOSOFTC(pic);          struct armgic_softc * const sc = PICTOSOFTC(pic);
         sc->sc_target[cpu_index(ci)] = gicd_find_targets(sc);          sc->sc_target[cpu_index(ci)] = gicd_find_targets(sc);
         sc->sc_mptargets |= sc->sc_target[cpu_index(ci)];          atomic_or_32(&sc->sc_mptargets, sc->sc_target[cpu_index(ci)]);
         KASSERTMSG(ci->ci_cpl == IPL_HIGH, "ipl %d not IPL_HIGH", ci->ci_cpl);          KASSERTMSG(ci->ci_cpl == IPL_HIGH, "ipl %d not IPL_HIGH", ci->ci_cpl);
         armgic_cpu_init_priorities(sc);          armgic_cpu_init_priorities(sc);
         if (!CPU_IS_PRIMARY(ci)) {          if (!CPU_IS_PRIMARY(ci)) {
Line 546  armgic_ipi_send(struct pic_softc *pic, c
Line 547  armgic_ipi_send(struct pic_softc *pic, c
   
         uint32_t sgir = __SHIFTIN(ARMGIC_SGI_IPIBASE + ipi, GICD_SGIR_SGIINTID);          uint32_t sgir = __SHIFTIN(ARMGIC_SGI_IPIBASE + ipi, GICD_SGIR_SGIINTID);
         if (kcp != NULL) {          if (kcp != NULL) {
                 uint32_t targets;                  uint32_t targets_val = 0;
                 kcpuset_export_u32(kcp, &targets, sizeof(targets));                  for (int n = 0; n < MAXCPUS; n++) {
                 sgir |= __SHIFTIN(targets, GICD_SGIR_TargetList);                          if (kcpuset_isset(kcp, n))
                                   targets_val |= sc->sc_target[n];
                   }
                   sgir |= __SHIFTIN(targets_val, GICD_SGIR_TargetList);
                 sgir |= GICD_SGIR_TargetListFilter_List;                  sgir |= GICD_SGIR_TargetListFilter_List;
         } else {          } else {
                 if (ncpu == 1)                  if (ncpu == 1)

Legend:
Removed from v.1.32.2.3  
changed lines
  Added in v.1.32.2.4

CVSweb <webmaster@jp.NetBSD.org>