-
- rv = syscall(SYS_semctl, semid, semnum, cmd, &ds);
+ switch (cmd) {
+ case SETVAL:
+ /* syscall must use LP64 quantities */
+ rv = __semctl(semid, semnum, cmd, (void *)val);
+ break;
+ case IPC_SET:
+ case IPC_STAT:
+ rv = __semctl(semid, semnum, cmd, ds_new);
+ break;
+ default:
+ rv = __semctl(semid, semnum, cmd, ds_old);
+ break;
+ }