Hi,
Can anyone explain syscallX() marco (in PowerPC) for me, especially mfcr instruction. I appreciate if anyone can give me one example (i.e. coversion from C code to assembly code of one system call):
#define _syscall1(type,name,type1,arg1)     \
type name(type1 arg1)       \
{         \
 unsigned long __sc_ret, __sc_err;    \
 {        \
  register unsigned long __sc_0 __asm__ ("r0");  \
  register unsigned long __sc_3 __asm__ ("r3");  \
         \
  __sc_3 = (unsigned long) (arg1);   \
  __sc_0 = __NR_##name;     \
  __asm__ __volatile__     \
   ("sc           \n\t"    \
    "mfcr %1      "    \
   : "=&r" (__sc_3), "=&r" (__sc_0)  \
   : "0"   (__sc_3), "1"   (__sc_0)  \
   : __syscall_clobbers);    \
  __sc_ret = __sc_3;     \
  __sc_err = __sc_0;     \
 }        \
 __syscall_return (type);     \
}
Thank you for help in advanced,
DANG NGUYEN DUC

Reply via email to