mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-18 14:36:43 +07:00
arch/csky patches for 5.0-rc1
Here is some fixup patches for 5.0-rc1: - fixup compile error with pte_alloc - fixup handle_irq_perbit break irq flow - fixup CACHEV1 store instruction fast retire - fixup module relocation error with 807 & 860 - add csky kernel features -----BEGIN PGP SIGNATURE----- iQJGBAABCAAwFiEE2KAv+isbWR/viAKHAXH1GYaIxXsFAlw2B44SHHJlbl9ndW9A Yy1za3kuY29tAAoJEAFx9RmGiMV76F4P/0QnfpBubVftZF5MbU0idHeS9JIAOUPY G1r28G18YclHKLllQW/Ejt7OtI616ZfVnGPfq92KVkH6aZq4b1+pYdUbpHhhq+44 jtTpVYWjq6OGm2/tyWviP6uK2TXVhxgwj5RVdPcwyOh0Ey326DUfT8qBJsZq6Gbj DwESqVuFJD6aY+rQxKI3ukqgZYvCaszjo1qabRNj0HnFl+QG5uWdYbxSaF5P7hWt z//hgF3rIllRqdj4Q2i69jiXcwzFIRS3PdO2np0R8YybKbx+QZ6x7YnxSxB3Z9Xx qsgxO/pLuiNN+dQs4qgy725UwtWBStOFHJX9BR30Vx1WD+u1QH+VBtGwCOBxFEnJ DY6gCsoyyY0m4tZTJ10xilzV5mbpcsuqWBNcjmENXz4RnYmh8XoF/ubQ0XInTSGH egMmWDkKuSCgTjHD0pGAHrW24rCcWrpdUHAklooTMB/dUIlure6NbAgbaGZtKp+/ DbZde4daXLwONuLQPQEVZY2KDmavlg7hA0MEVwoC+CiPfxHIJZmTZyoamj/tH9Xf wfdagb3qMlIznmMOsd6vQSWCWYzLbyEXNHxWVXp24dOJFVMWjqDpZjvzImGG740D +NCJuDAYFYBMBmRnD/BpSD0pFZfOqEXXcWHGjftobxKmASDj0wFK5lusHvqvU4a1 h6zPbTq+UV3Z =hxrq -----END PGP SIGNATURE----- Merge tag 'csky-for-linus-5.0-rc1' of git://github.com/c-sky/csky-linux Pull arch/csky bug fixes from Guo Ren: "Here are some fixup patches for 5.0-rc1: - fix compile error with pte_alloc - fix handle_irq_perbit break irq flow - fix CACHEV1 store instruction fast retire - fix module relocation error with 807 & 860 - add csky kernel features to documentation" * tag 'csky-for-linus-5.0-rc1' of git://github.com/c-sky/csky-linux: irqchip/csky: fixup handle_irq_perbit break irq csky: fixup compile error with pte_alloc csky: fixup CACHEV1 store instruction fast retire csky: fixup relocation error with 807 & 860 Documentation/features: Add csky kernel features
This commit is contained in:
commit
4064e47c82
@ -11,6 +11,7 @@
|
|||||||
| arm: | TODO |
|
| arm: | TODO |
|
||||||
| arm64: | TODO |
|
| arm64: | TODO |
|
||||||
| c6x: | TODO |
|
| c6x: | TODO |
|
||||||
|
| csky: | TODO |
|
||||||
| h8300: | TODO |
|
| h8300: | TODO |
|
||||||
| hexagon: | TODO |
|
| hexagon: | TODO |
|
||||||
| ia64: | TODO |
|
| ia64: | TODO |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | ok |
|
| arm: | ok |
|
||||||
| arm64: | ok |
|
| arm64: | ok |
|
||||||
| c6x: | TODO |
|
| c6x: | TODO |
|
||||||
|
| csky: | TODO |
|
||||||
| h8300: | TODO |
|
| h8300: | TODO |
|
||||||
| hexagon: | TODO |
|
| hexagon: | TODO |
|
||||||
| ia64: | TODO |
|
| ia64: | TODO |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | ok |
|
| arm: | ok |
|
||||||
| arm64: | ok |
|
| arm64: | ok |
|
||||||
| c6x: | TODO |
|
| c6x: | TODO |
|
||||||
|
| csky: | ok |
|
||||||
| h8300: | TODO |
|
| h8300: | TODO |
|
||||||
| hexagon: | ok |
|
| hexagon: | ok |
|
||||||
| ia64: | ok |
|
| ia64: | ok |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | ok |
|
| arm: | ok |
|
||||||
| arm64: | ok |
|
| arm64: | ok |
|
||||||
| c6x: | TODO |
|
| c6x: | TODO |
|
||||||
|
| csky: | TODO |
|
||||||
| h8300: | TODO |
|
| h8300: | TODO |
|
||||||
| hexagon: | TODO |
|
| hexagon: | TODO |
|
||||||
| ia64: | TODO |
|
| ia64: | TODO |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | ok |
|
| arm: | ok |
|
||||||
| arm64: | ok |
|
| arm64: | ok |
|
||||||
| c6x: | ok |
|
| c6x: | ok |
|
||||||
|
| csky: | ok |
|
||||||
| h8300: | TODO |
|
| h8300: | TODO |
|
||||||
| hexagon: | ok |
|
| hexagon: | ok |
|
||||||
| ia64: | ok |
|
| ia64: | ok |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | TODO |
|
| arm: | TODO |
|
||||||
| arm64: | ok |
|
| arm64: | ok |
|
||||||
| c6x: | TODO |
|
| c6x: | TODO |
|
||||||
|
| csky: | TODO |
|
||||||
| h8300: | TODO |
|
| h8300: | TODO |
|
||||||
| hexagon: | TODO |
|
| hexagon: | TODO |
|
||||||
| ia64: | TODO |
|
| ia64: | TODO |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | ok |
|
| arm: | ok |
|
||||||
| arm64: | ok |
|
| arm64: | ok |
|
||||||
| c6x: | TODO |
|
| c6x: | TODO |
|
||||||
|
| csky: | TODO |
|
||||||
| h8300: | TODO |
|
| h8300: | TODO |
|
||||||
| hexagon: | TODO |
|
| hexagon: | TODO |
|
||||||
| ia64: | TODO |
|
| ia64: | TODO |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | ok |
|
| arm: | ok |
|
||||||
| arm64: | ok |
|
| arm64: | ok |
|
||||||
| c6x: | TODO |
|
| c6x: | TODO |
|
||||||
|
| csky: | TODO |
|
||||||
| h8300: | ok |
|
| h8300: | ok |
|
||||||
| hexagon: | ok |
|
| hexagon: | ok |
|
||||||
| ia64: | TODO |
|
| ia64: | TODO |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | TODO |
|
| arm: | TODO |
|
||||||
| arm64: | TODO |
|
| arm64: | TODO |
|
||||||
| c6x: | TODO |
|
| c6x: | TODO |
|
||||||
|
| csky: | TODO |
|
||||||
| h8300: | TODO |
|
| h8300: | TODO |
|
||||||
| hexagon: | TODO |
|
| hexagon: | TODO |
|
||||||
| ia64: | TODO |
|
| ia64: | TODO |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | ok |
|
| arm: | ok |
|
||||||
| arm64: | ok |
|
| arm64: | ok |
|
||||||
| c6x: | TODO |
|
| c6x: | TODO |
|
||||||
|
| csky: | TODO |
|
||||||
| h8300: | TODO |
|
| h8300: | TODO |
|
||||||
| hexagon: | TODO |
|
| hexagon: | TODO |
|
||||||
| ia64: | ok |
|
| ia64: | ok |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | ok |
|
| arm: | ok |
|
||||||
| arm64: | ok |
|
| arm64: | ok |
|
||||||
| c6x: | TODO |
|
| c6x: | TODO |
|
||||||
|
| csky: | TODO |
|
||||||
| h8300: | TODO |
|
| h8300: | TODO |
|
||||||
| hexagon: | TODO |
|
| hexagon: | TODO |
|
||||||
| ia64: | ok |
|
| ia64: | ok |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | ok |
|
| arm: | ok |
|
||||||
| arm64: | TODO |
|
| arm64: | TODO |
|
||||||
| c6x: | TODO |
|
| c6x: | TODO |
|
||||||
|
| csky: | TODO |
|
||||||
| h8300: | TODO |
|
| h8300: | TODO |
|
||||||
| hexagon: | TODO |
|
| hexagon: | TODO |
|
||||||
| ia64: | TODO |
|
| ia64: | TODO |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | ok |
|
| arm: | ok |
|
||||||
| arm64: | ok |
|
| arm64: | ok |
|
||||||
| c6x: | TODO |
|
| c6x: | TODO |
|
||||||
|
| csky: | TODO |
|
||||||
| h8300: | TODO |
|
| h8300: | TODO |
|
||||||
| hexagon: | TODO |
|
| hexagon: | TODO |
|
||||||
| ia64: | TODO |
|
| ia64: | TODO |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | ok |
|
| arm: | ok |
|
||||||
| arm64: | ok |
|
| arm64: | ok |
|
||||||
| c6x: | TODO |
|
| c6x: | TODO |
|
||||||
|
| csky: | TODO |
|
||||||
| h8300: | TODO |
|
| h8300: | TODO |
|
||||||
| hexagon: | TODO |
|
| hexagon: | TODO |
|
||||||
| ia64: | TODO |
|
| ia64: | TODO |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | TODO |
|
| arm: | TODO |
|
||||||
| arm64: | TODO |
|
| arm64: | TODO |
|
||||||
| c6x: | TODO |
|
| c6x: | TODO |
|
||||||
|
| csky: | TODO |
|
||||||
| h8300: | TODO |
|
| h8300: | TODO |
|
||||||
| hexagon: | TODO |
|
| hexagon: | TODO |
|
||||||
| ia64: | TODO |
|
| ia64: | TODO |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | ok |
|
| arm: | ok |
|
||||||
| arm64: | ok |
|
| arm64: | ok |
|
||||||
| c6x: | TODO |
|
| c6x: | TODO |
|
||||||
|
| csky: | ok |
|
||||||
| h8300: | TODO |
|
| h8300: | TODO |
|
||||||
| hexagon: | TODO |
|
| hexagon: | TODO |
|
||||||
| ia64: | TODO |
|
| ia64: | TODO |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | TODO |
|
| arm: | TODO |
|
||||||
| arm64: | ok |
|
| arm64: | ok |
|
||||||
| c6x: | TODO |
|
| c6x: | TODO |
|
||||||
|
| csky: | TODO |
|
||||||
| h8300: | TODO |
|
| h8300: | TODO |
|
||||||
| hexagon: | TODO |
|
| hexagon: | TODO |
|
||||||
| ia64: | TODO |
|
| ia64: | TODO |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | ok |
|
| arm: | ok |
|
||||||
| arm64: | ok |
|
| arm64: | ok |
|
||||||
| c6x: | TODO |
|
| c6x: | TODO |
|
||||||
|
| csky: | TODO |
|
||||||
| h8300: | TODO |
|
| h8300: | TODO |
|
||||||
| hexagon: | ok |
|
| hexagon: | ok |
|
||||||
| ia64: | TODO |
|
| ia64: | TODO |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | TODO |
|
| arm: | TODO |
|
||||||
| arm64: | ok |
|
| arm64: | ok |
|
||||||
| c6x: | TODO |
|
| c6x: | TODO |
|
||||||
|
| csky: | ok |
|
||||||
| h8300: | TODO |
|
| h8300: | TODO |
|
||||||
| hexagon: | TODO |
|
| hexagon: | TODO |
|
||||||
| ia64: | TODO |
|
| ia64: | TODO |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | TODO |
|
| arm: | TODO |
|
||||||
| arm64: | TODO |
|
| arm64: | TODO |
|
||||||
| c6x: | TODO |
|
| c6x: | TODO |
|
||||||
|
| csky: | TODO |
|
||||||
| h8300: | TODO |
|
| h8300: | TODO |
|
||||||
| hexagon: | TODO |
|
| hexagon: | TODO |
|
||||||
| ia64: | TODO |
|
| ia64: | TODO |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | ok |
|
| arm: | ok |
|
||||||
| arm64: | ok |
|
| arm64: | ok |
|
||||||
| c6x: | TODO |
|
| c6x: | TODO |
|
||||||
|
| csky: | TODO |
|
||||||
| h8300: | TODO |
|
| h8300: | TODO |
|
||||||
| hexagon: | TODO |
|
| hexagon: | TODO |
|
||||||
| ia64: | ok |
|
| ia64: | ok |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | ok |
|
| arm: | ok |
|
||||||
| arm64: | ok |
|
| arm64: | ok |
|
||||||
| c6x: | TODO |
|
| c6x: | TODO |
|
||||||
|
| csky: | TODO |
|
||||||
| h8300: | TODO |
|
| h8300: | TODO |
|
||||||
| hexagon: | ok |
|
| hexagon: | ok |
|
||||||
| ia64: | TODO |
|
| ia64: | TODO |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | ok |
|
| arm: | ok |
|
||||||
| arm64: | ok |
|
| arm64: | ok |
|
||||||
| c6x: | TODO |
|
| c6x: | TODO |
|
||||||
|
| csky: | TODO |
|
||||||
| h8300: | TODO |
|
| h8300: | TODO |
|
||||||
| hexagon: | TODO |
|
| hexagon: | TODO |
|
||||||
| ia64: | TODO |
|
| ia64: | TODO |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | ok |
|
| arm: | ok |
|
||||||
| arm64: | ok |
|
| arm64: | ok |
|
||||||
| c6x: | TODO |
|
| c6x: | TODO |
|
||||||
|
| csky: | TODO |
|
||||||
| h8300: | TODO |
|
| h8300: | TODO |
|
||||||
| hexagon: | TODO |
|
| hexagon: | TODO |
|
||||||
| ia64: | TODO |
|
| ia64: | TODO |
|
||||||
|
@ -34,6 +34,7 @@
|
|||||||
| arm: | ok |
|
| arm: | ok |
|
||||||
| arm64: | ok |
|
| arm64: | ok |
|
||||||
| c6x: | TODO |
|
| c6x: | TODO |
|
||||||
|
| csky: | TODO |
|
||||||
| h8300: | TODO |
|
| h8300: | TODO |
|
||||||
| hexagon: | TODO |
|
| hexagon: | TODO |
|
||||||
| ia64: | TODO |
|
| ia64: | TODO |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | .. |
|
| arm: | .. |
|
||||||
| arm64: | ok |
|
| arm64: | ok |
|
||||||
| c6x: | .. |
|
| c6x: | .. |
|
||||||
|
| csky: | .. |
|
||||||
| h8300: | .. |
|
| h8300: | .. |
|
||||||
| hexagon: | .. |
|
| hexagon: | .. |
|
||||||
| ia64: | TODO |
|
| ia64: | TODO |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | ok |
|
| arm: | ok |
|
||||||
| arm64: | ok |
|
| arm64: | ok |
|
||||||
| c6x: | TODO |
|
| c6x: | TODO |
|
||||||
|
| csky: | TODO |
|
||||||
| h8300: | TODO |
|
| h8300: | TODO |
|
||||||
| hexagon: | TODO |
|
| hexagon: | TODO |
|
||||||
| ia64: | TODO |
|
| ia64: | TODO |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | ok |
|
| arm: | ok |
|
||||||
| arm64: | ok |
|
| arm64: | ok |
|
||||||
| c6x: | TODO |
|
| c6x: | TODO |
|
||||||
|
| csky: | TODO |
|
||||||
| h8300: | TODO |
|
| h8300: | TODO |
|
||||||
| hexagon: | TODO |
|
| hexagon: | TODO |
|
||||||
| ia64: | TODO |
|
| ia64: | TODO |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | ok |
|
| arm: | ok |
|
||||||
| arm64: | ok |
|
| arm64: | ok |
|
||||||
| c6x: | ok |
|
| c6x: | ok |
|
||||||
|
| csky: | ok |
|
||||||
| h8300: | ok |
|
| h8300: | ok |
|
||||||
| hexagon: | ok |
|
| hexagon: | ok |
|
||||||
| ia64: | TODO |
|
| ia64: | TODO |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | ok |
|
| arm: | ok |
|
||||||
| arm64: | ok |
|
| arm64: | ok |
|
||||||
| c6x: | TODO |
|
| c6x: | TODO |
|
||||||
|
| csky: | TODO |
|
||||||
| h8300: | TODO |
|
| h8300: | TODO |
|
||||||
| hexagon: | TODO |
|
| hexagon: | TODO |
|
||||||
| ia64: | TODO |
|
| ia64: | TODO |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | ok |
|
| arm: | ok |
|
||||||
| arm64: | ok |
|
| arm64: | ok |
|
||||||
| c6x: | TODO |
|
| c6x: | TODO |
|
||||||
|
| csky: | TODO |
|
||||||
| h8300: | TODO |
|
| h8300: | TODO |
|
||||||
| hexagon: | TODO |
|
| hexagon: | TODO |
|
||||||
| ia64: | .. |
|
| ia64: | .. |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | TODO |
|
| arm: | TODO |
|
||||||
| arm64: | ok |
|
| arm64: | ok |
|
||||||
| c6x: | ok |
|
| c6x: | ok |
|
||||||
|
| csky: | ok |
|
||||||
| h8300: | ok |
|
| h8300: | ok |
|
||||||
| hexagon: | ok |
|
| hexagon: | ok |
|
||||||
| ia64: | ok |
|
| ia64: | ok |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | ok |
|
| arm: | ok |
|
||||||
| arm64: | ok |
|
| arm64: | ok |
|
||||||
| c6x: | TODO |
|
| c6x: | TODO |
|
||||||
|
| csky: | TODO |
|
||||||
| h8300: | TODO |
|
| h8300: | TODO |
|
||||||
| hexagon: | TODO |
|
| hexagon: | TODO |
|
||||||
| ia64: | ok |
|
| ia64: | ok |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | ok |
|
| arm: | ok |
|
||||||
| arm64: | ok |
|
| arm64: | ok |
|
||||||
| c6x: | TODO |
|
| c6x: | TODO |
|
||||||
|
| csky: | TODO |
|
||||||
| h8300: | TODO |
|
| h8300: | TODO |
|
||||||
| hexagon: | TODO |
|
| hexagon: | TODO |
|
||||||
| ia64: | TODO |
|
| ia64: | TODO |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | TODO |
|
| arm: | TODO |
|
||||||
| arm64: | TODO |
|
| arm64: | TODO |
|
||||||
| c6x: | TODO |
|
| c6x: | TODO |
|
||||||
|
| csky: | TODO |
|
||||||
| h8300: | TODO |
|
| h8300: | TODO |
|
||||||
| hexagon: | TODO |
|
| hexagon: | TODO |
|
||||||
| ia64: | ok |
|
| ia64: | ok |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | ok |
|
| arm: | ok |
|
||||||
| arm64: | ok |
|
| arm64: | ok |
|
||||||
| c6x: | .. |
|
| c6x: | .. |
|
||||||
|
| csky: | .. |
|
||||||
| h8300: | .. |
|
| h8300: | .. |
|
||||||
| hexagon: | .. |
|
| hexagon: | .. |
|
||||||
| ia64: | TODO |
|
| ia64: | TODO |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | TODO |
|
| arm: | TODO |
|
||||||
| arm64: | TODO |
|
| arm64: | TODO |
|
||||||
| c6x: | .. |
|
| c6x: | .. |
|
||||||
|
| csky: | TODO |
|
||||||
| h8300: | .. |
|
| h8300: | .. |
|
||||||
| hexagon: | TODO |
|
| hexagon: | TODO |
|
||||||
| ia64: | TODO |
|
| ia64: | TODO |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | TODO |
|
| arm: | TODO |
|
||||||
| arm64: | ok |
|
| arm64: | ok |
|
||||||
| c6x: | TODO |
|
| c6x: | TODO |
|
||||||
|
| csky: | TODO |
|
||||||
| h8300: | TODO |
|
| h8300: | TODO |
|
||||||
| hexagon: | TODO |
|
| hexagon: | TODO |
|
||||||
| ia64: | TODO |
|
| ia64: | TODO |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | TODO |
|
| arm: | TODO |
|
||||||
| arm64: | TODO |
|
| arm64: | TODO |
|
||||||
| c6x: | TODO |
|
| c6x: | TODO |
|
||||||
|
| csky: | TODO |
|
||||||
| h8300: | TODO |
|
| h8300: | TODO |
|
||||||
| hexagon: | TODO |
|
| hexagon: | TODO |
|
||||||
| ia64: | TODO |
|
| ia64: | TODO |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | .. |
|
| arm: | .. |
|
||||||
| arm64: | ok |
|
| arm64: | ok |
|
||||||
| c6x: | .. |
|
| c6x: | .. |
|
||||||
|
| csky: | .. |
|
||||||
| h8300: | .. |
|
| h8300: | .. |
|
||||||
| hexagon: | .. |
|
| hexagon: | .. |
|
||||||
| ia64: | ok |
|
| ia64: | ok |
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
| arm: | ok |
|
| arm: | ok |
|
||||||
| arm64: | ok |
|
| arm64: | ok |
|
||||||
| c6x: | TODO |
|
| c6x: | TODO |
|
||||||
|
| csky: | TODO |
|
||||||
| h8300: | TODO |
|
| h8300: | TODO |
|
||||||
| hexagon: | TODO |
|
| hexagon: | TODO |
|
||||||
| ia64: | TODO |
|
| ia64: | TODO |
|
||||||
|
@ -15,6 +15,31 @@ extern void iounmap(void *addr);
|
|||||||
extern int remap_area_pages(unsigned long address, phys_addr_t phys_addr,
|
extern int remap_area_pages(unsigned long address, phys_addr_t phys_addr,
|
||||||
size_t size, unsigned long flags);
|
size_t size, unsigned long flags);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* I/O memory access primitives. Reads are ordered relative to any
|
||||||
|
* following Normal memory access. Writes are ordered relative to any prior
|
||||||
|
* Normal memory access.
|
||||||
|
*
|
||||||
|
* For CACHEV1 (807, 810), store instruction could fast retire, so we need
|
||||||
|
* another mb() to prevent st fast retire.
|
||||||
|
*
|
||||||
|
* For CACHEV2 (860), store instruction with PAGE_ATTR_NO_BUFFERABLE won't
|
||||||
|
* fast retire.
|
||||||
|
*/
|
||||||
|
#define readb(c) ({ u8 __v = readb_relaxed(c); rmb(); __v; })
|
||||||
|
#define readw(c) ({ u16 __v = readw_relaxed(c); rmb(); __v; })
|
||||||
|
#define readl(c) ({ u32 __v = readl_relaxed(c); rmb(); __v; })
|
||||||
|
|
||||||
|
#ifdef CONFIG_CPU_HAS_CACHEV2
|
||||||
|
#define writeb(v,c) ({ wmb(); writeb_relaxed((v),(c)); })
|
||||||
|
#define writew(v,c) ({ wmb(); writew_relaxed((v),(c)); })
|
||||||
|
#define writel(v,c) ({ wmb(); writel_relaxed((v),(c)); })
|
||||||
|
#else
|
||||||
|
#define writeb(v,c) ({ wmb(); writeb_relaxed((v),(c)); mb(); })
|
||||||
|
#define writew(v,c) ({ wmb(); writew_relaxed((v),(c)); mb(); })
|
||||||
|
#define writel(v,c) ({ wmb(); writel_relaxed((v),(c)); mb(); })
|
||||||
|
#endif
|
||||||
|
|
||||||
#define ioremap_nocache(phy, sz) ioremap(phy, sz)
|
#define ioremap_nocache(phy, sz) ioremap(phy, sz)
|
||||||
#define ioremap_wc ioremap_nocache
|
#define ioremap_wc ioremap_nocache
|
||||||
#define ioremap_wt ioremap_nocache
|
#define ioremap_wt ioremap_nocache
|
||||||
|
@ -24,41 +24,34 @@ static inline void pmd_populate(struct mm_struct *mm, pmd_t *pmd,
|
|||||||
|
|
||||||
extern void pgd_init(unsigned long *p);
|
extern void pgd_init(unsigned long *p);
|
||||||
|
|
||||||
static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm,
|
static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm)
|
||||||
unsigned long address)
|
|
||||||
{
|
{
|
||||||
pte_t *pte;
|
pte_t *pte;
|
||||||
unsigned long *kaddr, i;
|
unsigned long i;
|
||||||
|
|
||||||
pte = (pte_t *) __get_free_pages(GFP_KERNEL | __GFP_RETRY_MAYFAIL,
|
pte = (pte_t *) __get_free_page(GFP_KERNEL);
|
||||||
PTE_ORDER);
|
if (!pte)
|
||||||
kaddr = (unsigned long *)pte;
|
return NULL;
|
||||||
if (address & 0x80000000)
|
|
||||||
for (i = 0; i < (PAGE_SIZE/4); i++)
|
for (i = 0; i < PAGE_SIZE/sizeof(pte_t); i++)
|
||||||
*(kaddr + i) = 0x1;
|
(pte + i)->pte_low = _PAGE_GLOBAL;
|
||||||
else
|
|
||||||
clear_page(kaddr);
|
|
||||||
|
|
||||||
return pte;
|
return pte;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline struct page *pte_alloc_one(struct mm_struct *mm,
|
static inline struct page *pte_alloc_one(struct mm_struct *mm)
|
||||||
unsigned long address)
|
|
||||||
{
|
{
|
||||||
struct page *pte;
|
struct page *pte;
|
||||||
unsigned long *kaddr, i;
|
|
||||||
|
|
||||||
pte = alloc_pages(GFP_KERNEL | __GFP_RETRY_MAYFAIL, PTE_ORDER);
|
pte = alloc_pages(GFP_KERNEL | __GFP_ZERO, 0);
|
||||||
if (pte) {
|
if (!pte)
|
||||||
kaddr = kmap_atomic(pte);
|
return NULL;
|
||||||
if (address & 0x80000000) {
|
|
||||||
for (i = 0; i < (PAGE_SIZE/4); i++)
|
if (!pgtable_page_ctor(pte)) {
|
||||||
*(kaddr + i) = 0x1;
|
__free_page(pte);
|
||||||
} else
|
return NULL;
|
||||||
clear_page(kaddr);
|
|
||||||
kunmap_atomic(kaddr);
|
|
||||||
pgtable_page_ctor(pte);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return pte;
|
return pte;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
#include <linux/spinlock.h>
|
#include <linux/spinlock.h>
|
||||||
#include <asm/pgtable.h>
|
#include <asm/pgtable.h>
|
||||||
|
|
||||||
#if defined(__CSKYABIV2__)
|
#ifdef CONFIG_CPU_CK810
|
||||||
#define IS_BSR32(hi16, lo16) (((hi16) & 0xFC00) == 0xE000)
|
#define IS_BSR32(hi16, lo16) (((hi16) & 0xFC00) == 0xE000)
|
||||||
#define IS_JSRI32(hi16, lo16) ((hi16) == 0xEAE0)
|
#define IS_JSRI32(hi16, lo16) ((hi16) == 0xEAE0)
|
||||||
|
|
||||||
@ -25,6 +25,26 @@
|
|||||||
*(uint16_t *)(addr) = 0xE8Fa; \
|
*(uint16_t *)(addr) = 0xE8Fa; \
|
||||||
*((uint16_t *)(addr) + 1) = 0x0000; \
|
*((uint16_t *)(addr) + 1) = 0x0000; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
static void jsri_2_lrw_jsr(uint32_t *location)
|
||||||
|
{
|
||||||
|
uint16_t location_tmp = (uint16_t *)location;
|
||||||
|
|
||||||
|
if (IS_BSR32(*location_tmp, *(location_tmp + 1)))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (IS_JSRI32(*location_tmp, *(location_tmp + 1))) {
|
||||||
|
/* jsri 0x... --> lrw r26, 0x... */
|
||||||
|
CHANGE_JSRI_TO_LRW(location);
|
||||||
|
/* lsli r0, r0 --> jsr r26 */
|
||||||
|
SET_JSR32_R26(location + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static void inline jsri_2_lrw_jsr(uint32_t *location)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int apply_relocate_add(Elf32_Shdr *sechdrs, const char *strtab,
|
int apply_relocate_add(Elf32_Shdr *sechdrs, const char *strtab,
|
||||||
@ -35,9 +55,6 @@ int apply_relocate_add(Elf32_Shdr *sechdrs, const char *strtab,
|
|||||||
Elf32_Sym *sym;
|
Elf32_Sym *sym;
|
||||||
uint32_t *location;
|
uint32_t *location;
|
||||||
short *temp;
|
short *temp;
|
||||||
#if defined(__CSKYABIV2__)
|
|
||||||
uint16_t *location_tmp;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
for (i = 0; i < sechdrs[relsec].sh_size / sizeof(*rel); i++) {
|
for (i = 0; i < sechdrs[relsec].sh_size / sizeof(*rel); i++) {
|
||||||
/* This is where to make the change */
|
/* This is where to make the change */
|
||||||
@ -59,18 +76,7 @@ int apply_relocate_add(Elf32_Shdr *sechdrs, const char *strtab,
|
|||||||
case R_CSKY_PCRELJSR_IMM11BY2:
|
case R_CSKY_PCRELJSR_IMM11BY2:
|
||||||
break;
|
break;
|
||||||
case R_CSKY_PCRELJSR_IMM26BY2:
|
case R_CSKY_PCRELJSR_IMM26BY2:
|
||||||
#if defined(__CSKYABIV2__)
|
jsri_2_lrw_jsr(location);
|
||||||
location_tmp = (uint16_t *)location;
|
|
||||||
if (IS_BSR32(*location_tmp, *(location_tmp + 1)))
|
|
||||||
break;
|
|
||||||
|
|
||||||
if (IS_JSRI32(*location_tmp, *(location_tmp + 1))) {
|
|
||||||
/* jsri 0x... --> lrw r26, 0x... */
|
|
||||||
CHANGE_JSRI_TO_LRW(location);
|
|
||||||
/* lsli r0, r0 --> jsr r26 */
|
|
||||||
SET_JSR32_R26(location + 1);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
case R_CSKY_ADDR_HI16:
|
case R_CSKY_ADDR_HI16:
|
||||||
temp = ((short *)location) + 1;
|
temp = ((short *)location) + 1;
|
||||||
|
@ -95,7 +95,7 @@ static inline void setup_irq_channel(u32 magic, void __iomem *reg_addr)
|
|||||||
|
|
||||||
/* Setup 64 channel slots */
|
/* Setup 64 channel slots */
|
||||||
for (i = 0; i < INTC_IRQS; i += 4)
|
for (i = 0; i < INTC_IRQS; i += 4)
|
||||||
writel_relaxed(build_channel_val(i, magic), reg_addr + i);
|
writel(build_channel_val(i, magic), reg_addr + i);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __init
|
static int __init
|
||||||
@ -135,16 +135,10 @@ ck_intc_init_comm(struct device_node *node, struct device_node *parent)
|
|||||||
static inline bool handle_irq_perbit(struct pt_regs *regs, u32 hwirq,
|
static inline bool handle_irq_perbit(struct pt_regs *regs, u32 hwirq,
|
||||||
u32 irq_base)
|
u32 irq_base)
|
||||||
{
|
{
|
||||||
u32 irq;
|
|
||||||
|
|
||||||
if (hwirq == 0)
|
if (hwirq == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
while (hwirq) {
|
handle_domain_irq(root_domain, irq_base + __fls(hwirq), regs);
|
||||||
irq = __ffs(hwirq);
|
|
||||||
hwirq &= ~BIT(irq);
|
|
||||||
handle_domain_irq(root_domain, irq_base + irq, regs);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -154,12 +148,16 @@ static void gx_irq_handler(struct pt_regs *regs)
|
|||||||
{
|
{
|
||||||
bool ret;
|
bool ret;
|
||||||
|
|
||||||
do {
|
retry:
|
||||||
ret = handle_irq_perbit(regs,
|
ret = handle_irq_perbit(regs,
|
||||||
readl_relaxed(reg_base + GX_INTC_PEN31_00), 0);
|
readl(reg_base + GX_INTC_PEN63_32), 32);
|
||||||
ret |= handle_irq_perbit(regs,
|
if (ret)
|
||||||
readl_relaxed(reg_base + GX_INTC_PEN63_32), 32);
|
goto retry;
|
||||||
} while (ret);
|
|
||||||
|
ret = handle_irq_perbit(regs,
|
||||||
|
readl(reg_base + GX_INTC_PEN31_00), 0);
|
||||||
|
if (ret)
|
||||||
|
goto retry;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __init
|
static int __init
|
||||||
@ -174,14 +172,14 @@ gx_intc_init(struct device_node *node, struct device_node *parent)
|
|||||||
/*
|
/*
|
||||||
* Initial enable reg to disable all interrupts
|
* Initial enable reg to disable all interrupts
|
||||||
*/
|
*/
|
||||||
writel_relaxed(0x0, reg_base + GX_INTC_NEN31_00);
|
writel(0x0, reg_base + GX_INTC_NEN31_00);
|
||||||
writel_relaxed(0x0, reg_base + GX_INTC_NEN63_32);
|
writel(0x0, reg_base + GX_INTC_NEN63_32);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initial mask reg with all unmasked, because we only use enalbe reg
|
* Initial mask reg with all unmasked, because we only use enalbe reg
|
||||||
*/
|
*/
|
||||||
writel_relaxed(0x0, reg_base + GX_INTC_NMASK31_00);
|
writel(0x0, reg_base + GX_INTC_NMASK31_00);
|
||||||
writel_relaxed(0x0, reg_base + GX_INTC_NMASK63_32);
|
writel(0x0, reg_base + GX_INTC_NMASK63_32);
|
||||||
|
|
||||||
setup_irq_channel(0x03020100, reg_base + GX_INTC_SOURCE);
|
setup_irq_channel(0x03020100, reg_base + GX_INTC_SOURCE);
|
||||||
|
|
||||||
@ -204,20 +202,29 @@ static void ck_irq_handler(struct pt_regs *regs)
|
|||||||
void __iomem *reg_pen_lo = reg_base + CK_INTC_PEN31_00;
|
void __iomem *reg_pen_lo = reg_base + CK_INTC_PEN31_00;
|
||||||
void __iomem *reg_pen_hi = reg_base + CK_INTC_PEN63_32;
|
void __iomem *reg_pen_hi = reg_base + CK_INTC_PEN63_32;
|
||||||
|
|
||||||
do {
|
retry:
|
||||||
/* handle 0 - 31 irqs */
|
/* handle 0 - 63 irqs */
|
||||||
ret = handle_irq_perbit(regs, readl_relaxed(reg_pen_lo), 0);
|
ret = handle_irq_perbit(regs, readl(reg_pen_hi), 32);
|
||||||
ret |= handle_irq_perbit(regs, readl_relaxed(reg_pen_hi), 32);
|
if (ret)
|
||||||
|
goto retry;
|
||||||
|
|
||||||
if (nr_irq == INTC_IRQS)
|
ret = handle_irq_perbit(regs, readl(reg_pen_lo), 0);
|
||||||
continue;
|
if (ret)
|
||||||
|
goto retry;
|
||||||
|
|
||||||
/* handle 64 - 127 irqs */
|
if (nr_irq == INTC_IRQS)
|
||||||
ret |= handle_irq_perbit(regs,
|
return;
|
||||||
readl_relaxed(reg_pen_lo + CK_INTC_DUAL_BASE), 64);
|
|
||||||
ret |= handle_irq_perbit(regs,
|
/* handle 64 - 127 irqs */
|
||||||
readl_relaxed(reg_pen_hi + CK_INTC_DUAL_BASE), 96);
|
ret = handle_irq_perbit(regs,
|
||||||
} while (ret);
|
readl(reg_pen_hi + CK_INTC_DUAL_BASE), 96);
|
||||||
|
if (ret)
|
||||||
|
goto retry;
|
||||||
|
|
||||||
|
ret = handle_irq_perbit(regs,
|
||||||
|
readl(reg_pen_lo + CK_INTC_DUAL_BASE), 64);
|
||||||
|
if (ret)
|
||||||
|
goto retry;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __init
|
static int __init
|
||||||
@ -230,11 +237,11 @@ ck_intc_init(struct device_node *node, struct device_node *parent)
|
|||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
/* Initial enable reg to disable all interrupts */
|
/* Initial enable reg to disable all interrupts */
|
||||||
writel_relaxed(0, reg_base + CK_INTC_NEN31_00);
|
writel(0, reg_base + CK_INTC_NEN31_00);
|
||||||
writel_relaxed(0, reg_base + CK_INTC_NEN63_32);
|
writel(0, reg_base + CK_INTC_NEN63_32);
|
||||||
|
|
||||||
/* Enable irq intc */
|
/* Enable irq intc */
|
||||||
writel_relaxed(BIT(31), reg_base + CK_INTC_ICR);
|
writel(BIT(31), reg_base + CK_INTC_ICR);
|
||||||
|
|
||||||
ck_set_gc(node, reg_base, CK_INTC_NEN31_00, 0);
|
ck_set_gc(node, reg_base, CK_INTC_NEN31_00, 0);
|
||||||
ck_set_gc(node, reg_base, CK_INTC_NEN63_32, 32);
|
ck_set_gc(node, reg_base, CK_INTC_NEN63_32, 32);
|
||||||
@ -260,8 +267,8 @@ ck_dual_intc_init(struct device_node *node, struct device_node *parent)
|
|||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
/* Initial enable reg to disable all interrupts */
|
/* Initial enable reg to disable all interrupts */
|
||||||
writel_relaxed(0, reg_base + CK_INTC_NEN31_00 + CK_INTC_DUAL_BASE);
|
writel(0, reg_base + CK_INTC_NEN31_00 + CK_INTC_DUAL_BASE);
|
||||||
writel_relaxed(0, reg_base + CK_INTC_NEN63_32 + CK_INTC_DUAL_BASE);
|
writel(0, reg_base + CK_INTC_NEN63_32 + CK_INTC_DUAL_BASE);
|
||||||
|
|
||||||
ck_set_gc(node, reg_base + CK_INTC_DUAL_BASE, CK_INTC_NEN31_00, 64);
|
ck_set_gc(node, reg_base + CK_INTC_DUAL_BASE, CK_INTC_NEN31_00, 64);
|
||||||
ck_set_gc(node, reg_base + CK_INTC_DUAL_BASE, CK_INTC_NEN63_32, 96);
|
ck_set_gc(node, reg_base + CK_INTC_DUAL_BASE, CK_INTC_NEN63_32, 96);
|
||||||
|
Loading…
Reference in New Issue
Block a user