1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 #include <asm/asm-offsets.h>
34 #include <asm/unistd.h>
35 #include <asm/errno.h>
36 #include <asm/page.h>
37 #include <asm/psw.h>
38 #include <asm/thread_info.h>
39 #include <asm/assembly.h>
40 #include <asm/processor.h>
41 #include <asm/cache.h>
42
43 #include <linux/linkage.h>
44
45
46
47
48
49 #define KILL_INSN break 0,0
50
51 .level PA_ASM_LEVEL
52
53 .text
54
55 .import syscall_exit,code
56 .import syscall_exit_rfi,code
57
58
59
60
61
62
63
64
65
66 .align PAGE_SIZE
67 ENTRY(linux_gateway_page)
68
69
70 .rept 44
71 KILL_INSN
72 .endr
73
74
75
76
77 #define __NR_lws_entries (3)
78
79 lws_entry:
80 gate lws_start, %r0
81 depi 3, 31, 2, %r31
82
83
84 .rept 10
85 KILL_INSN
86 .endr
87
88
89
90 set_thread_pointer:
91 gate .+8, %r0
92 depi 3, 31, 2, %r31
93 be 0(%sr7,%r31)
94 mtctl %r26, %cr27
95
96
97
98 .rept 4
99 KILL_INSN
100 .endr
101
102
103 .align LINUX_GATEWAY_ADDR
104 linux_gateway_entry:
105 gate .+8, %r0
106 mtsp %r0,%sr4
107 mtsp %r0,%sr5
108 mtsp %r0,%sr6
109
110 #ifdef CONFIG_64BIT
111
112
113 ssm PSW_SM_W, %r1
114 extrd,u %r1,PSW_W_BIT,1,%r1
115
116
117 or,ev %r1,%r30,%r30
118 b,n 1f
119
120
121
122 depdi 0, 31, 32, %r26
123 depdi 0, 31, 32, %r25
124 depdi 0, 31, 32, %r24
125 depdi 0, 31, 32, %r23
126 depdi 0, 31, 32, %r22
127 depdi 0, 31, 32, %r21
128 1:
129 #endif
130
131
132
133
134 mfsp %sr7,%r1
135 rsm PSW_SM_I, %r0
136 mtsp %r1,%sr3
137
138 mfctl %cr30,%r1
139 xor %r1,%r30,%r30
140 xor %r1,%r30,%r1
141 xor %r1,%r30,%r30
142
143 ldo THREAD_SZ_ALGN+FRAME_SIZE(%r30),%r30
144
145
146
147
148
149
150
151 mtsp %r0,%sr7
152 ssm PSW_SM_I, %r0
153 STREGM %r1,FRAME_SIZE(%r30)
154 mfctl %cr30,%r1
155 LDREG TI_TASK(%r1),%r1
156
157
158
159
160
161
162 STREG %r0, TASK_PT_PSW(%r1)
163 STREG %r2, TASK_PT_GR2(%r1)
164 STREG %r19, TASK_PT_GR19(%r1)
165
166 LDREGM -FRAME_SIZE(%r30), %r2
167 #ifdef CONFIG_64BIT
168 extrd,u %r2,63,1,%r19
169 #if 0
170 xor %r19,%r2,%r2
171 depd,z %r19,1,1,%r19
172 std %r19,TASK_PT_PSW(%r1)
173 #endif
174 #endif
175 STREG %r2, TASK_PT_GR30(%r1)
176
177 STREG %r20, TASK_PT_GR20(%r1)
178 STREG %r21, TASK_PT_GR21(%r1)
179 STREG %r22, TASK_PT_GR22(%r1)
180 STREG %r23, TASK_PT_GR23(%r1)
181 STREG %r24, TASK_PT_GR24(%r1)
182 STREG %r25, TASK_PT_GR25(%r1)
183 STREG %r26, TASK_PT_GR26(%r1)
184 STREG %r27, TASK_PT_GR27(%r1)
185 STREG %r28, TASK_PT_GR28(%r1)
186 STREG %r0, TASK_PT_ORIG_R28(%r1)
187 STREG %r29, TASK_PT_GR29(%r1)
188 STREG %r31, TASK_PT_GR31(%r1)
189
190 ldo TASK_PT_FR0(%r1), %r27
191 save_fp %r27
192
193 mfctl %cr11, %r27
194 STREG %r27, TASK_PT_SAR(%r1)
195
196 loadgp
197
198 #ifdef CONFIG_64BIT
199 ldo -16(%r30),%r29
200 copy %r19,%r2
201 #else
202
203
204 stw %r22, -52(%r30)
205 stw %r21, -56(%r30)
206 #endif
207
208
209 mfctl %cr30, %r1
210 LDREG TI_FLAGS(%r1),%r1
211 ldi _TIF_SYSCALL_TRACE_MASK, %r19
212 and,COND(=) %r1, %r19, %r0
213 b,n .Ltracesys
214
215
216
217
218 #ifdef CONFIG_64BIT
219 ldil L%sys_call_table, %r1
220 or,= %r2,%r2,%r2
221 addil L%(sys_call_table64-sys_call_table), %r1
222 ldo R%sys_call_table(%r1), %r19
223 or,= %r2,%r2,%r2
224 ldo R%sys_call_table64(%r1), %r19
225 #else
226 load32 sys_call_table, %r19
227 #endif
228 comiclr,>> __NR_Linux_syscalls, %r20, %r0
229 b,n .Lsyscall_nosys
230
231 LDREGX %r20(%r19), %r19
232
233
234
235
236
237
238 ldi __NR_rt_sigreturn,%r2
239 comb,= %r2,%r20,.Lrt_sigreturn
240 .Lin_syscall:
241 ldil L%syscall_exit,%r2
242 be 0(%sr7,%r19)
243 ldo R%syscall_exit(%r2),%r2
244 .Lrt_sigreturn:
245 comib,<> 0,%r25,.Lin_syscall
246 ldil L%syscall_exit_rfi,%r2
247 be 0(%sr7,%r19)
248 ldo R%syscall_exit_rfi(%r2),%r2
249
250
251
252
253
254
255 .Lsyscall_nosys:
256 syscall_nosys:
257 ldil L%syscall_exit,%r1
258 be R%syscall_exit(%sr7,%r1)
259 ldo -ENOSYS(%r0),%r28
260
261
262
263
264 .Ltracesys:
265 tracesys:
266
267
268
269
270
271
272
273
274
275 ldo -THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r1
276 LDREG TI_TASK(%r1), %r1
277 ssm 0,%r2
278 STREG %r2,TASK_PT_PSW(%r1)
279 mfsp %sr0,%r2
280 STREG %r2,TASK_PT_SR0(%r1)
281 mfsp %sr1,%r2
282 STREG %r2,TASK_PT_SR1(%r1)
283 mfsp %sr2,%r2
284 STREG %r2,TASK_PT_SR2(%r1)
285 mfsp %sr3,%r2
286 STREG %r2,TASK_PT_SR3(%r1)
287 STREG %r2,TASK_PT_SR4(%r1)
288 STREG %r2,TASK_PT_SR5(%r1)
289 STREG %r2,TASK_PT_SR6(%r1)
290 STREG %r2,TASK_PT_SR7(%r1)
291 STREG %r2,TASK_PT_IASQ0(%r1)
292 STREG %r2,TASK_PT_IASQ1(%r1)
293 LDREG TASK_PT_GR31(%r1),%r2
294 STREG %r2,TASK_PT_IAOQ0(%r1)
295 ldo 4(%r2),%r2
296 STREG %r2,TASK_PT_IAOQ1(%r1)
297 ldo TASK_REGS(%r1),%r2
298
299 STREG %r3,PT_GR3(%r2)
300 STREG %r4,PT_GR4(%r2)
301 STREG %r5,PT_GR5(%r2)
302 STREG %r6,PT_GR6(%r2)
303 STREG %r7,PT_GR7(%r2)
304 STREG %r8,PT_GR8(%r2)
305 STREG %r9,PT_GR9(%r2)
306 STREG %r10,PT_GR10(%r2)
307 STREG %r11,PT_GR11(%r2)
308 STREG %r12,PT_GR12(%r2)
309 STREG %r13,PT_GR13(%r2)
310 STREG %r14,PT_GR14(%r2)
311 STREG %r15,PT_GR15(%r2)
312 STREG %r16,PT_GR16(%r2)
313 STREG %r17,PT_GR17(%r2)
314 STREG %r18,PT_GR18(%r2)
315
316
317 copy %r2,%r26
318 ldil L%do_syscall_trace_enter,%r1
319 ldil L%tracesys_next,%r2
320 be R%do_syscall_trace_enter(%sr7,%r1)
321 ldo R%tracesys_next(%r2),%r2
322
323 tracesys_next:
324
325
326
327
328 copy %ret0,%r20
329
330 ldo -THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r1
331 LDREG TI_TASK(%r1), %r1
332 LDREG TASK_PT_GR28(%r1), %r28
333 LDREG TASK_PT_GR26(%r1), %r26
334 LDREG TASK_PT_GR25(%r1), %r25
335 LDREG TASK_PT_GR24(%r1), %r24
336 LDREG TASK_PT_GR23(%r1), %r23
337 LDREG TASK_PT_GR22(%r1), %r22
338 LDREG TASK_PT_GR21(%r1), %r21
339 #ifdef CONFIG_64BIT
340 ldo -16(%r30),%r29
341 #else
342 stw %r22, -52(%r30)
343 stw %r21, -56(%r30)
344 #endif
345
346 cmpib,COND(=),n -1,%r20,tracesys_exit
347 comiclr,>> __NR_Linux_syscalls, %r20, %r0
348 b,n .Ltracesys_nosys
349
350
351
352
353 #ifdef CONFIG_64BIT
354 LDREG TASK_PT_GR30(%r1), %r19
355 extrd,u %r19,63,1,%r2
356
357 ldil L%sys_call_table, %r1
358 or,= %r2,%r2,%r2
359 addil L%(sys_call_table64-sys_call_table), %r1
360 ldo R%sys_call_table(%r1), %r19
361 or,= %r2,%r2,%r2
362 ldo R%sys_call_table64(%r1), %r19
363 #else
364 load32 sys_call_table, %r19
365 #endif
366
367 LDREGX %r20(%r19), %r19
368
369
370
371
372
373
374 ldi __NR_rt_sigreturn,%r2
375 comb,= %r2,%r20,.Ltrace_rt_sigreturn
376 .Ltrace_in_syscall:
377 ldil L%tracesys_exit,%r2
378 be 0(%sr7,%r19)
379 ldo R%tracesys_exit(%r2),%r2
380
381 .Ltracesys_nosys:
382 ldo -ENOSYS(%r0),%r28
383
384
385
386
387 tracesys_exit:
388 ldo -THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r1
389 LDREG TI_TASK(%r1), %r1
390 #ifdef CONFIG_64BIT
391 ldo -16(%r30),%r29
392 #endif
393 ldo TASK_REGS(%r1),%r26
394 BL do_syscall_trace_exit,%r2
395 STREG %r28,TASK_PT_GR28(%r1)
396 ldo -THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r1
397 LDREG TI_TASK(%r1), %r1
398 LDREG TASK_PT_GR28(%r1), %r28
399
400 ldil L%syscall_exit,%r1
401 be,n R%syscall_exit(%sr7,%r1)
402
403 .Ltrace_rt_sigreturn:
404 comib,<> 0,%r25,.Ltrace_in_syscall
405 ldil L%tracesys_sigexit,%r2
406 be 0(%sr7,%r19)
407 ldo R%tracesys_sigexit(%r2),%r2
408
409 tracesys_sigexit:
410 ldo -THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r1
411 LDREG TI_TASK(%r1), %r1
412 #ifdef CONFIG_64BIT
413 ldo -16(%r30),%r29
414 #endif
415 BL do_syscall_trace_exit,%r2
416 ldo TASK_REGS(%r1),%r26
417
418 ldil L%syscall_exit_rfi,%r1
419 be,n R%syscall_exit_rfi(%sr7,%r1)
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474 lws_start:
475
476 #ifdef CONFIG_64BIT
477 ssm PSW_SM_W, %r1
478 extrd,u %r1,PSW_W_BIT,1,%r1
479
480
481 or,ev %r1,%r30,%r30
482
483
484 depdi 0, 31, 32, %r20
485 #endif
486
487
488 comiclr,>> __NR_lws_entries, %r20, %r0
489 b,n lws_exit_nosys
490
491
492 ldil L%lws_table, %r1
493 ldo R%lws_table(%r1), %r28
494 LDREGX %r20(%sr2,r28), %r21
495
496
497 be,n 0(%sr2,%r21)
498
499 lws_exit_nosys:
500 ldo -ENOSYS(%r0),%r21
501
502
503 lws_exit:
504 #ifdef CONFIG_64BIT
505
506
507
508
509 extrd,u,*<> %r30,63,1,%r1
510 rsm PSW_SM_W, %r0
511
512 xor %r30,%r1,%r30
513 #endif
514 be,n 0(%sr7, %r31)
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546 #define ENABLE_LWS_DEBUG 0
547
548
549 lws_compare_and_swap64:
550 #ifdef CONFIG_64BIT
551 b,n lws_compare_and_swap
552 #else
553
554
555
556
557 b,n lws_exit_nosys
558 #endif
559
560
561 lws_compare_and_swap32:
562 #ifdef CONFIG_64BIT
563
564 depdi 0, 31, 32, %r26
565 depdi 0, 31, 32, %r25
566 depdi 0, 31, 32, %r24
567 #endif
568
569 lws_compare_and_swap:
570
571 ldil L%lws_lock_start, %r20
572 ldo R%lws_lock_start(%r20), %r28
573
574
575 extru %r26, 27, 4, %r20
576
577
578
579
580 shlw %r20, 4, %r20
581 add %r20, %r28, %r20
582
583 # if ENABLE_LWS_DEBUG
584
585
586
587
588
589
590
591 ldw 4(%sr2,%r20), %r28
592
593 mfctl %cr27, %r21
594 cmpb,<>,n %r21, %r28, cas_lock
595 b lws_exit
596 ldo -EDEADLOCK(%r0), %r21
597 cas_lock:
598 cmpb,=,n %r0, %r28, cas_nocontend
599 ldo 1(%r0), %r28
600 b lws_exit
601 ldo -EAGAIN(%r0), %r21
602 cas_nocontend:
603 # endif
604
605
606 rsm PSW_SM_I, %r0
607
608 LDCW 0(%sr2,%r20), %r28
609 cmpb,<>,n %r0, %r28, cas_action
610 cas_wouldblock:
611 ldo 2(%r0), %r28
612 ssm PSW_SM_I, %r0
613 b lws_exit
614 ldo -EAGAIN(%r0), %r21
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632 cas_action:
633 #if defined CONFIG_SMP && ENABLE_LWS_DEBUG
634
635 mfctl %cr27, %r1
636 stw %r1, 4(%sr2,%r20)
637 #endif
638
639 1: ldw 0(%r26), %r28
640 sub,<> %r28, %r25, %r0
641 2: stw %r24, 0(%r26)
642
643 #ifdef CONFIG_SMP
644 98: LDCW 0(%sr2,%r20), %r1
645 99: ALTERNATIVE(98b, 99b, ALT_COND_NO_SMP, INSN_NOP)
646 #endif
647 stw %r20, 0(%sr2,%r20)
648 #if ENABLE_LWS_DEBUG
649
650 stw %r0, 4(%sr2,%r20)
651 #endif
652
653 ssm PSW_SM_I, %r0
654
655 b lws_exit
656 copy %r0, %r21
657
658 3:
659
660
661 #ifdef CONFIG_SMP
662 98: LDCW 0(%sr2,%r20), %r1
663 99: ALTERNATIVE(98b, 99b, ALT_COND_NO_SMP, INSN_NOP)
664 #endif
665 stw %r20, 0(%sr2,%r20)
666 #if ENABLE_LWS_DEBUG
667 stw %r0, 4(%sr2,%r20)
668 #endif
669 ssm PSW_SM_I, %r0
670 b lws_exit
671 ldo -EFAULT(%r0),%r21
672 nop
673 nop
674 nop
675 nop
676
677
678
679
680 ASM_EXCEPTIONTABLE_ENTRY(1b-linux_gateway_page, 3b-linux_gateway_page)
681 ASM_EXCEPTIONTABLE_ENTRY(2b-linux_gateway_page, 3b-linux_gateway_page)
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706 lws_compare_and_swap_2:
707 #ifdef CONFIG_64BIT
708
709
710 depdi 0, 31, 32, %r26
711 depdi 0, 31, 32, %r25
712 depdi 0, 31, 32, %r24
713 #endif
714
715
716 subi,>>= 3, %r23, %r0
717 b,n lws_exit_nosys
718
719
720
721 shlw %r23, 2, %r29
722 blr %r29, %r0
723 nop
724
725
726 4: ldb 0(%r25), %r25
727 b cas2_lock_start
728 5: ldb 0(%r24), %r24
729 nop
730 nop
731 nop
732 nop
733 nop
734
735
736 6: ldh 0(%r25), %r25
737 b cas2_lock_start
738 7: ldh 0(%r24), %r24
739 nop
740 nop
741 nop
742 nop
743 nop
744
745
746 8: ldw 0(%r25), %r25
747 b cas2_lock_start
748 9: ldw 0(%r24), %r24
749 nop
750 nop
751 nop
752 nop
753 nop
754
755
756 #ifdef CONFIG_64BIT
757 10: ldd 0(%r25), %r25
758 11: ldd 0(%r24), %r24
759 #else
760
761 10: ldw 0(%r25), %r22
762 11: ldw 4(%r25), %r23
763
764 12: flddx 0(%r24), %fr4
765 #endif
766
767 cas2_lock_start:
768
769 ldil L%lws_lock_start, %r20
770 ldo R%lws_lock_start(%r20), %r28
771
772
773 extru %r26, 27, 4, %r20
774
775
776
777
778 shlw %r20, 4, %r20
779 add %r20, %r28, %r20
780
781 rsm PSW_SM_I, %r0
782
783 LDCW 0(%sr2,%r20), %r28
784 cmpb,<>,n %r0, %r28, cas2_action
785 cas2_wouldblock:
786 ldo 2(%r0), %r28
787 ssm PSW_SM_I, %r0
788 b lws_exit
789 ldo -EAGAIN(%r0), %r21
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807 cas2_action:
808
809 blr %r29, %r0
810
811 ldo 1(%r0),%r28
812
813
814 13: ldb 0(%r26), %r29
815 sub,= %r29, %r25, %r0
816 b,n cas2_end
817 14: stb %r24, 0(%r26)
818 b cas2_end
819 copy %r0, %r28
820 nop
821 nop
822
823
824 15: ldh 0(%r26), %r29
825 sub,= %r29, %r25, %r0
826 b,n cas2_end
827 16: sth %r24, 0(%r26)
828 b cas2_end
829 copy %r0, %r28
830 nop
831 nop
832
833
834 17: ldw 0(%r26), %r29
835 sub,= %r29, %r25, %r0
836 b,n cas2_end
837 18: stw %r24, 0(%r26)
838 b cas2_end
839 copy %r0, %r28
840 nop
841 nop
842
843
844 #ifdef CONFIG_64BIT
845 19: ldd 0(%r26), %r29
846 sub,*= %r29, %r25, %r0
847 b,n cas2_end
848 20: std %r24, 0(%r26)
849 copy %r0, %r28
850 #else
851
852 19: ldw 0(%r26), %r29
853 sub,= %r29, %r22, %r0
854 b,n cas2_end
855
856 20: ldw 4(%r26), %r29
857 sub,= %r29, %r23, %r0
858 b,n cas2_end
859
860 21: fstdx %fr4, 0(%r26)
861 copy %r0, %r28
862 #endif
863
864 cas2_end:
865
866 #ifdef CONFIG_SMP
867 98: LDCW 0(%sr2,%r20), %r1
868 99: ALTERNATIVE(98b, 99b, ALT_COND_NO_SMP, INSN_NOP)
869 #endif
870 stw %r20, 0(%sr2,%r20)
871
872 ssm PSW_SM_I, %r0
873
874 b lws_exit
875 copy %r0, %r21
876
877 22:
878
879
880 #ifdef CONFIG_SMP
881 98: LDCW 0(%sr2,%r20), %r1
882 99: ALTERNATIVE(98b, 99b, ALT_COND_NO_SMP, INSN_NOP)
883 #endif
884 stw %r20, 0(%sr2,%r20)
885 ssm PSW_SM_I, %r0
886 ldo 1(%r0),%r28
887 b lws_exit
888 ldo -EFAULT(%r0),%r21
889 nop
890 nop
891 nop
892
893
894
895 ASM_EXCEPTIONTABLE_ENTRY(4b-linux_gateway_page, 22b-linux_gateway_page)
896 ASM_EXCEPTIONTABLE_ENTRY(5b-linux_gateway_page, 22b-linux_gateway_page)
897 ASM_EXCEPTIONTABLE_ENTRY(6b-linux_gateway_page, 22b-linux_gateway_page)
898 ASM_EXCEPTIONTABLE_ENTRY(7b-linux_gateway_page, 22b-linux_gateway_page)
899 ASM_EXCEPTIONTABLE_ENTRY(8b-linux_gateway_page, 22b-linux_gateway_page)
900 ASM_EXCEPTIONTABLE_ENTRY(9b-linux_gateway_page, 22b-linux_gateway_page)
901 ASM_EXCEPTIONTABLE_ENTRY(10b-linux_gateway_page, 22b-linux_gateway_page)
902 ASM_EXCEPTIONTABLE_ENTRY(11b-linux_gateway_page, 22b-linux_gateway_page)
903 ASM_EXCEPTIONTABLE_ENTRY(13b-linux_gateway_page, 22b-linux_gateway_page)
904 ASM_EXCEPTIONTABLE_ENTRY(14b-linux_gateway_page, 22b-linux_gateway_page)
905 ASM_EXCEPTIONTABLE_ENTRY(15b-linux_gateway_page, 22b-linux_gateway_page)
906 ASM_EXCEPTIONTABLE_ENTRY(16b-linux_gateway_page, 22b-linux_gateway_page)
907 ASM_EXCEPTIONTABLE_ENTRY(17b-linux_gateway_page, 22b-linux_gateway_page)
908 ASM_EXCEPTIONTABLE_ENTRY(18b-linux_gateway_page, 22b-linux_gateway_page)
909 ASM_EXCEPTIONTABLE_ENTRY(19b-linux_gateway_page, 22b-linux_gateway_page)
910 ASM_EXCEPTIONTABLE_ENTRY(20b-linux_gateway_page, 22b-linux_gateway_page)
911 #ifndef CONFIG_64BIT
912 ASM_EXCEPTIONTABLE_ENTRY(12b-linux_gateway_page, 22b-linux_gateway_page)
913 ASM_EXCEPTIONTABLE_ENTRY(21b-linux_gateway_page, 22b-linux_gateway_page)
914 #endif
915
916
917 .align PAGE_SIZE
918 END(linux_gateway_page)
919 ENTRY(end_linux_gateway_page)
920
921
922
923
924 #define LWS_ENTRY(_name_) ASM_ULONG_INSN (lws_##_name_ - linux_gateway_page)
925
926 .section .rodata,"a"
927
928 .align 8
929
930
931 ENTRY(lws_table)
932 LWS_ENTRY(compare_and_swap32)
933 LWS_ENTRY(compare_and_swap64)
934 LWS_ENTRY(compare_and_swap_2)
935 END(lws_table)
936
937
938 #define __SYSCALL(nr, entry, nargs) ASM_ULONG_INSN entry
939 .align 8
940 ENTRY(sys_call_table)
941 .export sys_call_table,data
942 #ifdef CONFIG_64BIT
943 #include <asm/syscall_table_c32.h>
944 #else
945 #include <asm/syscall_table_32.h>
946 #endif
947 END(sys_call_table)
948
949 #ifdef CONFIG_64BIT
950 .align 8
951 ENTRY(sys_call_table64)
952 #include <asm/syscall_table_64.h>
953 END(sys_call_table64)
954 #endif
955 #undef __SYSCALL
956
957
958
959
960
961
962
963
964
965 .section .data
966 .align L1_CACHE_BYTES
967 ENTRY(lws_lock_start)
968
969 .rept 16
970
971 .word 1
972 .word 0
973 .word 0
974 .word 0
975 .endr
976 END(lws_lock_start)
977 .previous
978
979 .end
980
981