Arnd Bergmann, Ο προγραμματιστής πυρήνα Linux από τον κλάδο arm-soc και διαχειριστής πακέτων πυρήνα στο SUSE, κυκλοφόρησε ένα πρόταση στο οποίο βάζει στο τραπέζι το ζήτημα της κατάργησης του πυρήνα που βασίζεται στο GCC και δημιουργήστε εργαλεία κώδικα για την υποστήριξη παλαιότερων CPU ARM, των συσχετισμένων τους ABI, σύνολα εντολών και δυνατότητες πυρήνα.
Ο Arnd Bergmann, το αναφέρει βάση της πρότασης της διακοπής της στήριξης για επεξεργαστές ARM παλιά στον πυρήναοφείλομαι σε διακοπή στο GCC, καθώς ορισμένες από τις CPU που προτείνονται για κατάργηση δεν υποστηρίζονται πλέον στους πιο πρόσφατους κλάδους του GCC και άλλες προγραμματίζονται να καταργηθούν σε μελλοντικές εκδόσεις.
Αναφέρετε ότι εφαρμόζοντας αυτό, Θα διευκολυνθεί ο εκσυγχρονισμός και η εφαρμογή νέων λειτουργιών στον μεταγλωττιστή. ΚΑΙΗ κατάργηση υποστήριξης για μια αρχιτεκτονική στο GCC θα απαιτήσει την κατάργησή της από τον πυρήνα, εάν αυξηθεί η ελάχιστη έκδοση GCC που υποστηρίζεται από τον πυρήνα (προς το παρόν, απαιτείται τουλάχιστον η έκδοση 5.1 GCC για τη μεταγλώττιση του πυρήνα).
Ανάμεσα σε αρχιτεκτονικές, τσιπ και επεκτάσεις που προτείνεται να αφαιρεθούν από τον πυρήνα αναφέρονται τα εξής:
- ARMv3: Καταργήθηκε στο GCC-9, επομένως θα αφαιρεθεί τελικά από τον πυρήνα καθώς αυξάνονται οι ελάχιστες εκδόσεις μεταγλωττιστή.
- ARMv4: Χρησιμοποιείται για επεξεργαστές StrongARM και FA526, ακόμα σε ορισμένες πλακέτες. Ακόμα και τα πιο πρόσφατα τσιπ είναι κοντά στα 20 χρόνια. Η τελευταία έκδοση του Debian που τους υποστήριξε ήταν ο Lenny (5.0). Εξακολουθούν να υποστηρίζονται έξι οικογένειες SoC με πυρήνες ARMv4T (ARM720T, ARM920T και ARM922T). Αν και είναι παλιά, έχουν περισσότερους χρήστες και προγραμματιστές από το ARMv4. Το Debian Stretch (9.0) ήταν το τελευταίο που τους υποστήριξε.
- ARMv5: Περίπου το ένα τρίτο των υποστηριζόμενων πλατφορμών χρησιμοποιούν ARMv5, αλλά οι περισσότερες πλησιάζουν στο τέλος της υποστήριξής τους.
- ARMv6 νωρίς: περιλαμβάνει ARM1136r0p σε NXP i.MX31 και OMAP24xx, κυρίως το tablet Nokia N8xx. Απαιτεί ειδικά hacks για την υποστήριξη πυρήνων με SMP. Υπάρχει ένα patch που αλλάζει το ARMv6 από συμβατό με ARMv7 σε συμβατό με ARMv5, αλλά χρειάζεται περισσότερη δουλειά.
- ARMv6K
ARMv7-M: Οι Cortex-M3/M4/M7 είναι οι μόνοι πυρήνες που υποστηρίζονται χωρίς MMU, επί του παρόντος σε 5 πλατφόρμες μικροελεγκτών. Θα μπορούσαν να αφαιρεθούν το 2027, αλλά το GCC θα πρέπει ακόμα να τα υποστηρίζει σε άλλα λειτουργικά συστήματα. - iWMMXt: Δεν υπάρχουν γνωστοί υπόλοιποι χρήστες για το iWMMXt και η υποστήριξη για επεξεργαστές ARMv7 PJ4 έχει καταργηθεί. Υποστηρίζεται μόνο σε Intel/Marvell PXA και MMP1.
- ARMv5 μεγάλος πυρήνας endian (BE32): Μόνο ένα SoC το χρησιμοποιεί, το Intel IXP4xx. Το Debian το υποστήριξε σε λειτουργία small-endian, αλλά τα προγράμματα οδήγησης είναι χαλασμένα στο LE.
- ARMv7 μεγάλος endian πυρήνας (BE8)
- Param_struct pre-ATAGS: Αυτό αποσβέστηκε το 2001, για να εξαλειφθεί σε «5 χρόνια», κάτι που έχει ήδη συμβεί.
- Αρχεία πιάτων που βασίζονται σε ATAGS: Μετά την παραπάνω εκκαθάριση, απομένουν 29 αρχεία πλακέτας σε 10 πλατφόρμες SoC.
- Πυρήνες OABI: Σχεδόν όλοι χρησιμοποιούν το EABI σήμερα και η υποστήριξη OABI καταργήθηκε ως στόχος στο GCC-4.8. Ο πυρήνας εξακολουθεί να επιτρέπει τη δημιουργία του ως OABI με -mabi=apcs-gnu, που χρησιμοποιείται από προεπιλογή στους πυρήνες ARMv4/ARMv5.
- OABI Compat Mode: Αυτό επιτρέπει την εκτέλεση δυαδικών αρχείων OABI με πυρήνα EABI.
- NWFPE
- Highmem: Τα περισσότερα μηχανήματα ARM μπορούν να λειτουργήσουν χωρίς υποστήριξη highmem χρησιμοποιώντας CONFIG_VMSPLIT_2 GB για να αντιμετωπίσουν έως και 2 GB φυσικής μνήμης. Μεγαλύτερα μηχανήματα εμφανίστηκαν με το Cortex-A15 το 2012, γρήγορα αντικαταστάθηκαν από τσιπ 64-bit.
- Sparsemem: Υπάρχει μια συζήτηση σχετικά με την κατάργηση της υποστήριξης για το παραδοσιακό σπαρσεμέ. Αυτό σχετίζεται επίσης με μηχανήματα που χρειάζονται highmem για να χρησιμοποιήσουν όλη τη μνήμη RAM τους
- RiscPC: Αυτή είναι η παλαιότερη πλατφόρμα που υποστηρίζεται και τελικά θα καταργηθεί, καθώς δεν λειτουργεί με GCC-9 ή νεότερη έκδοση λόγω της κατάργησης του ARMv3.
- SA1100, Πεζογέφυρα: άλλες πλατφόρμες που βασίζονται στο StrongARM, σχετικές μόνο με τη νοσταλγία.
- Gemini, Moxart: Και οι δύο χρησιμοποιούν τον πυρήνα της CPU Faraday FA526, ο οποίος, όπως το StrongARM, εφαρμόζει το ARMv4 αντί για το ARMv4T με τον αντίχειρα. Τα τσιπ είναι επίσης άνω των 20 ετών, αλλά ο κώδικας του πυρήνα έχει ενημερωθεί και δεν αποτελεί βάρος συντήρησης.
- Αρχεία πλακέτας PXA: Υπάρχουν δύο αρχεία πινακίδων στον κωδικό PXA που δεν αφαιρέθηκαν πριν από δύο χρόνια, ελπίζοντας ότι αυτό θα βοηθούσε τη μετατροπή σε DT
- OMAP1: η μόνη πλατφόρμα ARMv4T/ARMv5 χωρίς υποστήριξη DT, καθιστώντας την στόχο για αφαίρεση κάποια στιγμή.
- Nspire, AT91RM9200, CLPS711X, EP93xx, iMX1
- OMAP24xx
- iMX31, realview/integrator με 1136r0
- S3C64xx (Cragganmore): Αυτή είναι η μόνη πλακέτα ARMv6K χωρίς υποστήριξη συσκευής δέντρου και το αρχείο πλακέτας περιέχει παρόμοια πολυπλοκότητα με όλα τα άλλα αρχεία πλακέτας μαζί. Το arch/arm/mach-s3c/Kconfig.s3c64xx το παραθέτει για αφαίρεση στις αρχές του επόμενου έτους, κάτι που θα επέτρεπε έναν μεγάλο καθαρισμό της υποδομής της πλατφόρμας και των προγραμμάτων οδήγησης.
- Αρχεία Orion5x, mv78xx0, dove board: Όπως και το PXA, αυτά έμειναν σε εκκρεμότητα για την πρόοδο προς τη μετατροπή DT, αλλά δεν έγινε τίποτα εκτός από κάποιες μικρές διορθώσεις στο mv78xx0. Αντίθετα, το Debian έχει αφαιρέσει το δυαδικό αρχείο πυρήνα orion5x επικαλούμενο έλλειψη χρηστών, επομένως φαίνεται πολύ λιγότερο πιθανό να ολοκληρωθεί.
- iMX35, WM8750, AST2500, BCM2835: Αυτές οι τέσσερις είναι όλες πλατφόρμες ARMv6K και υποστηρίζονται καλά, αν και μόνο τα AST2500 και BCM2835 έχουν ενεργή βάση χρηστών.
- Μικροελεγκτές Stm32f4/f7/h7: Αυτά είναι τα μόνα τσιπ βραχίονα εκτός MMU που έχουν συνεχή ανάπτυξη καθώς η ST συνεχίζει να υποστηρίζει τους υπάρχοντες πελάτες της.
Τέλος, πρέπει να αναφερθεί ότι αυτό το σχέδιο βρίσκεται ακόμα στο στάδιο RFC, δηλαδή δημοσιεύεται για συζήτηση στην κοινότητα. Εάν εγκριθεί, προτείνεται να ξεκινήσει η αφαίρεση παλαιών επεξεργαστών ARM στον πυρήνα Linux 6.12, που αναμένεται τον Δεκέμβριο. Οι πρώτοι υποψήφιοι που θα αφαιρεθούν είναι το ARMv4 (χωρίς να αφαιρεθεί το ARMv4T), το iWMMXt, το BE32 και το OABI.
πηγή: https://lkml.org