I'd also like to point out that the techniques in the newer kernels that actually have the fairly good core reporting for x86 style CPUs still won't work well for really old dubious x86 processors with their stranger "core" handling. It's a small subset of processors... most desktop users will have never seen these.
And of course, core reporting outside of x86 is a mixed bag (what a core "is" varies for some of those as well).