summaryrefslogtreecommitdiff
path: root/src/libultra/io/sptaskyielded.c
blob: 88c112305c9cbd727851493e21fa1bac20772d3b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "ultra64.h"

OSYieldResult osSpTaskYielded(OSTask* task) {
    s32 status = __osSpGetStatus();
    OSYieldResult result;

    if (status & SP_STATUS_YIELDED) {
        result = OS_TASK_YIELDED;
    } else {
        result = 0;
    }
    if (status & SP_STATUS_YIELD) {
        task->t.flags |= result;
        task->t.flags &= ~OS_TASK_DP_WAIT;
    }
    return result;
}