Yes, I concluded the same a few hours ago. I tried to edit kern/cpu_number.h, to add a new definition with many cores, at this form
int master_cpu; /* 'master' processor - keeps time */
#if (NCPUS == 1)
/* cpu number is always 0 on a single processor system */
#define cpu_number() (0)
#define CPU_L1_SIZE (1 << CPU_L1_SHIFT)
#else
#define cpu_number() (NCPUS)
#endif /* NCPUS == 1 */
#endif /* _KERN_CPU_NUMBER_H_ */
But this was unsuccessfull. Now I'm trying to edit i386/i386/cpu_number.h to hardcode this function
#ifndef _I386_CPU_NUMBER_H_
#define _I386_CPU_NUMBER_H_
#if NCPUS > 1
/* More-specific code must define cpu_number() and CPU_NUMBER. */
#define CX(addr, reg) addr(,reg,4)
#define CPU_NUMBER(NCPUS)
#else /* NCPUS == 1 */
#define CPU_NUMBER(reg)
#define CX(addr,reg) addr
#endif /* NCPUS == 1 */
#ifndef __ASSEMBLER__
#include "kern/cpu_number.h"
#endif
But problem continues, so I think that the original problem is in a lower level than this, (probably there isn't any implementation to multiprocessor case internally)