configure fixes, N900 fixes
[awish.git] / asm / utils.awa
blob167c8a1eb631eff1e4e4f6a2b6421ff4dc1d8445
1 /*
2  * This program is free software: you can redistribute it and/or modify
3  * it under the terms of the GNU General Public License as published by
4  * the Free Software Foundation, either version 3 of the License, or
5  * (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
14  */
15 proc: kill_all_threads
16 local: .cnt
17 ;defloc: .cnt = -1
18   rst FRST_GET_MAX_THREAD_ID
19   set [.cnt], [rst_result]
20 .loop:
21   jlt .quit, [.cnt], 1
22   kil [.cnt]
23   sub [.cnt], 1
24   jmp .loop
25 .quit:
26   ret
27 endp: kill_all_threads
30 clear_stack:
31   dpt
32   jle .quit, 1
33   swp
34   pop
35   jmp clear_stack
36 .quit:
37   ret
41 proc: suspend_all
42 local: .cnt, .t
43   rst FRST_GET_MAX_THREAD_ID
44   set [.cnt], [rst_result]
45 .loop:
46   jlt .quit, [.cnt], 1
47   ; save old state
48   sta [.cnt], [.t]
49   jeq @@f, [.t], THREAD_STATE_INVALID
50   set prev_thread_state, [.t], [.cnt]
51   sus [.cnt]
52 @@:
53   sub [.cnt], 1
54   jmp .loop
55 .quit:
56   ret
57 endp: suspend_all
60 proc: resume_all
61 local: .cnt, .t
62   rst FRST_GET_MAX_THREAD_ID
63   set [.cnt], [rst_result]
64 .loop:
65   jlt .quit, [.cnt], 1
66   ; restore old state
67   sta [.cnt], [.t]
68   jeq @@f, [.t], THREAD_STATE_INVALID
69   res [.cnt]
70   get [.cnt], prev_thread_state
71   jeq @@f, THREAD_STATE_RUNNING
72   sus [.cnt]
73 @@:
74   sub [.cnt], 1
75   jmp .loop
76 .quit:
77   ret
78 endp: resume_all