static u16 *mapMemory
 
Con esto has declarado mapMemory como un puntero a tipo u16. 
Para poder usar esa variable en una función, depende de lo que quieras hacer. Si lo que quieres es que la función, tras el proceso que sea, le asigne un valor, hay dos opciones: 
- Que la función te devuelva un puntero a u16. Por ejemplo:    
Código C:
Ver original- u16 *MiFuncion (lista_de_parametros);   // Prototipo 
-   
- u16 *MiFuncion (lista_de_parametros)    // Implementacion 
- { 
-     u16 *ptr; 
-     // Aqui vendría el código... 
-     return ptr; 
-     // Conviene devolver NULL si el cálculo del puntero ha fallado 
- } 
-   
- mapMemory = MiFuncion (lista_de_parametros);    // Utilizacion 
- // OJO: Comprobar que el puntero retornado no es NULL 
- Modificar el valor dentro de la función. Tendrías que pasar el puntero por referencia, es decir, con un puntero a puntero:    
Código C:
Ver original- void MiFuncion (u16 **ptr);     // Prototipo 
-   
- void MiFuncion (u16 **ptr)      // Implementación 
- { 
-     // Aqui vendría el código... 
-     *ptr = valor_calculado 
- } 
-   
- MiFuncion (&mapMemory);     // Utilización 
Si lo que quieres es que la función trabaje con el valor al que apunta mapMemory, simplemente:    
Código C:
Ver original- void MiFuncion (u16 *ptr);      // Prototipo 
-   
- void MiFuncion (u16 *ptr)       // Implementacion 
- { 
-     // Aqui vendría el código... 
-     *ptr = resultado_del_proceso; 
- } 
-   
- MiFuncion (mapMemory);      // Utilizacion 
En este último caso, tienes que asegurarte de que mapMemory tiene previamente un valor legal, de lo contrario te encontrarás con una violación de segmento. 
Saludos,