revert between 56095 -> 55830 in arch
[AROS.git] / arch / m68k-all / kernel / issuper.S
blobe44eeaf929ffa0c6372a2ee8c713ec099fef03ec
1 /*****************************************************************************
3     NAME
4 #include <proto/kernel.h>
6 AROS_LH0I(int, KrnIsSuper,
8     SYNOPSIS
10     LOCATION
11         struct KernelBase *, KernelBase, 13, Kernel)
13     FUNCTION
14         Determine if the caller is running in supervisor mode
16     INPUTS
17         None
19     RESULT
20         Nonzero for supervisor mode, zero for user mode
22     NOTES
23         Callers should only test the return value against zero.
24         Nonzero values may actually be different, since they
25         may carry some private implementation-dependent information
26         (like CPU privilege level, for example).
28     EXAMPLE
30     BUGS
32     SEE ALSO
34     INTERNALS
36 ******************************************************************************/
37         #include "aros/m68k/asm.h"
39         .text
40         .balign 4
41         .globl AROS_SLIB_ENTRY(KrnIsSuper,Kernel,13)
42         .globl Kernel_Is_Super
44 AROS_SLIB_ENTRY(KrnIsSuper,Kernel,13):
45 Kernel_Is_Super:
46         /* 68010+ privilege violation exception handler checks for this special case.
47          * (move from SR is not privileged on 68000) */
48         move %sr,%d0
49         /* If above instruction caused exception, exception handler returns here */
50         and.l   #0x2000,%d0
51         rts