Arnd Bergmann, Linux-kärnutvecklare från arm-soc-grenen och chef för kärnpaket på SUSE, släppte en förslag där han lägger på bordet frågan om att ta bort den GCC-baserade kärnan och skapa kodverktyg för att stödja äldre ARM-processorer, deras tillhörande ABI, instruktionsuppsättningar och kärnfunktioner.
Arnd Bergmann, nämner det förslagets grund av upphörande av stöd för ARM-processorer gammal i kärnanJag beror på avbrott i GCC, eftersom vissa av de processorer som föreslås för borttagning inte längre stöds i de senaste GCC-grenarna, och andra är planerade att tas bort i framtida utgåvor.
Nämn att genom att tillämpa detta, Modernisering och implementering av nya funktioner i kompilatorn kommer att underlättas. OCHAtt ta bort stöd för en arkitektur i GCC kommer att kräva att den tas bort från kärnan om den lägsta GCC-version som stöds av kärnan ökas (för närvarande krävs minst GCC version 5.1 för att kompilera kärnan).
Mellan arkitekturer, chips och tillbyggnader som föreslås tas bort från kärnan, nämns följande:
- ARMv3: Borttagen i GCC-9, så den kommer så småningom att tas bort från kärnan när minsta kompilatorversioner ökar.
- ARMv4: Används för StrongARM och FA526 processorer, fortfarande på vissa kort. Även de nyaste markerna är nära 20 år gamla. Den sista versionen av Debian som stödde dem var Lenny (5.0). Sex SoC-familjer med ARMv4T-kärnor (ARM720T, ARM920T och ARM922T) stöds fortfarande. Även om de är gamla har de fler användare och utvecklare än ARMv4. Debian Stretch (9.0) var den sista som stödde dem.
- ARMv5: Ungefär en tredjedel av de plattformar som stöds använder ARMv5, men de flesta är nära slutet av deras stöd.
- ARMv6 tidigt: inkluderar ARM1136r0p i NXP i.MX31 och OMAP24xx, främst Nokia N8xx surfplatta. Kräver speciella hack för att stödja kärnor med SMP. Det finns en patch som ändrar ARMv6 från att vara kompatibel med ARMv7 till att vara kompatibel med ARMv5, men den behöver mer arbete.
- ARMv6K
ARMv7-M: Cortex-M3/M4/M7 är de enda kärnorna som stöds utan MMU, för närvarande på 5 mikrokontrollerplattformar. De kan tas bort 2027, men GCC kommer fortfarande att behöva stödja dem på andra operativsystem. - iWMMXt: det finns inga kända återstående användare för iWMMXt, och stödet för ARMv7 PJ4-processorer har tagits bort. Det stöds endast på Intel/Marvell PXA och MMP1.
- ARMv5 big endian kärna (BE32): Endast en SoC använder den, Intel IXP4xx. Debian stödde det i little-endian-läge, men drivrutinerna är trasiga i LE.
- ARMv7 big endian kärna (BE8)
- Param_struct pre-ATAGS: Detta skrevs av 2001 för att elimineras om "5 år", vilket redan har skett.
- ATAGS-baserade plåtfiler: Efter ovanstående rensning finns det 29 kortfiler kvar på 10 SoC-plattformar.
- OABI-kärnor: Praktiskt taget alla använder EABI idag, och OABI-stöd togs bort som ett mål i GCC-4.8. Kärnan tillåter fortfarande att byggas som OABI med -mabi=apcs-gnu, som används som standard i ARMv4/ARMv5-kärnor.
- OABI Compat Mode: Detta tillåter körning av OABI-binärer med en EABI-kärna.
- NWFPE
- Highmem: De flesta ARM-maskiner kan fungera utan highmem-stöd med CONFIG_VMSPLIT_2GB för att adressera upp till 2GB fysiskt minne. Större maskiner dök upp med Cortex-A15 2012, snabbt ersatta av 64-bitars marker.
- Sparsemem: Det pågår en diskussion om att ta bort stödet för traditionell sparsemem. Detta gäller även maskiner som behöver highmem för att använda allt RAM
- RiscPC: Detta är den äldsta plattformen som stöds och kommer så småningom att tas bort, eftersom den inte fungerar med GCC-9 eller högre på grund av borttagningen av ARMv3.
- SA1100, gångbro: andra StrongARM-baserade plattformar, endast relevanta för nostalgi.
- Gemini, Moxart: Båda använder Faraday FA526 CPU-kärnan, som liksom StrongARM implementerar ARMv4 istället för ARMv4T med tummen. Chipsen är också över 20 år gamla, men kärnkoden har uppdaterats och är ingen underhållsbörda.
- PXA-kortfiler: Det finns två plåtfiler kvar i PXA-koden som inte togs bort för två år sedan, i hopp om att detta skulle hjälpa konverteringen till DT
- OMAP1: den enda ARMv4T/ARMv5-plattformen utan DT-stöd, vilket gör den till ett mål för borttagning någon gång.
- Nspire, AT91RM9200, CLPS711X, EP93xx, iMX1
- OMAP24xx
- iMX31, realview/integrator med 1136r0
- S3C64xx (Cragganmore): Detta är det enda ARMv6K-kortet utan enhetsträdstöd, och kortfilen innehåller en liknande mängd komplexitet som alla andra kortfiler tillsammans. arch/arm/mach-s3c/Kconfig.s3c64xx listar den för borttagning i början av nästa år, vilket skulle möjliggöra en stor sanering av plattformens infrastruktur och drivrutiner.
- Orion5x, mv78xx0, dove board filer: Liksom PXA lämnades dessa i väntan på framsteg mot DT-konverteringen, men ingenting har hänt förutom några mindre korrigeringar i mv78xx0. Däremot har Debian tagit bort orion5x-kärnan med hänvisning till brist på användare, så det verkar mycket mindre sannolikt att det blir färdigt.
- iMX35, WM8750, AST2500, BCM2835: Dessa fyra är alla ARMv6K-plattformar och stöds väl, även om endast AST2500 och BCM2835 har en aktiv användarbas.
- Stm32f4/f7/h7 mikrokontroller: Dessa är de enda icke-MMU Arm-chips som ser fortsatt utveckling eftersom ST fortsätter att stödja sina befintliga kunder.
Slutligen bör det nämnas att denna plan är fortfarande i RFC-stadiet, det vill säga publicerad för samhällsdiskussion. Om det godkänns, föreslås det att påbörja borttagningen av gamla ARM-processorer i Linux-kärnan 6.12, förväntat i december. De första kandidaterna som tas bort är ARMv4 (utan att ta bort ARMv4T), iWMMXt, BE32 och OABI.
Fuente: https://lkml.org