diff --git a/spinlock.c b/spinlock.c
index 9982e67e3bcd951d648149d5d5a531c69ae303f9..a0458db7151705f0d7053eea5adc8732d133e105 100644
--- a/spinlock.c
+++ b/spinlock.c
@@ -22,8 +22,10 @@ initlock(struct spinlock *lock, char *name)
 void
 getcallerpcs(void *v, uint pcs[])
 {
-  uint *ebp = (uint*)v - 2;
+  uint *ebp;
   int i;
+  
+  ebp = (uint*)v - 2;
   for(i = 0; i < 10; i++){
     if(ebp == 0 || ebp == (uint*)0xffffffff)
       break;
@@ -88,3 +90,4 @@ holding(struct spinlock *lock)
 {
   return lock->locked && lock->cpu == cpu() + 10;
 }
+