forked from ~ljy/RK356X_SDK_RELEASE

hc
2023-12-08 01573e231f18eb2d99162747186f59511f56b64d
kernel/arch/ia64/kernel/entry.S
....@@ -38,12 +38,12 @@
3838 */
3939
4040
41
+#include <linux/pgtable.h>
4142 #include <asm/asmmacro.h>
4243 #include <asm/cache.h>
4344 #include <asm/errno.h>
4445 #include <asm/kregs.h>
4546 #include <asm/asm-offsets.h>
46
-#include <asm/pgtable.h>
4747 #include <asm/percpu.h>
4848 #include <asm/processor.h>
4949 #include <asm/thread_info.h>
....@@ -112,19 +112,16 @@
112112 .prologue ASM_UNW_PRLG_RP|ASM_UNW_PRLG_PFS, ASM_UNW_PRLG_GRSAVE(8)
113113 alloc r16=ar.pfs,8,2,6,0
114114 DO_SAVE_SWITCH_STACK
115
- adds r2=PT(R16)+IA64_SWITCH_STACK_SIZE+16,sp
116115 mov loc0=rp
117
- mov loc1=r16 // save ar.pfs across do_fork
116
+ mov loc1=r16 // save ar.pfs across ia64_clone
118117 .body
118
+ mov out0=in0
119119 mov out1=in1
120120 mov out2=in2
121
- tbit.nz p6,p0=in0,CLONE_SETTLS_BIT
122
- mov out3=in3 // parent_tidptr: valid only w/CLONE_PARENT_SETTID
123
- ;;
124
-(p6) st8 [r2]=in5 // store TLS in r16 for copy_thread()
125
- mov out4=in4 // child_tidptr: valid only w/CLONE_CHILD_SETTID or CLONE_CHILD_CLEARTID
126
- mov out0=in0 // out0 = clone_flags
127
- br.call.sptk.many rp=do_fork
121
+ mov out3=in3
122
+ mov out4=in4
123
+ mov out5=in5
124
+ br.call.sptk.many rp=ia64_clone
128125 .ret1: .restore sp
129126 adds sp=IA64_SWITCH_STACK_SIZE,sp // pop the switch stack
130127 mov ar.pfs=loc1
....@@ -143,19 +140,16 @@
143140 .prologue ASM_UNW_PRLG_RP|ASM_UNW_PRLG_PFS, ASM_UNW_PRLG_GRSAVE(8)
144141 alloc r16=ar.pfs,8,2,6,0
145142 DO_SAVE_SWITCH_STACK
146
- adds r2=PT(R16)+IA64_SWITCH_STACK_SIZE+16,sp
147143 mov loc0=rp
148
- mov loc1=r16 // save ar.pfs across do_fork
144
+ mov loc1=r16 // save ar.pfs across ia64_clone
149145 .body
146
+ mov out0=in0
150147 mov out1=in1
151148 mov out2=16 // stacksize (compensates for 16-byte scratch area)
152
- tbit.nz p6,p0=in0,CLONE_SETTLS_BIT
153
- mov out3=in2 // parent_tidptr: valid only w/CLONE_PARENT_SETTID
154
- ;;
155
-(p6) st8 [r2]=in4 // store TLS in r13 (tp)
156
- mov out4=in3 // child_tidptr: valid only w/CLONE_CHILD_SETTID or CLONE_CHILD_CLEARTID
157
- mov out0=in0 // out0 = clone_flags
158
- br.call.sptk.many rp=do_fork
149
+ mov out3=in3
150
+ mov out4=in4
151
+ mov out5=in5
152
+ br.call.sptk.many rp=ia64_clone
159153 .ret2: .restore sp
160154 adds sp=IA64_SWITCH_STACK_SIZE,sp // pop the switch stack
161155 mov ar.pfs=loc1
....@@ -590,7 +584,7 @@
590584 nop.i 0
591585 /*
592586 * We need to call schedule_tail() to complete the scheduling process.
593
- * Called by ia64_switch_to() after do_fork()->copy_thread(). r8 contains the
587
+ * Called by ia64_switch_to() after ia64_clone()->copy_thread(). r8 contains the
594588 * address of the previously executing task.
595589 */
596590 br.call.sptk.many rp=ia64_invoke_schedule_tail
....@@ -670,12 +664,12 @@
670664 *
671665 * p6 controls whether current_thread_info()->flags needs to be check for
672666 * extra work. We always check for extra work when returning to user-level.
673
- * With CONFIG_PREEMPT, we also check for extra work when the preempt_count
667
+ * With CONFIG_PREEMPTION, we also check for extra work when the preempt_count
674668 * is 0. After extra work processing has been completed, execution
675669 * resumes at ia64_work_processed_syscall with p6 set to 1 if the extra-work-check
676670 * needs to be redone.
677671 */
678
-#ifdef CONFIG_PREEMPT
672
+#ifdef CONFIG_PREEMPTION
679673 RSM_PSR_I(p0, r2, r18) // disable interrupts
680674 cmp.eq pLvSys,p0=r0,r0 // pLvSys=1: leave from syscall
681675 (pKStk) adds r20=TI_PRE_COUNT+IA64_TASK_SIZE,r13
....@@ -685,7 +679,7 @@
685679 (pUStk) mov r21=0 // r21 <- 0
686680 ;;
687681 cmp.eq p6,p0=r21,r0 // p6 <- pUStk || (preempt_count == 0)
688
-#else /* !CONFIG_PREEMPT */
682
+#else /* !CONFIG_PREEMPTION */
689683 RSM_PSR_I(pUStk, r2, r18)
690684 cmp.eq pLvSys,p0=r0,r0 // pLvSys=1: leave from syscall
691685 (pUStk) cmp.eq.unc p6,p0=r0,r0 // p6 <- pUStk
....@@ -814,12 +808,12 @@
814808 *
815809 * p6 controls whether current_thread_info()->flags needs to be check for
816810 * extra work. We always check for extra work when returning to user-level.
817
- * With CONFIG_PREEMPT, we also check for extra work when the preempt_count
811
+ * With CONFIG_PREEMPTION, we also check for extra work when the preempt_count
818812 * is 0. After extra work processing has been completed, execution
819813 * resumes at .work_processed_syscall with p6 set to 1 if the extra-work-check
820814 * needs to be redone.
821815 */
822
-#ifdef CONFIG_PREEMPT
816
+#ifdef CONFIG_PREEMPTION
823817 RSM_PSR_I(p0, r17, r31) // disable interrupts
824818 cmp.eq p0,pLvSys=r0,r0 // pLvSys=0: leave from kernel
825819 (pKStk) adds r20=TI_PRE_COUNT+IA64_TASK_SIZE,r13
....@@ -1120,7 +1114,7 @@
11201114
11211115 /*
11221116 * On entry:
1123
- * r20 = &current->thread_info->pre_count (if CONFIG_PREEMPT)
1117
+ * r20 = &current->thread_info->pre_count (if CONFIG_PREEMPTION)
11241118 * r31 = current->thread_info->flags
11251119 * On exit:
11261120 * p6 = TRUE if work-pending-check needs to be redone
....@@ -1426,335 +1420,10 @@
14261420
14271421 #endif /* CONFIG_FUNCTION_TRACER */
14281422
1423
+#define __SYSCALL(nr, entry, nargs) data8 entry
14291424 .rodata
14301425 .align 8
14311426 .globl sys_call_table
14321427 sys_call_table:
1433
- data8 sys_ni_syscall // This must be sys_ni_syscall! See ivt.S.
1434
- data8 sys_exit // 1025
1435
- data8 sys_read
1436
- data8 sys_write
1437
- data8 sys_open
1438
- data8 sys_close
1439
- data8 sys_creat // 1030
1440
- data8 sys_link
1441
- data8 sys_unlink
1442
- data8 ia64_execve
1443
- data8 sys_chdir
1444
- data8 sys_fchdir // 1035
1445
- data8 sys_utimes
1446
- data8 sys_mknod
1447
- data8 sys_chmod
1448
- data8 sys_chown
1449
- data8 sys_lseek // 1040
1450
- data8 sys_getpid
1451
- data8 sys_getppid
1452
- data8 sys_mount
1453
- data8 sys_umount
1454
- data8 sys_setuid // 1045
1455
- data8 sys_getuid
1456
- data8 sys_geteuid
1457
- data8 sys_ptrace
1458
- data8 sys_access
1459
- data8 sys_sync // 1050
1460
- data8 sys_fsync
1461
- data8 sys_fdatasync
1462
- data8 sys_kill
1463
- data8 sys_rename
1464
- data8 sys_mkdir // 1055
1465
- data8 sys_rmdir
1466
- data8 sys_dup
1467
- data8 sys_ia64_pipe
1468
- data8 sys_times
1469
- data8 ia64_brk // 1060
1470
- data8 sys_setgid
1471
- data8 sys_getgid
1472
- data8 sys_getegid
1473
- data8 sys_acct
1474
- data8 sys_ioctl // 1065
1475
- data8 sys_fcntl
1476
- data8 sys_umask
1477
- data8 sys_chroot
1478
- data8 sys_ustat
1479
- data8 sys_dup2 // 1070
1480
- data8 sys_setreuid
1481
- data8 sys_setregid
1482
- data8 sys_getresuid
1483
- data8 sys_setresuid
1484
- data8 sys_getresgid // 1075
1485
- data8 sys_setresgid
1486
- data8 sys_getgroups
1487
- data8 sys_setgroups
1488
- data8 sys_getpgid
1489
- data8 sys_setpgid // 1080
1490
- data8 sys_setsid
1491
- data8 sys_getsid
1492
- data8 sys_sethostname
1493
- data8 sys_setrlimit
1494
- data8 sys_getrlimit // 1085
1495
- data8 sys_getrusage
1496
- data8 sys_gettimeofday
1497
- data8 sys_settimeofday
1498
- data8 sys_select
1499
- data8 sys_poll // 1090
1500
- data8 sys_symlink
1501
- data8 sys_readlink
1502
- data8 sys_uselib
1503
- data8 sys_swapon
1504
- data8 sys_swapoff // 1095
1505
- data8 sys_reboot
1506
- data8 sys_truncate
1507
- data8 sys_ftruncate
1508
- data8 sys_fchmod
1509
- data8 sys_fchown // 1100
1510
- data8 ia64_getpriority
1511
- data8 sys_setpriority
1512
- data8 sys_statfs
1513
- data8 sys_fstatfs
1514
- data8 sys_gettid // 1105
1515
- data8 sys_semget
1516
- data8 sys_semop
1517
- data8 sys_semctl
1518
- data8 sys_msgget
1519
- data8 sys_msgsnd // 1110
1520
- data8 sys_msgrcv
1521
- data8 sys_msgctl
1522
- data8 sys_shmget
1523
- data8 sys_shmat
1524
- data8 sys_shmdt // 1115
1525
- data8 sys_shmctl
1526
- data8 sys_syslog
1527
- data8 sys_setitimer
1528
- data8 sys_getitimer
1529
- data8 sys_ni_syscall // 1120 /* was: ia64_oldstat */
1530
- data8 sys_ni_syscall /* was: ia64_oldlstat */
1531
- data8 sys_ni_syscall /* was: ia64_oldfstat */
1532
- data8 sys_vhangup
1533
- data8 sys_lchown
1534
- data8 sys_remap_file_pages // 1125
1535
- data8 sys_wait4
1536
- data8 sys_sysinfo
1537
- data8 sys_clone
1538
- data8 sys_setdomainname
1539
- data8 sys_newuname // 1130
1540
- data8 sys_adjtimex
1541
- data8 sys_ni_syscall /* was: ia64_create_module */
1542
- data8 sys_init_module
1543
- data8 sys_delete_module
1544
- data8 sys_ni_syscall // 1135 /* was: sys_get_kernel_syms */
1545
- data8 sys_ni_syscall /* was: sys_query_module */
1546
- data8 sys_quotactl
1547
- data8 sys_bdflush
1548
- data8 sys_sysfs
1549
- data8 sys_personality // 1140
1550
- data8 sys_ni_syscall // sys_afs_syscall
1551
- data8 sys_setfsuid
1552
- data8 sys_setfsgid
1553
- data8 sys_getdents
1554
- data8 sys_flock // 1145
1555
- data8 sys_readv
1556
- data8 sys_writev
1557
- data8 sys_pread64
1558
- data8 sys_pwrite64
1559
- data8 sys_sysctl // 1150
1560
- data8 sys_mmap
1561
- data8 sys_munmap
1562
- data8 sys_mlock
1563
- data8 sys_mlockall
1564
- data8 sys_mprotect // 1155
1565
- data8 ia64_mremap
1566
- data8 sys_msync
1567
- data8 sys_munlock
1568
- data8 sys_munlockall
1569
- data8 sys_sched_getparam // 1160
1570
- data8 sys_sched_setparam
1571
- data8 sys_sched_getscheduler
1572
- data8 sys_sched_setscheduler
1573
- data8 sys_sched_yield
1574
- data8 sys_sched_get_priority_max // 1165
1575
- data8 sys_sched_get_priority_min
1576
- data8 sys_sched_rr_get_interval
1577
- data8 sys_nanosleep
1578
- data8 sys_ni_syscall // old nfsservctl
1579
- data8 sys_prctl // 1170
1580
- data8 sys_getpagesize
1581
- data8 sys_mmap2
1582
- data8 sys_pciconfig_read
1583
- data8 sys_pciconfig_write
1584
- data8 sys_perfmonctl // 1175
1585
- data8 sys_sigaltstack
1586
- data8 sys_rt_sigaction
1587
- data8 sys_rt_sigpending
1588
- data8 sys_rt_sigprocmask
1589
- data8 sys_rt_sigqueueinfo // 1180
1590
- data8 sys_rt_sigreturn
1591
- data8 sys_rt_sigsuspend
1592
- data8 sys_rt_sigtimedwait
1593
- data8 sys_getcwd
1594
- data8 sys_capget // 1185
1595
- data8 sys_capset
1596
- data8 sys_sendfile64
1597
- data8 sys_ni_syscall // sys_getpmsg (STREAMS)
1598
- data8 sys_ni_syscall // sys_putpmsg (STREAMS)
1599
- data8 sys_socket // 1190
1600
- data8 sys_bind
1601
- data8 sys_connect
1602
- data8 sys_listen
1603
- data8 sys_accept
1604
- data8 sys_getsockname // 1195
1605
- data8 sys_getpeername
1606
- data8 sys_socketpair
1607
- data8 sys_send
1608
- data8 sys_sendto
1609
- data8 sys_recv // 1200
1610
- data8 sys_recvfrom
1611
- data8 sys_shutdown
1612
- data8 sys_setsockopt
1613
- data8 sys_getsockopt
1614
- data8 sys_sendmsg // 1205
1615
- data8 sys_recvmsg
1616
- data8 sys_pivot_root
1617
- data8 sys_mincore
1618
- data8 sys_madvise
1619
- data8 sys_newstat // 1210
1620
- data8 sys_newlstat
1621
- data8 sys_newfstat
1622
- data8 sys_clone2
1623
- data8 sys_getdents64
1624
- data8 sys_getunwind // 1215
1625
- data8 sys_readahead
1626
- data8 sys_setxattr
1627
- data8 sys_lsetxattr
1628
- data8 sys_fsetxattr
1629
- data8 sys_getxattr // 1220
1630
- data8 sys_lgetxattr
1631
- data8 sys_fgetxattr
1632
- data8 sys_listxattr
1633
- data8 sys_llistxattr
1634
- data8 sys_flistxattr // 1225
1635
- data8 sys_removexattr
1636
- data8 sys_lremovexattr
1637
- data8 sys_fremovexattr
1638
- data8 sys_tkill
1639
- data8 sys_futex // 1230
1640
- data8 sys_sched_setaffinity
1641
- data8 sys_sched_getaffinity
1642
- data8 sys_set_tid_address
1643
- data8 sys_fadvise64_64
1644
- data8 sys_tgkill // 1235
1645
- data8 sys_exit_group
1646
- data8 sys_lookup_dcookie
1647
- data8 sys_io_setup
1648
- data8 sys_io_destroy
1649
- data8 sys_io_getevents // 1240
1650
- data8 sys_io_submit
1651
- data8 sys_io_cancel
1652
- data8 sys_epoll_create
1653
- data8 sys_epoll_ctl
1654
- data8 sys_epoll_wait // 1245
1655
- data8 sys_restart_syscall
1656
- data8 sys_semtimedop
1657
- data8 sys_timer_create
1658
- data8 sys_timer_settime
1659
- data8 sys_timer_gettime // 1250
1660
- data8 sys_timer_getoverrun
1661
- data8 sys_timer_delete
1662
- data8 sys_clock_settime
1663
- data8 sys_clock_gettime
1664
- data8 sys_clock_getres // 1255
1665
- data8 sys_clock_nanosleep
1666
- data8 sys_fstatfs64
1667
- data8 sys_statfs64
1668
- data8 sys_mbind
1669
- data8 sys_get_mempolicy // 1260
1670
- data8 sys_set_mempolicy
1671
- data8 sys_mq_open
1672
- data8 sys_mq_unlink
1673
- data8 sys_mq_timedsend
1674
- data8 sys_mq_timedreceive // 1265
1675
- data8 sys_mq_notify
1676
- data8 sys_mq_getsetattr
1677
- data8 sys_kexec_load
1678
- data8 sys_ni_syscall // reserved for vserver
1679
- data8 sys_waitid // 1270
1680
- data8 sys_add_key
1681
- data8 sys_request_key
1682
- data8 sys_keyctl
1683
- data8 sys_ioprio_set
1684
- data8 sys_ioprio_get // 1275
1685
- data8 sys_move_pages
1686
- data8 sys_inotify_init
1687
- data8 sys_inotify_add_watch
1688
- data8 sys_inotify_rm_watch
1689
- data8 sys_migrate_pages // 1280
1690
- data8 sys_openat
1691
- data8 sys_mkdirat
1692
- data8 sys_mknodat
1693
- data8 sys_fchownat
1694
- data8 sys_futimesat // 1285
1695
- data8 sys_newfstatat
1696
- data8 sys_unlinkat
1697
- data8 sys_renameat
1698
- data8 sys_linkat
1699
- data8 sys_symlinkat // 1290
1700
- data8 sys_readlinkat
1701
- data8 sys_fchmodat
1702
- data8 sys_faccessat
1703
- data8 sys_pselect6
1704
- data8 sys_ppoll // 1295
1705
- data8 sys_unshare
1706
- data8 sys_splice
1707
- data8 sys_set_robust_list
1708
- data8 sys_get_robust_list
1709
- data8 sys_sync_file_range // 1300
1710
- data8 sys_tee
1711
- data8 sys_vmsplice
1712
- data8 sys_fallocate
1713
- data8 sys_getcpu
1714
- data8 sys_epoll_pwait // 1305
1715
- data8 sys_utimensat
1716
- data8 sys_signalfd
1717
- data8 sys_ni_syscall
1718
- data8 sys_eventfd
1719
- data8 sys_timerfd_create // 1310
1720
- data8 sys_timerfd_settime
1721
- data8 sys_timerfd_gettime
1722
- data8 sys_signalfd4
1723
- data8 sys_eventfd2
1724
- data8 sys_epoll_create1 // 1315
1725
- data8 sys_dup3
1726
- data8 sys_pipe2
1727
- data8 sys_inotify_init1
1728
- data8 sys_preadv
1729
- data8 sys_pwritev // 1320
1730
- data8 sys_rt_tgsigqueueinfo
1731
- data8 sys_recvmmsg
1732
- data8 sys_fanotify_init
1733
- data8 sys_fanotify_mark
1734
- data8 sys_prlimit64 // 1325
1735
- data8 sys_name_to_handle_at
1736
- data8 sys_open_by_handle_at
1737
- data8 sys_clock_adjtime
1738
- data8 sys_syncfs
1739
- data8 sys_setns // 1330
1740
- data8 sys_sendmmsg
1741
- data8 sys_process_vm_readv
1742
- data8 sys_process_vm_writev
1743
- data8 sys_accept4
1744
- data8 sys_finit_module // 1335
1745
- data8 sys_sched_setattr
1746
- data8 sys_sched_getattr
1747
- data8 sys_renameat2
1748
- data8 sys_getrandom
1749
- data8 sys_memfd_create // 1340
1750
- data8 sys_bpf
1751
- data8 sys_execveat
1752
- data8 sys_userfaultfd
1753
- data8 sys_membarrier
1754
- data8 sys_kcmp // 1345
1755
- data8 sys_mlock2
1756
- data8 sys_copy_file_range
1757
- data8 sys_preadv2
1758
- data8 sys_pwritev2
1759
-
1760
- .org sys_call_table + 8*NR_syscalls // guard against failures to increase NR_syscalls
1428
+#include <asm/syscall_table.h>
1429
+#undef __SYSCALL