#define EVEN_COUNTERS thread_even, core_even, package_even
 
 #define GET_THREAD(thread_base, thread_no, core_no, pkg_no) \
-       (thread_base + (pkg_no) * topo.num_cores_per_pkg * \
+       (thread_base + (pkg_no) * topo.num_cores_per_node * \
                topo.num_threads_per_core + \
                (core_no) * topo.num_threads_per_core + (thread_no))
 #define GET_CORE(core_base, core_no, pkg_no) \
-       (core_base + (pkg_no) * topo.num_cores_per_pkg + (core_no))
+       (core_base + (pkg_no) * topo.num_cores_per_node + (core_no))
 #define GET_PKG(pkg_base, pkg_no) (pkg_base + pkg_no)
 
 enum counter_scope {SCOPE_CPU, SCOPE_CORE, SCOPE_PACKAGE};
        int max_cpu_num;
        int max_node_num;
        int num_nodes_per_pkg;
-       int num_cores_per_pkg;
+       int num_cores_per_node;
        int num_threads_per_core;
 } topo;
 
        int retval, pkg_no, core_no, thread_no;
 
        for (pkg_no = 0; pkg_no < topo.num_packages; ++pkg_no) {
-               for (core_no = 0; core_no < topo.num_cores_per_pkg; ++core_no) {
+               for (core_no = 0; core_no < topo.num_cores_per_node;
+                    ++core_no) {
                        for (thread_no = 0; thread_no <
                                topo.num_threads_per_core; ++thread_no) {
                                struct thread_data *t;
        int retval, pkg_no, core_no, thread_no;
 
        for (pkg_no = 0; pkg_no < topo.num_packages; ++pkg_no) {
-               for (core_no = 0; core_no < topo.num_cores_per_pkg; ++core_no) {
+               for (core_no = 0; core_no < topo.num_cores_per_node;
+                    ++core_no) {
                        for (thread_no = 0; thread_no <
                                topo.num_threads_per_core; ++thread_no) {
                                struct thread_data *t, *t2;
                                cpus[i].thread_id);
        }
 
-       topo.num_cores_per_pkg = max_core_id + 1;
+       topo.num_cores_per_node = max_core_id + 1;
        if (debug > 1)
                fprintf(outf, "max_core_id %d, sizing for %d cores per package\n",
-                       max_core_id, topo.num_cores_per_pkg);
-       if (!summary_only && topo.num_cores_per_pkg > 1)
+                       max_core_id, topo.num_cores_per_node);
+       if (!summary_only && topo.num_cores_per_node > 1)
                BIC_PRESENT(BIC_Core);
 
        topo.num_packages = max_package_id + 1;
 {
        int i;
 
-       *t = calloc(topo.num_threads_per_core * topo.num_cores_per_pkg *
+       *t = calloc(topo.num_threads_per_core * topo.num_cores_per_node *
                topo.num_packages, sizeof(struct thread_data));
        if (*t == NULL)
                goto error;
 
        for (i = 0; i < topo.num_threads_per_core *
-               topo.num_cores_per_pkg * topo.num_packages; i++)
+               topo.num_cores_per_node * topo.num_packages; i++)
                (*t)[i].cpu_id = -1;
 
-       *c = calloc(topo.num_cores_per_pkg * topo.num_packages,
+       *c = calloc(topo.num_cores_per_node * topo.num_packages,
                sizeof(struct core_data));
        if (*c == NULL)
                goto error;
 
-       for (i = 0; i < topo.num_cores_per_pkg * topo.num_packages; i++)
+       for (i = 0; i < topo.num_cores_per_node * topo.num_packages; i++)
                (*c)[i].core_id = -1;
 
        *p = calloc(topo.num_packages, sizeof(struct pkg_data));