diff --git a/arch/x86/scc/icc.c b/arch/x86/scc/icc.c index 8074519c..d3cd427d 100644 --- a/arch/x86/scc/icc.c +++ b/arch/x86/scc/icc.c @@ -271,9 +271,9 @@ int icc_mail_ping( void ) return 0; } -#define CORE_A 0 -#define CORE_B 1 -#define NOISE_ROUDNS 1000000 +#define CORE_A 0 // sender +#define CORE_B RCCE_num_ues()-1 // receiver +#define NOISE_ROUNDS 1000000 int icc_mail_ping_irq( void ) @@ -283,12 +283,12 @@ int icc_mail_ping_irq( void ) uint32_t flags; uint64_t timer = 0; - int rem_rank = (my_ue+1)%2; + int rem_rank = CORE_B; int i; iRCCE_MAIL_HEADER* recv_header = NULL; kprintf( "Hello from mail_ping_irq ... \n" ); - + kprintf( "rem_rank = %d\n", rem_rank ); // disable interrupts flags = irq_nested_disable(); @@ -305,7 +305,9 @@ int icc_mail_ping_irq( void ) /* wait for response */ do { iRCCE_mail_recv(&recv_header); - } while( !recv_header ); + if( recv_header->tag == PING_RESP ) + break; + } while( 1 ); /* release mail */ iRCCE_mail_release(&recv_header); @@ -338,14 +340,14 @@ int icc_mail_noise() { iRCCE_MAIL_HEADER* recv_mail = NULL; // leave function if not participating - if( (my_ue == 0) || (my_ue == 1) ) { + if( (my_ue == CORE_A) || (my_ue == CORE_B) ) { return -1; } - for( i=0; i