From ad2d1e4a3d0b0228b19896f1bf737eac6b13e98b Mon Sep 17 00:00:00 2001 From: Generic account for RWTHAachen Students Date: Thu, 18 Aug 2011 02:07:42 -0700 Subject: [PATCH] problems with iRCCE_memcpy_put --- arch/x86/scc/iRCCE_mailbox.c | 3 ++- arch/x86/scc/icc.c | 6 +++++- kernel/tests.c | 3 +-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/arch/x86/scc/iRCCE_mailbox.c b/arch/x86/scc/iRCCE_mailbox.c index 5269a638..f269edd2 100644 --- a/arch/x86/scc/iRCCE_mailbox.c +++ b/arch/x86/scc/iRCCE_mailbox.c @@ -438,13 +438,14 @@ int iRCCE_mail_send( RC_cache_invalidate(); iRCCE_memcpy_put( (void*)iRCCE_mailbox_send[dest], (void*)&header, RCCE_LINE_SIZE ); + // set senders flag RC_cache_invalidate(); iRCCE_mailbox_send[dest]->sent = RCCE_FLAG_SET; *(int *)RCCE_fool_write_combine_buffer = 1; RC_cache_invalidate(); - + RCCE_release_lock( dest ); /* enable interrupts */ diff --git a/arch/x86/scc/icc.c b/arch/x86/scc/icc.c index 69473ecc..eba075d4 100644 --- a/arch/x86/scc/icc.c +++ b/arch/x86/scc/icc.c @@ -230,7 +230,7 @@ int icc_halt(void) #define ROUNDS 1000 #define CORE_A 0 // sender -#define CORE_B 11 // receiver +#define CORE_B 1 // receiver int icc_send_gic_irq(int core_num) { @@ -264,10 +264,12 @@ static inline void icc_mail_check_tag(iRCCE_MAIL_HEADER* mail) { break; case PING_REQ: + kprintf( "icc_mail_check_tag: ping_req\n" ); iRCCE_mail_send(0, PING_RESP, 0, NULL, mail->source); break; default: + kprintf( "icc_mail_check_tag: uknown tag id %d\n", mail->tag ); break; } @@ -469,6 +471,8 @@ void icc_mail_check(int irq) flags = irq_nested_disable(); if( irq == 1 ) { + + kprintf( "hello from gic irq" ); /* read status register */ irq_status_reg = (volatile uint64_t*)(FPGA_BASE + IRQ_STATUS + my_ue*8); irq_status = *irq_status_reg; diff --git a/kernel/tests.c b/kernel/tests.c index 8e593602..502e2b87 100644 --- a/kernel/tests.c +++ b/kernel/tests.c @@ -104,8 +104,7 @@ static int mail_ping(void* arg) { // icc_mail_ping(); icc_mail_ping_irq(); // icc_irq_ping(); -// icc_halt(); - kprintf( "goodbye from mail_ping_task" ); + icc_halt(); return 0; }