00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include <linux/linkage.h>
00012 #include <linux/sched.h>
00013
00014 #include <ipldef.h>
00015 #include <system_data_cells.h>
00016 #include <ipl.h>
00017 #include <sch_routines.h>
00018
00019
00020
00021
00022
00023
00024 asmlinkage int cmod_astexit() {
00025 struct _pcb * p = ctl_gl_pcb;
00026 setipl(IPL__ASTDEL);
00027
00028 test_and_clear_bit(p->psl_prv_mod, &p->pcb_b_astact);
00029 sch_newlvl(p);
00030 #ifdef __i386__
00031 __asm__ __volatile__(
00032 "addl _0x40, %esp\n\t"
00033 );
00034 #endif
00035 #ifdef __x86_64__
00036 __asm__ __volatile__(
00037 "addq _0x88, %rsp\n\t"
00038 );
00039 #endif
00040 }
00041