source: mainline/kernel/arch/sparc32/src/trap_table.S@ 3d1956b

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 3d1956b was 3d1956b, checked in by Jakub Klama <jakub.klama@…>, 12 years ago

Move fixes from preemtible_trap to syscall_trap handler, allowing
to at least get into syscall handling routine.

  • Property mode set to 100644
File size: 14.9 KB
Line 
1#
2# Copyright (c) 2013 Jakub Klama
3# All rights reserved.
4#
5# Redistribution and use in source and binary forms, with or without
6# modification, are permitted provided that the following conditions
7# are met:
8#
9# - Redistributions of source code must retain the above copyright
10# notice, this list of conditions and the following disclaimer.
11# - Redistributions in binary form must reproduce the above copyright
12# notice, this list of conditions and the following disclaimer in the
13# documentation and/or other materials provided with the distribution.
14# - The name of the author may not be used to endorse or promote products
15# derived from this software without specific prior written permission.
16#
17# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27#
28
29#include <arch/trap.h>
30
31.text
32
33.global trap_table
34.global reset_trap
35.global preemptible_trap
36.global interrupt_trap
37.global syscall_trap
38.global window_overflow_trap
39.global window_underflow_trap
40.global write_to_invalid
41
42.macro get_wim_number reg
43 clr \reg
44 mov %wim, %g5
451: andcc %g5, 1, %g0
46 bne 2f
47 nop
48 srl %g5, 1, %g5
49 inc \reg
50 b 1b
512: nop
52
53.endm
54
55.macro get_cwp reg
56 mov %psr, \reg
57 and \reg, 0x7, \reg
58.endm
59
60.macro switch_to_invalid saved_wim, saved_psr
61 get_wim_number %l3
62 mov %wim, \saved_wim ! save WIM
63 mov %g0, %wim ! clear WIM
64 mov %psr, \saved_psr ! read PSR
65 and \saved_psr, 0xfffffff0, %l4
66 or %l4, %l3, %l3 ! set CWP
67 mov %l3, %psr ! write PSR
68 nop
69 nop
70 nop
71 nop ! wait for PSR to be effective
72.endm
73
74.macro switch_back wim, psr
75 mov \wim, %wim ! saved WIM
76 mov \psr, %psr ! saved PSR
77 nop
78 nop
79 nop
80 nop
81.endm
82
83/* Save next window to kernel stack or UWB */
84.macro inline_save_kernel
85 mov %wim, %g2
86 mov %g0, %wim
87 save
88 std %l0, [%sp + 0]
89 std %l2, [%sp + 8]
90 std %l4, [%sp + 16]
91 std %l6, [%sp + 24]
92 std %i0, [%sp + 32]
93 std %i2, [%sp + 40]
94 std %i4, [%sp + 48]
95 std %i6, [%sp + 56]
96 restore
97 mov %g2, %wim
98.endm
99
100.macro inline_save_uspace uwb
101 mov %wim, %g2
102 mov %g0, %wim
103 save
104 std %l0, [\uwb + 0]
105 std %l2, [\uwb + 8]
106 std %l4, [\uwb + 16]
107 std %l6, [\uwb + 24]
108 std %i0, [\uwb + 32]
109 std %i2, [\uwb + 40]
110 std %i4, [\uwb + 48]
111 std %i6, [\uwb + 56]
112 add \uwb, 64, \uwb
113 restore
114 mov %g2, %wim
115.endm
116
117/* Restore window from kernel stack or UWB */
118.macro inline_restore_kernel
119 mov %wim, %l3
120 srl %l3, 7, %l4
121 sll %l3, 1, %l3
122 or %l3, %l4, %l3
123 and %l3, 0xff, %l3
124
125 mov %g0, %wim
126 restore
127 mov %l5, %g5
128 mov %l6, %g6
129 mov %l7, %g7
130 restore
131 mov %g5, %l5
132 mov %g6, %l6
133 mov %g7, %l7
134 save
135
136 ldd [%sp + 0], %l0
137 ldd [%sp + 8], %l2
138 ldd [%sp + 16], %l4
139 ldd [%sp + 24], %l6
140 ldd [%sp + 32], %i0
141 ldd [%sp + 40], %i2
142 ldd [%sp + 48], %i4
143 ldd [%sp + 56], %i6
144 save
145
146 mov %l3, %wim
147.endm
148
149.macro inline_restore_uspace uwb
150 mov %wim, %l3
151 srl %l3, 7, %l4
152 sll %l3, 1, %l3
153 or %l3, %l4, %l3
154 and %l3, 0xff, %l3
155
156 mov %g0, %wim
157 restore
158 mov %l5, %g5
159 mov %l6, %g6
160 mov %l7, %g7
161 restore
162 mov %g5, %l5
163 mov %g6, %l6
164 mov %g7, %l7
165 save
166
167 ldd [\uwb + 0], %l0
168 ldd [\uwb + 8], %l2
169 ldd [\uwb + 16], %l4
170 ldd [\uwb + 24], %l6
171 ldd [\uwb + 32], %i0
172 ldd [\uwb + 40], %i2
173 ldd [\uwb + 48], %i4
174 ldd [\uwb + 56], %i6
175 sub \uwb, 64, \uwb
176 save
177
178 mov %l3, %wim
179.endm
180
181.macro if_from_kernel label
182 mov %psr, %g2
183 and %g2, (1 << 6), %g2
184 cmp %g2, 0
185 bne \label
186 nop
187.endm
188
189write_to_invalid:
190 ! Write value 1
191 mov %o0, %g7
192 switch_to_invalid %g3, %g4
193 mov %g7, %l5
194 switch_back %g3, %g4
195 ! Write value 2
196 mov %o1, %g7
197 switch_to_invalid %g3, %g4
198 mov %g7, %l6
199 switch_back %g3, %g4
200 ! Write value 3
201 mov %o2, %g7
202 switch_to_invalid %g3, %g4
203 mov %g7, %l7
204 switch_back %g3, %g4
205 retl
206 nop
207
208reset_trap:
209 set 0x80000100, %l0
210 set 'r', %l1
211 sta %l1, [%l0] 0x1c
212 rett
213
214window_overflow_trap:
215 /* rotate WIM on bit right, we have 8 windows */
216 mov %wim, %l3
217 sll %l3, 7, %l4
218 srl %l3, 1, %l3
219 or %l3, %l4, %l3
220 and %l3, 0xff, %l3
221
222 /* disable WIM traps */
223 mov %g0,%wim
224 nop; nop; nop
225
226 /* Save invalid window data */
227 mov %l5, %g5 ! kernel stack pointer
228 mov %l6, %g6 ! kernel wbuf
229 mov %l7, %g7
230
231 /* Check whether previous mode was usermode */
232 and %l0, (1 << 6), %l0
233 cmp %l0, 0
234 beq 1f
235 nop
236
237 /* kernel: */
238 /* we should check whether window needs to be saved
239 * to kernel stack or uwb
240 */
241 cmp %g7, 0
242 bne 2f
243 nop
244
245 /* dump registers to stack */
246 save
247 st %l0, [%sp + 0] ! XXX
248 std %l0, [%sp + 0]
249 std %l2, [%sp + 8]
250 std %l4, [%sp + 16]
251 std %l6, [%sp + 24]
252 std %i0, [%sp + 32]
253 std %i2, [%sp + 40]
254 std %i4, [%sp + 48]
255 std %i6, [%sp + 56]
256 b 3f
257 nop
258
2591: /* uspace: */
260 /* set uspace window mark */
261 mov %psr, %g7
262 and %g7, 0x7, %g7
263 inc %g7
264
2652: save
266 std %l0, [%g6 + 0]
267 std %l2, [%g6 + 8]
268 std %l4, [%g6 + 16]
269 std %l6, [%g6 + 24]
270 std %i0, [%g6 + 32]
271 std %i2, [%g6 + 40]
272 std %i4, [%g6 + 48]
273 std %i6, [%g6 + 56]
274 add %g4, 64, %g4
275
276 /* check whether it's the last user window to be saved */
277 mov %psr, %l4
278 and %l4, 0x7, %l4
279 inc %l4
280 cmp %g7, %l4
281 bne 3f
282 nop
283
284 /* clear uspace window mark */
285 clr %g7
286
2873: /* back to where we should be */
288 mov %g5, %l5
289 mov %g6, %l6
290 mov %g7, %l7
291 restore
292
293 /* set new value of window */
294 mov %l3,%wim
295 nop; nop; nop
296
297 /* go home */
298 jmp %l1
299 rett %l2
300
301window_underflow_trap:
302 /* rotate WIM on bit LEFT, we have 8 windows */
303 mov %wim,%l3
304 srl %l3,7,%l4
305 sll %l3,1,%l3
306 or %l3,%l4,%l3
307 and %l3, 0xff,%l3
308
309 /* disable WIM traps */
310 mov %g0,%wim
311 nop; nop; nop
312
313 /* Check whether previous mode was usermode */
314 mov %psr, %l0
315 and %l0, (1 << 6), %l0
316 cmp %l0, 0
317 beq 1f
318 nop
319
320 restore
321 restore
322 mov %l5, %g5 ! kernel stack pointer
323 mov %l6, %g6 ! kernel wbuf
324 mov %l7, %g7
325
326 ldd [%sp + 0], %l0
327 ldd [%sp + 8], %l2
328 ldd [%sp + 16], %l4
329 ldd [%sp + 24], %l6
330 ldd [%sp + 32], %i0
331 ldd [%sp + 40], %i2
332 ldd [%sp + 48], %i4
333 ldd [%sp + 56], %i6
334 b 2f
335 nop
336
3371: restore
338 restore
339 mov %l5, %g5 ! kernel stack pointer
340 mov %l6, %g6 ! kernel wbuf
341 mov %l7, %g7
342 sub %g6, 64, %g6
343 ldd [%g6 + 0], %l0
344 ldd [%g6 + 8], %l2
345 ldd [%g6 + 16], %l4
346 ldd [%g6 + 24], %l6
347 ldd [%g6 + 32], %i0
348 ldd [%g6 + 40], %i2
349 ldd [%g6 + 48], %i4
350 ldd [%g6 + 56], %i6
351
3522: /* Restore invalid window data */
353 restore
354 mov %g5, %l5
355 mov %g6, %l6
356 mov %g7, %l7
357 save
358 save
359 save
360
361 /* Set new value of window */
362 mov %l3,%wim
363 nop; nop; nop
364
365 /* go home */
366 jmp %l1
367 rett %l2
368
369preemptible_trap:
370 /* Check whether we landed in invalid window */
371 get_wim_number %g6
372 get_cwp %g7
373 cmp %g6, %g7
374 bne 4f
375 nop
376
377 /* We are in invalid window. Check whether previous mode was usermode */
378 if_from_kernel 3f
379
380 /* Trap originated from uspace */
381 /* Kernel stack pointer is at %l5, uwb is at %l6 */
382 inline_save_uspace %l6
383
384 /* set uspace window mark */
385 mov %psr, %l7
386 and %l7, 0x7, %l7
387 inc %l7
388
3893: /* Trap originated from kernel */
390 inline_save_kernel
391
3924: /* Check whether previous mode was usermode */
393 if_from_kernel 5f
394
395 /* Load kernel stack pointer from invalid window */
396 switch_to_invalid %g5, %g6
397 /* set uspace window mark */
398 mov %g6, %l7
399 and %l7, 0x7, %l7
400 inc %l7
401 /* Save stack pointer */
402 mov %l5, %g7
403 switch_back %g5, %g6
404 mov %g7, %sp
405// mov %sp, %fp
406
4075: /* Set up stack frame */
408 sub %sp, 112, %sp
409
410 /* Save trap data on stack */
411 mov %psr, %l0
412 st %l1, [%sp + 92]
413 st %l2, [%sp + 96]
414 st %l0, [%sp + 100]
415
416 /* Enable traps */
417 mov %psr, %l0
418 or %l0, (1 << 5), %l0
419 mov %l0, %psr
420 nop
421 nop
422 nop
423 nop
424
425 /* Jump to actual subroutine */
426 call %o2
427 sub %fp, 12, %o1
428
429 /* Return from handler */
430 ld [%sp + 92], %l1
431 ld [%sp + 96], %l2
432 ld [%sp + 100], %l0
433 mov %l0, %psr
434 nop
435 nop
436 nop
437 nop
438 nop
439
440 /* If trap originated from uspace, clear uspace window mark and save uwb address for future use */
441 if_from_kernel 6f
442 switch_to_invalid %g5, %g6
443 clr %l7
444 mov %l6, %g7
445 switch_back %g5, %g6
446 mov %g7, %g1
447
448 /* If next window is invalid, do inline restore */
4496: get_wim_number %g6
450 get_cwp %g7
451 inc %g7
452 cmp %g6, %g7
453 bne 8f
454
455 if_from_kernel 7f
456
457 inline_restore_uspace %g1
458 b 8f
459 nop
460
4617: inline_restore_kernel
462
4638: jmp %l1
464 rett %l2
465
466interrupt_trap:
467 mov %psr, %l0
468
469 /* Check whether previous mode was usermode */
470 and %l0, (1 << 6), %l0
471 cmp %l0, 0
472 bne 1f
473 nop
474
475 /* Set up stack */
476 set kernel_sp, %l4
477 ld [%l4], %sp
478 mov %sp, %fp
4791: sub %sp, 112, %sp
480
481 /* Save trap data on stack */
482 mov %psr, %l0
483 st %l1, [%fp - 4]
484 st %l2, [%fp - 8]
485 st %l0, [%fp - 12]
486
487 /* Enable traps */
488 mov %psr, %l0
489 or %l0, (1 << 5), %l0
490 mov %l0, %psr
491 nop
492 nop
493 nop
494 nop
495
496 /* Jump to actual subroutine */
497 mov %g2, %o0
498 call exc_dispatch
499 sub %fp, 12, %o1
500
501 /* Return from handler */
502 ld [%fp - 4], %l1
503 ld [%fp - 8], %l2
504 ld [%fp - 12], %l0
505 mov %l0, %psr
506 nop
507 nop
508 nop
509 nop
510 nop
511
512 /* If trap originated from uspace, clear uspace window mark and save uwb address for future use */
513 if_from_kernel 6f
514 switch_to_invalid %g5, %g6
515 clr %l7
516 mov %l6, %g7
517 switch_back %g5, %g6
518 mov %g7, %g1
519
520 /* If next window is invalid, do inline restore */
5216: get_wim_number %g6
522 get_cwp %g7
523 inc %g7
524 cmp %g6, %g7
525 bne 8f
526
527 if_from_kernel 7f
528
529 inline_restore_uspace %g1
530 b 8f
531 nop
532
5337: inline_restore_kernel
534
5358: jmp %l1
536 rett %l2
537
538syscall_trap:
539 /* Check whether we landed in invalid window */
540 get_wim_number %g6
541 get_cwp %g7
542 cmp %g6, %g7
543 bne 4f
544 nop
545
546 /* We are in invalid window. Check whether previous mode was usermode */
547 if_from_kernel 3f
548
549 /* Kernel stack pointer is at %l5, uwb is at %l6 */
550 inline_save_uspace %l6
5513: inline_save_kernel
552
5534: /* Check whether previous mode was usermode */
554 if_from_kernel 5f
555
556 /* Load kernel stack pointer from invalid window */
557 switch_to_invalid %g5, %g6
558 /* set uspace window mark */
559 mov %g6, %l7
560 and %l7, 0x7, %l7
561 inc %l7
562 /* Save stack pointer */
563 mov %l5, %g7
564 switch_back %g5, %g6
565 mov %g7, %sp
566 mov %sp, %fp
5675: sub %sp, 112, %sp
568
569 /* Save trap data on stack */
570 mov %psr, %l0
571 st %l1, [%sp + 92]
572 st %l2, [%sp + 96]
573 st %l0, [%sp + 100]
574
575 /* Enable traps */
576 mov %psr, %l0
577 or %l0, (1 << 5), %l0
578 mov %l0, %psr
579 nop
580 nop
581 nop
582 nop
583
584 /* Jump to actual subroutine */
585 sub %o0, 0x80, %o0
586 st %o0, [ %sp + 92 ]
587 mov %i0, %o0
588 mov %i1, %o1
589 mov %i2, %o2
590 mov %i3, %o3
591 mov %i4, %o4
592 call syscall
593 mov %i5, %o5
594
595 /* Return from handler */
596 ld [%sp + 92], %l1
597 ld [%sp + 96], %l2
598 ld [%sp + 100], %l0
599 mov %l0, %psr
600 nop
601 nop
602 nop
603 nop
604 nop
605
606 /* If trap originated from uspace, clear uspace window mark and save uwb address for future use */
607 if_from_kernel 6f
608 switch_to_invalid %g5, %g6
609 clr %l7
610 mov %l6, %g7
611 switch_back %g5, %g6
612 mov %g7, %g1
613
614 /* If next window is invalid, do inline restore */
6156: get_wim_number %g6
616 get_cwp %g7
617 inc %g7
618 cmp %g6, %g7
619 bne 8f
620
621 if_from_kernel 7f
622
623 inline_restore_uspace %g1
624 b 8f
625 nop
626
6277: inline_restore_kernel
628
629
6308: jmp %l2
631 rett %l2 + 4
632
633#define STRAP(_vector, _handler) \
634 .org trap_table + _vector * TRAP_ENTRY_SIZE; \
635 mov %psr, %l0 ; \
636 sethi %hi(_handler), %l4 ; \
637 jmp %lo(_handler) + %l4 ; \
638 nop
639
640#define TRAP(_vector, _handler) \
641 .org trap_table + _vector * TRAP_ENTRY_SIZE; \
642 set _vector, %o0 ; \
643 sethi %hi(_handler), %o2 ; \
644 b preemptible_trap ; \
645 or %o2, %lo(_handler), %o2 ;
646
647#define SYSCALL(_vector) \
648 .org trap_table + _vector * TRAP_ENTRY_SIZE; \
649 set _vector, %o0 ; \
650 b syscall_trap ; \
651 nop ;
652
653#define INTERRUPT(_vector, _priority) \
654 .org trap_table + _vector * TRAP_ENTRY_SIZE; \
655 mov %psr, %l0 ; \
656 mov _priority, %g2 ; \
657 b interrupt_trap ; \
658 nop ;
659
660#define BADTRAP(_vector) \
661 .org trap_table + _vector * TRAP_ENTRY_SIZE ; \
662 ta 0 ;
663
664.align TRAP_TABLE_SIZE
665trap_table:
666 STRAP(0x0, reset_trap)
667 TRAP(0x1, instruction_access_exception)
668 TRAP(0x2, illegal_instruction)
669 TRAP(0x3, privileged_instruction)
670 TRAP(0x4, fp_disabled)
671 STRAP(0x5, window_overflow_trap)
672 STRAP(0x6, window_underflow_trap)
673 TRAP(0x7, mem_address_not_aligned)
674 TRAP(0x8, fp_exception)
675 TRAP(0x9, data_access_exception)
676 TRAP(0xa, tag_overflow)
677 BADTRAP(0xb)
678 BADTRAP(0xc)
679 BADTRAP(0xd)
680 BADTRAP(0xe)
681 BADTRAP(0xf)
682 BADTRAP(0x10)
683 INTERRUPT(0x11, 1)
684 INTERRUPT(0x12, 2)
685 INTERRUPT(0x13, 3)
686 INTERRUPT(0x14, 4)
687 INTERRUPT(0x15, 5)
688 INTERRUPT(0x16, 6)
689 INTERRUPT(0x17, 7)
690 INTERRUPT(0x18, 8)
691 INTERRUPT(0x19, 9)
692 INTERRUPT(0x1a, 10)
693 INTERRUPT(0x1b, 11)
694 INTERRUPT(0x1c, 12)
695 INTERRUPT(0x1d, 13)
696 INTERRUPT(0x1e, 14)
697 INTERRUPT(0x1f, 15)
698 TRAP(0x21, instruction_access_error)
699 BADTRAP(0x22)
700 BADTRAP(0x23)
701 BADTRAP(0x24)
702 BADTRAP(0x25)
703 BADTRAP(0x26)
704 BADTRAP(0x27)
705 BADTRAP(0x28)
706 TRAP(0x29, data_access_error)
707 TRAP(0x2a, division_by_zero)
708 TRAP(0x2b, data_store_error)
709 TRAP(0x2c, data_access_mmu_miss)
710 BADTRAP(0x2d)
711 BADTRAP(0x2e)
712 BADTRAP(0x2f)
713 BADTRAP(0x30)
714 BADTRAP(0x31)
715 BADTRAP(0x32)
716 BADTRAP(0x33)
717 BADTRAP(0x34)
718 BADTRAP(0x35)
719 BADTRAP(0x36)
720 BADTRAP(0x37)
721 BADTRAP(0x38)
722 BADTRAP(0x39)
723 BADTRAP(0x3a)
724 BADTRAP(0x3b)
725 BADTRAP(0x3c)
726 BADTRAP(0x3d)
727 BADTRAP(0x3e)
728 BADTRAP(0x3f)
729 BADTRAP(0x40)
730 BADTRAP(0x41)
731 BADTRAP(0x42)
732 BADTRAP(0x43)
733 BADTRAP(0x44)
734 BADTRAP(0x45)
735 BADTRAP(0x46)
736 BADTRAP(0x47)
737 BADTRAP(0x48)
738 BADTRAP(0x49)
739 BADTRAP(0x4a)
740 BADTRAP(0x4b)
741 BADTRAP(0x4c)
742 BADTRAP(0x4d)
743 BADTRAP(0x4e)
744 BADTRAP(0x4f)
745 BADTRAP(0x50)
746 BADTRAP(0x51)
747 BADTRAP(0x52)
748 BADTRAP(0x53)
749 BADTRAP(0x54)
750 BADTRAP(0x55)
751 BADTRAP(0x56)
752 BADTRAP(0x57)
753 BADTRAP(0x58)
754 BADTRAP(0x59)
755 BADTRAP(0x5a)
756 BADTRAP(0x5b)
757 BADTRAP(0x5c)
758 BADTRAP(0x5d)
759 BADTRAP(0x5e)
760 BADTRAP(0x5f)
761 BADTRAP(0x60)
762 BADTRAP(0x61)
763 BADTRAP(0x62)
764 BADTRAP(0x63)
765 BADTRAP(0x64)
766 BADTRAP(0x65)
767 BADTRAP(0x66)
768 BADTRAP(0x67)
769 BADTRAP(0x68)
770 BADTRAP(0x69)
771 BADTRAP(0x6a)
772 BADTRAP(0x6b)
773 BADTRAP(0x6c)
774 BADTRAP(0x6d)
775 BADTRAP(0x6e)
776 BADTRAP(0x6f)
777 BADTRAP(0x70)
778 BADTRAP(0x71)
779 BADTRAP(0x72)
780 BADTRAP(0x73)
781 BADTRAP(0x74)
782 BADTRAP(0x75)
783 BADTRAP(0x76)
784 BADTRAP(0x77)
785 BADTRAP(0x78)
786 BADTRAP(0x79)
787 BADTRAP(0x7a)
788 BADTRAP(0x7b)
789 BADTRAP(0x7c)
790 BADTRAP(0x7d)
791 BADTRAP(0x7e)
792 BADTRAP(0x7f)
793 SYSCALL(0x80)
794 SYSCALL(0x81)
795 SYSCALL(0x82)
796 SYSCALL(0x83)
797 SYSCALL(0x84)
798 SYSCALL(0x85)
799 SYSCALL(0x86)
800 SYSCALL(0x87)
801 SYSCALL(0x88)
802 SYSCALL(0x89)
803 SYSCALL(0x8a)
804 SYSCALL(0x8b)
805 SYSCALL(0x8c)
806 SYSCALL(0x8d)
807 SYSCALL(0x8e)
808 SYSCALL(0x8f)
809 SYSCALL(0x90)
810 SYSCALL(0x91)
811 SYSCALL(0x92)
812 SYSCALL(0x93)
813 SYSCALL(0x94)
814 SYSCALL(0x95)
815 SYSCALL(0x96)
816 SYSCALL(0x97)
817 SYSCALL(0x98)
818 SYSCALL(0x99)
819 SYSCALL(0x9a)
820 SYSCALL(0x9b)
821 SYSCALL(0x9c)
822 SYSCALL(0x9d)
823 SYSCALL(0x9e)
824 SYSCALL(0x9f)
825 SYSCALL(0xa0)
826 SYSCALL(0xa1)
827 SYSCALL(0xa2)
828 SYSCALL(0xa3)
829 SYSCALL(0xa4)
830 SYSCALL(0xa5)
831 SYSCALL(0xa6)
832 SYSCALL(0xa7)
833 SYSCALL(0xa8)
834 SYSCALL(0xa9)
Note: See TracBrowser for help on using the repository browser.