arm: build fixes

Get p9p to build cleanly for ARM - based on suggestions from rsc and eekee, plus a final tweak from me.  Tested (a bit) on sheevaplug (ubuntu jaunty), Nokia N800 (maemo 4) and Nokia N900 (maemo 5).

R=rsc
CC=plan9port.codebot
http://codereview.appspot.com/4524056
This commit is contained in:
Richard Miller 2011-05-18 13:20:56 -04:00 committed by Russ Cox
parent c1f950fc32
commit 9cf92718e9
5 changed files with 25 additions and 20 deletions

4
src/libmp/arm/mkfile Normal file
View file

@ -0,0 +1,4 @@
all:
%:V:
# nothing to see here

4
src/libsec/arm/mkfile Normal file
View file

@ -0,0 +1,4 @@
all:
%:V:
# nothing to see here

View file

@ -3,24 +3,24 @@
void
makecontext(ucontext_t *uc, void (*fn)(void), int argc, ...)
{
int i, *sp;
va_list arg;
sp = (int*)uc->uc_stack.ss_sp+uc->uc_stack.ss_size/4;
va_start(arg, argc);
for(i=0; i<4 && i<argc; i++)
uc->uc_mcontext.gregs[i] = va_arg(arg, uint);
va_end(arg);
uc->uc_mcontext.gregs[13] = (uint)sp;
uc->uc_mcontext.gregs[14] = (uint)fn;
int i, *sp;
va_list arg;
sp = (int*)uc->uc_stack.ss_sp+uc->uc_stack.ss_size/4;
va_start(arg, argc);
for(i=0; i<4 && i<argc; i++)
(&uc->uc_mcontext.arm_r0)[i] = va_arg(arg, uint);
va_end(arg);
uc->uc_mcontext.arm_sp = (uint)sp;
uc->uc_mcontext.arm_lr = (uint)fn;
}
int
swapcontext(ucontext_t *oucp, const ucontext_t *ucp)
{
if(getcontext(oucp) == 0)
setcontext(ucp);
return 0;
if(getcontext(oucp) == 0)
setcontext(ucp);
return 0;
}

View file

@ -4,9 +4,6 @@ test -f $PLAN9/config && . $PLAN9/config
tag="$OBJTYPE-$SYSNAME-${SYSVERSION:-`uname -r`}-${CC9:-cc}"
case "$tag" in
arm-Linux-*)
echo ${SYSNAME}-${OBJTYPE}-asm.o $SYSNAME.o
;;
*-Linux-2.6.*)
echo pthread.o
;;

View file

@ -73,10 +73,10 @@ but surely the latter would be defined(__sparc__).
*/
#if defined(__arm__)
int mygetmcontext(mcontext_t*);
void mysetmcontext(const mcontext_t*);
#define setcontext(u) mysetmcontext(&(u)->uc_mcontext)
#define getcontext(u) mygetmcontext(&(u)->uc_mcontext)
int mygetmcontext(ulong*);
void mysetmcontext(const ulong*);
#define setcontext(u) mysetmcontext(&(u)->uc_mcontext.arm_r0)
#define getcontext(u) mygetmcontext(&(u)->uc_mcontext.arm_r0)
#endif