add: TRACE((" found msg %p in cpu mailbox\n", msg));
context: smp_check_for_message(int curr_cpu, int *source_mailbox){	struct smp_msg *msg;	acquire_spinlock_nocheck(&cpu_msg_spinlock[curr_cpu]);	msg = smp_msgs[curr_cpu];	if (msg != NULL) {		smp_msgs[curr_cpu] = msg->next;		release_spinlock(&cpu_msg_spinlock[curr_cpu]);//		dprintf(" found msg 0x%x in cpu mailbox\n", msg);		*source_mailbox = MAILBOX_LOCAL;	} else {		// try getting one from the broadcast mailbox		release_spinlock(&cpu_msg_spinlock[curr_cpu]);		acquire_spinlock_nocheck(&broadcast_msg_spinlock);		msg = smp_broadcast_msgs;		while (msg != NULL) {			if (CHECK_BIT(msg->proc_bitmap, curr_cpu) != 0) {				// we have handled this one already				msg = msg->next;				continue;			}			// mark it so we wont try to process this one again			msg->proc_bitmap = SET_BIT(msg->proc_bitmap, curr_cpu);			*source_mailbox = MAILBOX_BCAST;			break;		}		release_spinlock(&broadcast_msg_spinlock);//		dprintf(" found msg 0x%x in broadcast mailbox\n", msg);	}	return msg;}