diff --git a/main.c b/main.c index 774ed5467c..9924e64ba4 100644 --- a/main.c +++ b/main.c @@ -83,7 +83,7 @@ startothers(void) // is running in low memory, so we use entrypgdir for the APs too. stack = kalloc(); *(void**)(code-4) = stack + KSTACKSIZE; - *(void**)(code-8) = mpenter; + *(void(**)(void))(code-8) = mpenter; *(int**)(code-12) = (void *) V2P(entrypgdir); lapicstartap(c->apicid, V2P(code)); diff --git a/memlayout.h b/memlayout.h index 70c1968e1a..d1615f7abc 100644 --- a/memlayout.h +++ b/memlayout.h @@ -9,7 +9,7 @@ #define KERNLINK (KERNBASE+EXTMEM) // Address where kernel is linked #define V2P(a) (((uint) (a)) - KERNBASE) -#define P2V(a) (((void *) (a)) + KERNBASE) +#define P2V(a) ((void *)(((char *) (a)) + KERNBASE)) #define V2P_WO(x) ((x) - KERNBASE) // same as V2P, but without casts #define P2V_WO(x) ((x) + KERNBASE) // same as P2V, but without casts