Hi !
In Keil os_tsk_create_user() doc it passes a void* for the stack parameter, but in the example (and example code in uVision) we do the following :
static U64 stk2[400/8]; ... os_tsk_create_user (task2, 1, &stk2, sizeof(stk2)); ...
If I am right typeof &stk2 is U64 **. As the test work I think the definition is wrong.
www.keil.com/.../rlarm_os_tsk_create_user.htm
The code works with or without the & in the call. Taking the address of the array will point to the start of the array, just as the array name will also point to the start of the array. It's just a question of the type the pointer points to.
The function takes a void pointer, so it doesn't care if it gets a pointer to a char, a pinter to an int, a pointer to an array or a pointer to a struct. The only important thing is that the pointer points to a memory region large enough and that you have correct alignment.