1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852 |
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/a.out.h
- @@ -0,0 +1,47 @@
- +/*
- + * arch/ubicom32/include/asm/a.out.h
- + * Definitions for Ubicom32 a.out executable format.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_A_OUT_H
- +#define _ASM_UBICOM32_A_OUT_H
- +
- +struct exec
- +{
- + unsigned long a_info; /* Use macros N_MAGIC, etc for access */
- + unsigned a_text; /* length of text, in bytes */
- + unsigned a_data; /* length of data, in bytes */
- + unsigned a_bss; /* length of uninitialized data area for file, in bytes */
- + unsigned a_syms; /* length of symbol table data in file, in bytes */
- + unsigned a_entry; /* start address */
- + unsigned a_trsize; /* length of relocation info for text, in bytes */
- + unsigned a_drsize; /* length of relocation info for data, in bytes */
- +};
- +
- +#define N_TRSIZE(a) ((a).a_trsize)
- +#define N_DRSIZE(a) ((a).a_drsize)
- +#define N_SYMSIZE(a) ((a).a_syms)
- +
- +#endif /* _ASM_UBICOM32_A_OUT_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/auxvec.h
- @@ -0,0 +1,32 @@
- +/*
- + * arch/ubicom32/include/asm/auxvec.h
- + * Symbolic values for the entries in the auxiliary table
- + * put on the initial stack.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_AUXVEC_H
- +#define _ASM_UBICOM32_AUXVEC_H
- +
- +#endif /* _ASM_UBICOM32_AUXVEC_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/bitops.h
- @@ -0,0 +1,41 @@
- +/*
- + * arch/ubicom32/include/asm/bitops.h
- + * Bit manipulation definitions for Ubicom32 architecture.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_BITOPS_H
- +#define _ASM_UBICOM32_BITOPS_H
- +
- +/*
- + * Copyright 1992, Linus Torvalds.
- + */
- +
- +#include <linux/compiler.h>
- +#include <asm/byteorder.h> /* swab32 */
- +
- +#include <asm-generic/bitops/fls.h>
- +#include <asm-generic/bitops/fls64.h>
- +
- +#endif /* _ASM_UBICOM32_BITOPS_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/board.h
- @@ -0,0 +1,34 @@
- +/*
- + * arch/ubicom32/include/asm/board.h
- + * Board init and revision definitions for Ubicom32 architecture.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_BOARD_H
- +#define _ASM_UBICOM32_BOARD_H
- +
- +extern const char *board_get_revision(void);
- +extern void __init board_init(void);
- +
- +#endif /* _ASM_UBICOM32_BOARD_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/byteorder.h
- @@ -0,0 +1,35 @@
- +/*
- + * arch/ubicom32/include/asm/byteorder.h
- + * Byte order swapping utility routines.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_BYTEORDER_H
- +#define _ASM_UBICOM32_BYTEORDER_H
- +
- +#include <linux/types.h>
- +#include <linux/byteorder/big_endian.h>
- +
- +#endif /* _ASM_UBICOM32_BYTEORDER_H */
- +
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/elf.h
- @@ -0,0 +1,167 @@
- +/*
- + * arch/ubicom32/include/asm/elf.h
- + * Definitions for elf executable format for Ubicom32 architecture.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_ELF_H
- +#define _ASM_UBICOM32_ELF_H
- +
- +/*
- + * ELF register definitions..
- + */
- +
- +#include <asm/ptrace.h>
- +#include <asm/user.h>
- +
- +/*
- + * Processor specific flags for the ELF header e_flags field.
- + */
- +#define EF_UBICOM32_V3 0x00000001 /* -fmarch=ubicom32v3 */
- +#define EF_UBICOM32_V4 0x00000002 /* -fmarch=ubicom32v4 */
- +#define EF_UBICOM32_PIC 0x80000000 /* -fpic */
- +#define EF_UBICOM32_FDPIC 0x40000000 /* -mfdpic */
- +
- +/*
- + * Ubicom32 ELF relocation types
- + */
- +#define R_UBICOM32_NONE 0
- +#define R_UBICOM32_16 1
- +#define R_UBICOM32_32 2
- +#define R_UBICOM32_LO16 3
- +#define R_UBICOM32_HI16 4
- +#define R_UBICOM32_21_PCREL 5
- +#define R_UBICOM32_24_PCREL 6
- +#define R_UBICOM32_HI24 7
- +#define R_UBICOM32_LO7_S 8
- +#define R_UBICOM32_LO7_2_S 9
- +#define R_UBICOM32_LO7_4_S 10
- +#define R_UBICOM32_LO7_D 11
- +#define R_UBICOM32_LO7_2_D 12
- +#define R_UBICOM32_LO7_4_D 13
- +#define R_UBICOM32_32_HARVARD 14
- +#define R_UBICOM32_LO7_CALLI 15
- +#define R_UBICOM32_LO16_CALLI 16
- +#define R_UBICOM32_GOT_HI24 17
- +#define R_UBICOM32_GOT_LO7_S 18
- +#define R_UBICOM32_GOT_LO7_2_S 19
- +#define R_UBICOM32_GOT_LO7_4_S 20
- +#define R_UBICOM32_GOT_LO7_D 21
- +#define R_UBICOM32_GOT_LO7_2_D 22
- +#define R_UBICOM32_GOT_LO7_4_D 23
- +#define R_UBICOM32_FUNCDESC_GOT_HI24 24
- +#define R_UBICOM32_FUNCDESC_GOT_LO7_S 25
- +#define R_UBICOM32_FUNCDESC_GOT_LO7_2_S 26
- +#define R_UBICOM32_FUNCDESC_GOT_LO7_4_S 27
- +#define R_UBICOM32_FUNCDESC_GOT_LO7_D 28
- +#define R_UBICOM32_FUNCDESC_GOT_LO7_2_D 29
- +#define R_UBICOM32_FUNCDESC_GOT_LO7_4_D 30
- +#define R_UBICOM32_GOT_LO7_CALLI 31
- +#define R_UBICOM32_FUNCDESC_GOT_LO7_CALLI 32
- +#define R_UBICOM32_FUNCDESC_VALUE 33
- +#define R_UBICOM32_FUNCDESC 34
- +#define R_UBICOM32_GOTOFFSET_LO 35
- +#define R_UBICOM32_GOTOFFSET_HI 36
- +#define R_UBICOM32_FUNCDESC_GOTOFFSET_LO 37
- +#define R_UBICOM32_FUNCDESC_GOTOFFSET_HI 38
- +#define R_UBICOM32_GNU_VTINHERIT 200
- +#define R_UBICOM32_GNU_VTENTRY 201
- +
- +typedef unsigned long elf_greg_t;
- +
- +#define ELF_NGREG (sizeof(struct pt_regs) / sizeof(elf_greg_t))
- +typedef elf_greg_t elf_gregset_t[ELF_NGREG];
- +
- +typedef struct user_ubicom32fp_struct elf_fpregset_t;
- +
- +/*
- + * This is used to ensure we don't load something for the wrong architecture.
- + */
- +#define elf_check_arch(x) ((x)->e_machine == EM_UBICOM32)
- +
- +#define elf_check_fdpic(x) ((x)->e_flags & EF_UBICOM32_FDPIC)
- +
- +#define elf_check_const_displacement(x) ((x)->e_flags & EF_UBICOM32_PIC)
- +
- +/*
- + * These are used to set parameters in the core dumps.
- + */
- +#define ELF_CLASS ELFCLASS32
- +#define ELF_DATA ELFDATA2MSB
- +#define ELF_ARCH EM_UBICOM32
- +
- +/* For SVR4/m68k the function pointer to be registered with `atexit' is
- + passed in %a1. Although my copy of the ABI has no such statement, it
- + is actually used on ASV. */
- +#define ELF_PLAT_INIT(_r, load_addr) _r->a1 = 0
- +
- +#define ELF_FDPIC_PLAT_INIT(_regs, _exec_map_addr, _interp_map_addr, \
- + _dynamic_addr) \
- + do { \
- + _regs->dn[1] = _exec_map_addr; \
- + _regs->dn[2] = _interp_map_addr; \
- + _regs->dn[3] = _dynamic_addr; \
- + _regs->an[1] = 0; /* dl_fini will be set by ldso */ \
- + } while (0)
- +
- +#define USE_ELF_CORE_DUMP
- +#define ELF_EXEC_PAGESIZE 4096
- +
- +#ifdef __KERNEL__
- +#ifdef CONFIG_UBICOM32_V4
- +#define ELF_FDPIC_CORE_EFLAGS (EF_UBICOM32_FDPIC | EF_UBICOM32_V4)
- +#elif defined CONFIG_UBICOM32_V3
- +#define ELF_FDPIC_CORE_EFLAGS (EF_UBICOM32_FDPIC | EF_UBICOM32_V3)
- +#else
- +#error Unknown/Unsupported ubicom32 architecture.
- +#endif
- +#endif
- +
- +/* This is the location that an ET_DYN program is loaded if exec'ed. Typical
- + use of this is to invoke "./ld.so someprog" to test out a new version of
- + the loader. We need to make sure that it is out of the way of the program
- + that it will "exec", and that there is sufficient room for the brk. */
- +
- +#define ELF_ET_DYN_BASE 0xD0000000UL
- +
- +/*
- + * For Ubicom32, the elf_gregset_t and struct pt_regs are the same size
- + * data structure so a copy is performed instead of providing the
- + * ELF_CORE_COPY_REGS macro.
- + */
- +
- +/* This yields a mask that user programs can use to figure out what
- + instruction set this cpu supports. */
- +
- +#define ELF_HWCAP (0)
- +
- +/* This yields a string that ld.so will use to load implementation
- + specific libraries for optimization. This is more specific in
- + intent than poking at uname or /proc/cpuinfo. */
- +
- +#define ELF_PLATFORM (NULL)
- +
- +#define SET_PERSONALITY(ex, ibcs2) set_personality((ibcs2)?PER_SVR4:PER_LINUX)
- +
- +#endif /* _ASM_UBICOM32_ELF_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/errno.h
- @@ -0,0 +1,33 @@
- +/*
- + * arch/ubicom32/include/asm/errno.h
- + * Generic errno.h for Ubicom32 architecture.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_ERRNO_H
- +#define _ASM_UBICOM32_ERRNO_H
- +
- +#include <asm-generic/errno.h>
- +
- +#endif /* _ASM_UBICOM32_ERRNO_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/fcntl.h
- @@ -0,0 +1,38 @@
- +/*
- + * arch/ubicom32/include/asm/fcntl.h
- + * File control bit definitions for Ubicom32 architecture.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_FCNTL_H
- +#define _ASM_UBICOM32_FCNTL_H
- +
- +#define O_DIRECTORY 040000 /* must be a directory */
- +#define O_NOFOLLOW 0100000 /* don't follow links */
- +#define O_DIRECT 0200000 /* direct disk access hint - currently ignored */
- +#define O_LARGEFILE 0400000
- +
- +#include <asm-generic/fcntl.h>
- +
- +#endif /* _ASM_UBICOM32_FCNTL_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/flat.h
- @@ -0,0 +1,73 @@
- +/*
- + * arch/ubicom32/include/asm/flat.h
- + * Definitions to support flat-format executables.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +
- +#ifndef _ASM_UBICOM32_FLAT_H
- +#define _ASM_UBICOM32_FLAT_H
- +
- +#define ARCH_FLAT_ALIGN 0x80
- +#define ARCH_FLAT_ALIGN_TEXT 1
- +
- +#define R_UBICOM32_32 2
- +#define R_UBICOM32_HI24 7
- +#define R_UBICOM32_LO7_S 8
- +#define R_UBICOM32_LO7_2_S 9
- +#define R_UBICOM32_LO7_4_S 10
- +#define R_UBICOM32_LO7_D 11
- +#define R_UBICOM32_LO7_2_D 12
- +#define R_UBICOM32_LO7_4_D 13
- +#define R_UBICOM32_LO7_CALLI 15
- +#define R_UBICOM32_LO16_CALLI 16
- +
- +extern void ubicom32_flat_put_addr_at_rp(unsigned long *rp, u32_t val, u32_t rval, unsigned long *p);
- +extern unsigned long ubicom32_flat_get_addr_from_rp(unsigned long *rp, u32_t relval, u32_t flags, unsigned long *p);
- +
- +#define flat_stack_align(sp) /* nothing needed */
- +#define flat_argvp_envp_on_stack() 1
- +#define flat_old_ram_flag(flags) (flags)
- +#define flat_reloc_valid(reloc, size) ((reloc) <= (size))
- +#define flat_get_addr_from_rp(rp, relval, flags, p) (ubicom32_flat_get_addr_from_rp(rp, relval,flags, p))
- +#define flat_put_addr_at_rp(rp, val, relval) do {ubicom32_flat_put_addr_at_rp(rp, val, relval, &persistent);} while(0)
- +#define flat_get_relocate_addr(rel) ((persistent) ? (persistent & 0x07ffffff) : (rel & 0x07ffffff))
- +
- +static inline int flat_set_persistent(unsigned int relval, unsigned long *p)
- +{
- + if (*p) {
- + return 0;
- + } else {
- + if ((relval >> 27) != R_UBICOM32_32) {
- + /*
- + * Something other than UBICOM32_32. The next entry has the relocation.
- + */
- + *p = relval;
- + return 1;
- + }
- + }
- + return 0;
- +}
- +
- +#endif /* _ASM_UBICOM32_FLAT_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/fpu.h
- @@ -0,0 +1,37 @@
- +/*
- + * arch/ubicom32/include/asm/fpu.h
- + * Floating point state definitions for Ubicom32 architecture.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_FPU_H
- +#define _ASM_UBICOM32_FPU_H
- +
- +/*
- + * MAX floating point unit state size (FSAVE/FRESTORE)
- + */
- +/* No FP unit present then... */
- +#define FPSTATESIZE (2) /* dummy size */
- +
- +#endif /* _ASM_UBICOM32_FPU_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/futex.h
- @@ -0,0 +1,33 @@
- +/*
- + * arch/ubicom32/include/asm/futex.h
- + * Generic futex.h for Ubicom32 architecture.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_FUTEX_H
- +#define _ASM_UBICOM32_FUTEX_H
- +
- +#include <asm-generic/futex.h>
- +
- +#endif /* _ASM_UBICOM32_FUTEX_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/ioctl.h
- @@ -0,0 +1,33 @@
- +/*
- + * arch/ubicom32/include/asm/ioctl.h
- + * Generic ioctl.h for Ubicom32 architecture.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_IOCTL_H
- +#define _ASM_UBICOM32_IOCTL_H
- +
- +#include <asm-generic/ioctl.h>
- +
- +#endif /* _ASM_UBICOM32_IOCTL_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/ioctls.h
- @@ -0,0 +1,111 @@
- +/*
- + * arch/ubicom32/include/asm/ioctls.h
- + * Definitions of ioctls for Ubicom32 architecture.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_IOCTLS_H
- +#define _ASM_UBICOM32_IOCTLS_H
- +
- +#include <asm/ioctl.h>
- +
- +/* 0x54 is just a magic number to make these relatively unique ('T') */
- +
- +#define TCGETS 0x5401
- +#define TCSETS 0x5402
- +#define TCSETSW 0x5403
- +#define TCSETSF 0x5404
- +#define TCGETA 0x5405
- +#define TCSETA 0x5406
- +#define TCSETAW 0x5407
- +#define TCSETAF 0x5408
- +#define TCSBRK 0x5409
- +#define TCXONC 0x540A
- +#define TCFLSH 0x540B
- +#define TIOCEXCL 0x540C
- +#define TIOCNXCL 0x540D
- +#define TIOCSCTTY 0x540E
- +#define TIOCGPGRP 0x540F
- +#define TIOCSPGRP 0x5410
- +#define TIOCOUTQ 0x5411
- +#define TIOCSTI 0x5412
- +#define TIOCGWINSZ 0x5413
- +#define TIOCSWINSZ 0x5414
- +#define TIOCMGET 0x5415
- +#define TIOCMBIS 0x5416
- +#define TIOCMBIC 0x5417
- +#define TIOCMSET 0x5418
- +#define TIOCGSOFTCAR 0x5419
- +#define TIOCSSOFTCAR 0x541A
- +#define FIONREAD 0x541B
- +#define TIOCINQ FIONREAD
- +#define TIOCLINUX 0x541C
- +#define TIOCCONS 0x541D
- +#define TIOCGSERIAL 0x541E
- +#define TIOCSSERIAL 0x541F
- +#define TIOCPKT 0x5420
- +#define FIONBIO 0x5421
- +#define TIOCNOTTY 0x5422
- +#define TIOCSETD 0x5423
- +#define TIOCGETD 0x5424
- +#define TCSBRKP 0x5425 /* Needed for POSIX tcsendbreak() */
- +#define TIOCSBRK 0x5427 /* BSD compatibility */
- +#define TIOCCBRK 0x5428 /* BSD compatibility */
- +#define TIOCGSID 0x5429 /* Return the session ID of FD */
- +#define TCGETS2 _IOR('T',0x2A, struct termios2)
- +#define TCSETS2 _IOW('T',0x2B, struct termios2)
- +#define TCSETSW2 _IOW('T',0x2C, struct termios2)
- +#define TCSETSF2 _IOW('T',0x2D, struct termios2)
- +#define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */
- +#define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */
- +
- +#define FIONCLEX 0x5450 /* these numbers need to be adjusted. */
- +#define FIOCLEX 0x5451
- +#define FIOASYNC 0x5452
- +#define TIOCSERCONFIG 0x5453
- +#define TIOCSERGWILD 0x5454
- +#define TIOCSERSWILD 0x5455
- +#define TIOCGLCKTRMIOS 0x5456
- +#define TIOCSLCKTRMIOS 0x5457
- +#define TIOCSERGSTRUCT 0x5458 /* For debugging only */
- +#define TIOCSERGETLSR 0x5459 /* Get line status register */
- +#define TIOCSERGETMULTI 0x545A /* Get multiport config */
- +#define TIOCSERSETMULTI 0x545B /* Set multiport config */
- +
- +#define TIOCMIWAIT 0x545C /* wait for a change on serial input line(s) */
- +#define TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */
- +#define FIOQSIZE 0x545E
- +
- +/* Used for packet mode */
- +#define TIOCPKT_DATA 0
- +#define TIOCPKT_FLUSHREAD 1
- +#define TIOCPKT_FLUSHWRITE 2
- +#define TIOCPKT_STOP 4
- +#define TIOCPKT_START 8
- +#define TIOCPKT_NOSTOP 16
- +#define TIOCPKT_DOSTOP 32
- +
- +#define TIOCSER_TEMT 0x01 /* Transmitter physically empty */
- +
- +#endif /* _ASM_UBICOM32_IOCTLS_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/ipcbuf.h
- @@ -0,0 +1,55 @@
- +/*
- + * arch/ubicom32/include/asm/ipcbuf.h
- + * Definition of ipc64_perm struct for Ubicom32 architecture.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_IPCBUF_H
- +#define _ASM_UBICOM32_IPCBUF_H
- +
- +/*
- + * The user_ipc_perm structure for m68k architecture.
- + * Note extra padding because this structure is passed back and forth
- + * between kernel and user space.
- + *
- + * Pad space is left for:
- + * - 32-bit mode_t and seq
- + * - 2 miscellaneous 32-bit values
- + */
- +struct ipc64_perm
- +{
- + __kernel_key_t key;
- + __kernel_uid32_t uid;
- + __kernel_gid32_t gid;
- + __kernel_uid32_t cuid;
- + __kernel_gid32_t cgid;
- + __kernel_mode_t mode;
- + unsigned short __pad1;
- + unsigned short seq;
- + unsigned short __pad2;
- + unsigned long __unused1;
- + unsigned long __unused2;
- +};
- +
- +#endif /* _ASM_UBICOM32_IPCBUF_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/irqflags.h
- @@ -0,0 +1,94 @@
- +/*
- + * arch/ubicom32/include/asm/irqflags.h
- + * Raw implementation of local IRQ functions.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_IRQFLAGS_H
- +#define _ASM_UBICOM32_IRQFLAGS_H
- +
- +#include <linux/thread_info.h>
- +#include <asm/ubicom32-common.h>
- +#include <asm/smp.h>
- +#include <asm/ldsr.h>
- +
- +#if defined(CONFIG_PREEMPT)
- +#error Not supported by Ubicom32 irq handling, yet!
- +#endif
- +
- +/*
- + * raw_local_irq_enable()
- + * Enable interrupts for this thread.
- + */
- +static inline void raw_local_irq_enable(void)
- +{
- + ldsr_local_irq_enable();
- +}
- +
- +/*
- + * raw_local_irq_disable()
- + * Disable interrupts for this thread.
- + */
- +static inline void raw_local_irq_disable(void)
- +{
- + ldsr_local_irq_disable();
- +}
- +
- +/*
- + * raw_local_save_flags()
- + * Get the current IRQ state.
- + */
- +#define raw_local_save_flags(flags) \
- +do { \
- + (flags) = ldsr_local_irq_is_disabled(); \
- +} while (0)
- +
- +/*
- + * raw_local_irq_save()
- + * Save the current interrupt state and disable interrupts.
- + */
- +#define raw_local_irq_save(flags) \
- +do { \
- + (flags) = ldsr_local_irq_save(); \
- +} while (0)
- +
- +/*
- + * raw_local_irq_restore()
- + * Restore the IRQ state back to flags.
- + */
- +static inline void raw_local_irq_restore(unsigned long flags)
- +{
- + ldsr_local_irq_restore(flags);
- +}
- +
- +/*
- + * raw_irqs_disabled_flags()
- + * Return true if the flags indicate that IRQ(s) are disabled.
- + */
- +static inline int raw_irqs_disabled_flags(unsigned long flags)
- +{
- + return (flags);
- +}
- +
- +#endif /* _ASM_UBICOM32_IRQFLAGS_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/Kbuild
- @@ -0,0 +1 @@
- +include include/asm-generic/Kbuild.asm
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/kdebug.h
- @@ -0,0 +1,33 @@
- +/*
- + * arch/ubicom32/include/asm/kdebug.h
- + * Generic kdebug.h for Ubicom32 architecture.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_KDEBUG_H
- +#define _ASM_UBICOM32_KDEBUG_H
- +
- +#include <asm-generic/kdebug.h>
- +
- +#endif /* _ASM_UBICOM32_KDEBUG_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/linkage.h
- @@ -0,0 +1,34 @@
- +/*
- + * arch/ubicom32/include/asm/linkage.h
- + * Definition of Ubicom32 architecture specific linkage types.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_LINKAGE_H
- +#define _ASM_UBICOM32_LINKAGE_H
- +
- +#define __ocm_text __section(.ocm_text)
- +#define __ocm_data __section(.ocm_data)
- +
- +#endif /* _ASM_UBICOM32_LINKAGE_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/local.h
- @@ -0,0 +1,33 @@
- +/*
- + * arch/ubicom32/include/asm/local.h
- + * Generic local.h for Ubicom32 architecture.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_LOCAL_H
- +#define _ASM_UBICOM32_LOCAL_H
- +
- +#include <asm-generic/local.h>
- +
- +#endif /* _ASM_UBICOM32_LOCAL_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/mman.h
- @@ -0,0 +1,44 @@
- +/*
- + * arch/ubicom32/include/asm/mman.h
- + * Memory mapping definitions for Ubicom32 architecture.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_MMAN_H
- +#define _ASM_UBICOM32_MMAN_H
- +
- +#include <asm-generic/mman.h>
- +
- +#define MAP_GROWSDOWN 0x0100 /* stack-like segment */
- +#define MAP_DENYWRITE 0x0800 /* ETXTBSY */
- +#define MAP_EXECUTABLE 0x1000 /* mark it as an executable */
- +#define MAP_LOCKED 0x2000 /* pages are locked */
- +#define MAP_NORESERVE 0x4000 /* don't check for reservations */
- +#define MAP_POPULATE 0x8000 /* populate (prefault) pagetables */
- +#define MAP_NONBLOCK 0x10000 /* do not block on IO */
- +
- +#define MCL_CURRENT 1 /* lock all current mappings */
- +#define MCL_FUTURE 2 /* lock all future mappings */
- +
- +#endif /* _ASM_UBICOM32_MMAN_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/msgbuf.h
- @@ -0,0 +1,58 @@
- +/*
- + * arch/ubicom32/include/asm/msgbuf.h
- + * Definition of msqid64_ds struct for Ubicom32 architecture.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_MSGBUF_H
- +#define _ASM_UBICOM32_MSGBUF_H
- +
- +/*
- + * The msqid64_ds structure for ubicom32 architecture.
- + * Note extra padding because this structure is passed back and forth
- + * between kernel and user space.
- + *
- + * Pad space is left for:
- + * - 64-bit time_t to solve y2038 problem
- + * - 2 miscellaneous 32-bit values
- + */
- +
- +struct msqid64_ds {
- + struct ipc64_perm msg_perm;
- + __kernel_time_t msg_stime; /* last msgsnd time */
- + unsigned long __unused1;
- + __kernel_time_t msg_rtime; /* last msgrcv time */
- + unsigned long __unused2;
- + __kernel_time_t msg_ctime; /* last change time */
- + unsigned long __unused3;
- + unsigned long msg_cbytes; /* current number of bytes on queue */
- + unsigned long msg_qnum; /* number of messages in queue */
- + unsigned long msg_qbytes; /* max number of bytes on queue */
- + __kernel_pid_t msg_lspid; /* pid of last msgsnd */
- + __kernel_pid_t msg_lrpid; /* last receive pid */
- + unsigned long __unused4;
- + unsigned long __unused5;
- +};
- +
- +#endif /* _ASM_UBICOM32_MSGBUF_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/namei.h
- @@ -0,0 +1,38 @@
- +/*
- + * arch/ubicom32/include/asm/namei.h
- + * Definition of __emul_prefix() for Ubicom32 architecture.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_NAMEI_H
- +#define _ASM_UBICOM32_NAMEI_H
- +
- +/* This dummy routine maybe changed to something useful
- + * for /usr/gnemul/ emulation stuff.
- + * Look at asm-sparc/namei.h for details.
- + */
- +
- +#define __emul_prefix() NULL
- +
- +#endif /* _ASM_UBICOM32_NAMEI_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/page.h
- @@ -0,0 +1,106 @@
- +/*
- + * arch/ubicom32/include/asm/page.h
- + * Memory page related operations and definitions.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_PAGE_H
- +#define _ASM_UBICOM32_PAGE_H
- +
- +/* PAGE_SHIFT determines the page size */
- +
- +#define PAGE_SHIFT 12
- +#define PAGE_SIZE (1 << PAGE_SHIFT)
- +#define PAGE_MASK (~(PAGE_SIZE-1))
- +
- +#include <asm/setup.h>
- +
- +#ifndef __ASSEMBLY__
- +
- +#define get_user_page(vaddr) __get_free_page(GFP_KERNEL)
- +#define free_user_page(page, addr) free_page(addr)
- +
- +#define clear_page(page) memset((page), 0, PAGE_SIZE)
- +#define copy_page(to,from) memcpy((to), (from), PAGE_SIZE)
- +
- +#define clear_user_page(page, vaddr, pg) clear_page(page)
- +#define copy_user_page(to, from, vaddr, pg) copy_page(to, from)
- +
- +#define __alloc_zeroed_user_highpage(movableflags, vma, vaddr) \
- + alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr)
- +#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE
- +
- +/*
- + * These are used to make use of C type-checking..
- + */
- +typedef struct { unsigned long pte; } pte_t;
- +typedef struct { unsigned long pmd[16]; } pmd_t;
- +typedef struct { unsigned long pgd; } pgd_t;
- +typedef struct { unsigned long pgprot; } pgprot_t;
- +typedef struct page *pgtable_t;
- +
- +#define pte_val(x) ((x).pte)
- +#define pmd_val(x) ((&x)->pmd[0])
- +#define pgd_val(x) ((x).pgd)
- +#define pgprot_val(x) ((x).pgprot)
- +
- +#define __pte(x) ((pte_t) { (x) } )
- +#define __pmd(x) ((pmd_t) { (x) } )
- +#define __pgd(x) ((pgd_t) { (x) } )
- +#define __pgprot(x) ((pgprot_t) { (x) } )
- +
- +extern unsigned long memory_start;
- +extern unsigned long memory_end;
- +
- +#endif /* !__ASSEMBLY__ */
- +
- +#include <asm/page_offset.h>
- +
- +#define PAGE_OFFSET (PAGE_OFFSET_RAW)
- +
- +#ifndef __ASSEMBLY__
- +
- +#define __pa(vaddr) virt_to_phys((void *)(vaddr))
- +#define __va(paddr) phys_to_virt((unsigned long)(paddr))
- +
- +#define virt_to_pfn(kaddr) (__pa(kaddr) >> PAGE_SHIFT)
- +#define pfn_to_virt(pfn) __va((pfn) << PAGE_SHIFT)
- +
- +#define virt_to_page(addr) (mem_map + (((unsigned long)(addr)-PAGE_OFFSET) >> PAGE_SHIFT))
- +#define page_to_virt(page) ((((page) - mem_map) << PAGE_SHIFT) + PAGE_OFFSET)
- +
- +#define pfn_to_page(pfn) virt_to_page(pfn_to_virt(pfn))
- +#define page_to_pfn(page) virt_to_pfn(page_to_virt(page))
- +#define pfn_valid(pfn) ((pfn) < max_mapnr)
- +
- +#define virt_addr_valid(kaddr) (((void *)(kaddr) >= (void *)PAGE_OFFSET) && \
- + ((void *)(kaddr) < (void *)memory_end))
- +
- +#endif /* __ASSEMBLY__ */
- +
- +#ifdef __KERNEL__
- +#include <asm-generic/page.h>
- +#endif
- +
- +#endif /* _ASM_UBICOM32_PAGE_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/page_offset.h
- @@ -0,0 +1,35 @@
- +/*
- + * arch/ubicom32/include/asm/page_offset.h
- + * Definition of PAGE_OFFSET_RAW for Ubicom32 architecture.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +
- +#ifndef _ASM_UBICOM32_PAGE_OFFSET_H
- +#define _ASM_UBICOM32_PAGE_OFFSET_H
- +
- +/* This handles the memory map.. */
- +#define PAGE_OFFSET_RAW 0x3ffc0000
- +
- +#endif /* _ASM_UBICOM32_PAGE_OFFSET_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/param.h
- @@ -0,0 +1,49 @@
- +/*
- + * arch/ubicom32/include/asm/param.h
- + * Definition of miscellaneous constants, including HZ.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_PARAM_H
- +#define _ASM_UBICOM32_PARAM_H
- +
- +#ifdef __KERNEL__
- +#define HZ CONFIG_HZ
- +#define USER_HZ HZ
- +#define CLOCKS_PER_SEC (USER_HZ)
- +#endif
- +
- +#ifndef HZ
- +#define HZ 100
- +#endif
- +
- +#define EXEC_PAGESIZE 4096
- +
- +#ifndef NOGROUP
- +#define NOGROUP (-1)
- +#endif
- +
- +#define MAXHOSTNAMELEN 64 /* max length of hostname */
- +
- +#endif /* _ASM_UBICOM32_PARAM_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/poll.h
- @@ -0,0 +1,36 @@
- +/*
- + * arch/ubicom32/include/asm/poll.h
- + * Ubicom32 specific poll() related flags definitions.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_POLL_H
- +#define _ASM_UBICOM32_POLL_H
- +
- +#define POLLWRNORM POLLOUT
- +#define POLLWRBAND 0x0100
- +
- +#include <asm-generic/poll.h>
- +
- +#endif /* _ASM_UBICOM32_POLL_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/posix_types.h
- @@ -0,0 +1,93 @@
- +/*
- + * arch/ubicom32/include/asm/posix_types.h
- + * Ubicom32 architecture posix types.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + * Copyright (C) 2004 Microtronix Datacom Ltd
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef __ARCH_UBICOM32_POSIX_TYPES_H
- +#define __ARCH_UBICOM32_POSIX_TYPES_H
- +
- +/*
- + * This file is generally used by user-level software, so you need to
- + * be a little careful about namespace pollution etc. Also, we cannot
- + * assume GCC is being used.
- + */
- +
- +typedef unsigned long __kernel_ino_t;
- +typedef unsigned short __kernel_mode_t;
- +typedef unsigned short __kernel_nlink_t;
- +typedef long __kernel_off_t;
- +typedef int __kernel_pid_t;
- +typedef unsigned short __kernel_ipc_pid_t;
- +typedef unsigned short __kernel_uid_t;
- +typedef unsigned short __kernel_gid_t;
- +typedef unsigned int __kernel_size_t;
- +typedef int __kernel_ssize_t;
- +typedef int __kernel_ptrdiff_t;
- +typedef long __kernel_time_t;
- +typedef long __kernel_suseconds_t;
- +typedef long __kernel_clock_t;
- +typedef int __kernel_timer_t;
- +typedef int __kernel_clockid_t;
- +typedef int __kernel_daddr_t;
- +typedef char * __kernel_caddr_t;
- +typedef unsigned short __kernel_uid16_t;
- +typedef unsigned short __kernel_gid16_t;
- +typedef unsigned int __kernel_uid32_t;
- +typedef unsigned int __kernel_gid32_t;
- +
- +typedef unsigned short __kernel_old_uid_t;
- +typedef unsigned short __kernel_old_gid_t;
- +typedef unsigned short __kernel_old_dev_t;
- +
- +#ifdef __GNUC__
- +typedef long long __kernel_loff_t;
- +#endif
- +
- +typedef struct {
- +#if defined(__KERNEL__) || defined(__USE_ALL)
- + int val[2];
- +#else /* !defined(__KERNEL__) && !defined(__USE_ALL) */
- + int __val[2];
- +#endif /* !defined(__KERNEL__) && !defined(__USE_ALL) */
- +} __kernel_fsid_t;
- +
- +#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
- +
- +#undef __FD_SET
- +#define __FD_SET(d, set) ((set)->fds_bits[__FDELT(d)] |= __FDMASK(d))
- +
- +#undef __FD_CLR
- +#define __FD_CLR(d, set) ((set)->fds_bits[__FDELT(d)] &= ~__FDMASK(d))
- +
- +#undef __FD_ISSET
- +#define __FD_ISSET(d, set) ((set)->fds_bits[__FDELT(d)] & __FDMASK(d))
- +
- +#undef __FD_ZERO
- +#define __FD_ZERO(fdsetp) (memset (fdsetp, 0, sizeof(*(fd_set *)fdsetp)))
- +
- +#endif /* defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2) */
- +
- +#endif
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/ptrace.h
- @@ -0,0 +1,177 @@
- +/*
- + * arch/ubicom32/include/asm/ptrace.h
- + * Ubicom32 architecture ptrace support.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_PTRACE_H
- +#define _ASM_UBICOM32_PTRACE_H
- +
- +#ifndef __ASSEMBLY__
- +
- +/*
- + * We use hard coded constants because this is shared with user
- + * space and the values are NOT allowed to change. Only fields
- + * that are intended to be exposed get values.
- + */
- +#define PT_D0 0
- +#define PT_D1 4
- +#define PT_D2 8
- +#define PT_D3 12
- +#define PT_D4 16
- +#define PT_D5 20
- +#define PT_D6 24
- +#define PT_D7 28
- +#define PT_D8 32
- +#define PT_D9 36
- +#define PT_D10 40
- +#define PT_D11 44
- +#define PT_D12 48
- +#define PT_D13 52
- +#define PT_D14 56
- +#define PT_D15 60
- +#define PT_A0 64
- +#define PT_A1 68
- +#define PT_A2 72
- +#define PT_A3 76
- +#define PT_A4 80
- +#define PT_A5 84
- +#define PT_A6 88
- +#define PT_A7 92
- +#define PT_SP 92
- +#define PT_ACC0HI 96
- +#define PT_ACC0LO 100
- +#define PT_MAC_RC16 104
- +#define PT_ACC1HI 108
- +#define PT_ACC1LO 112
- +#define PT_SOURCE3 116
- +#define PT_INST_CNT 120
- +#define PT_CSR 124
- +#define PT_DUMMY_UNUSED 128
- +#define PT_INT_MASK0 132
- +#define PT_INT_MASK1 136
- +#define PT_TRAP_CAUSE 140
- +#define PT_PC 144
- +#define PT_ORIGINAL_D0 148
- +#define PT_FRAME_TYPE 152
- +
- +/*
- + * The following 'registers' are not registers at all but are used
- + * locate the relocated sections.
- + */
- +#define PT_TEXT_ADDR 200
- +#define PT_TEXT_END_ADDR 204
- +#define PT_DATA_ADDR 208
- +#define PT_EXEC_FDPIC_LOADMAP 212
- +#define PT_INTERP_FDPIC_LOADMAP 216
- +
- +/*
- + * This struct defines the way the registers are stored on the
- + * stack during a system call.
- + */
- +enum thread_type {
- + NORMAL_THREAD,
- + KERNEL_THREAD,
- +};
- +
- +#define UBICOM32_FRAME_TYPE_SYSCALL -1 /* System call frame */
- +#define UBICOM32_FRAME_TYPE_INVALID 0 /* Invalid frame, no longer in use */
- +#define UBICOM32_FRAME_TYPE_INTERRUPT 1 /* Interrupt frame */
- +#define UBICOM32_FRAME_TYPE_TRAP 2 /* Trap frame */
- +#define UBICOM32_FRAME_TYPE_SIGTRAMP 3 /* Signal trampoline frame. */
- +#define UBICOM32_FRAME_TYPE_NEW_THREAD 4 /* New Thread. */
- +
- +struct pt_regs {
- + /*
- + * Data Registers
- + */
- + unsigned long dn[16];
- +
- + /*
- + * Address Registers
- + */
- + unsigned long an[8];
- +
- + /*
- + * Per thread misc registers.
- + */
- + unsigned long acc0[2];
- + unsigned long mac_rc16;
- + unsigned long acc1[2];
- + unsigned long source3;
- + unsigned long inst_cnt;
- + unsigned long csr;
- + unsigned long dummy_unused;
- + unsigned long int_mask0;
- + unsigned long int_mask1;
- + unsigned long trap_cause;
- + unsigned long pc;
- + unsigned long original_dn_0;
- +
- + /*
- + * Frame type. Syscall frames are -1. For other types look above.
- + */
- + unsigned long frame_type;
- +
- + /*
- + * These fields are not exposed to ptrace.
- + */
- + unsigned long previous_pc;
- + long nesting_level; /* When the kernel in in user space this
- + * will be -1. */
- + unsigned long thread_type; /* This indicates if this is a kernel
- + * thread. */
- +};
- +
- +/*
- + * This is the extended stack used by signal handlers and the context
- + * switcher: it's pushed after the normal "struct pt_regs".
- + */
- +struct switch_stack {
- + unsigned long dummy;
- +};
- +
- +#ifdef __KERNEL__
- +
- +/* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
- +#define PTRACE_GETREGS 12
- +#define PTRACE_SETREGS 13
- +
- +#ifndef PS_S
- +#define PS_S (0x2000)
- +#define PS_M (0x1000)
- +#endif
- +
- +extern int __user_mode(unsigned long sp);
- +
- +#define user_mode(regs) (__user_mode((regs->an[7])))
- +#define user_stack(regs) ((regs)->an[7])
- +#define instruction_pointer(regs) ((regs)->pc)
- +#define profile_pc(regs) instruction_pointer(regs)
- +extern void show_regs(struct pt_regs *);
- +#endif /* __KERNEL__ */
- +
- +#endif /* __ASSEMBLY__ */
- +
- +#endif /* _ASM_UBICOM32_PTRACE_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/resource.h
- @@ -0,0 +1,33 @@
- +/*
- + * arch/ubicom32/include/asm/resource.h
- + * Generic definitions for Ubicom32 architecture.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_RESOURCE_H
- +#define _ASM_UBICOM32_RESOURCE_H
- +
- +#include <asm-generic/resource.h>
- +
- +#endif /* _ASM_UBICOM32_RESOURCE_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/sections.h
- @@ -0,0 +1,33 @@
- +/*
- + * arch/ubicom32/include/asm/sections.h
- + * Generic sections.h definitions for Ubicom32 architecture.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_SECTIONS_H
- +#define _ASM_UBICOM32_SECTIONS_H
- +
- +#include <asm-generic/sections.h>
- +
- +#endif /* _ASM_UBICOM32_SECTIONS_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/segment.h
- @@ -0,0 +1,78 @@
- +/*
- + * arch/ubicom32/include/asm/segment.h
- + * Memory segment definitions for Ubicom32 architecture.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_SEGMENT_H
- +#define _ASM_UBICOM32_SEGMENT_H
- +
- +/* define constants */
- +/* Address spaces (FC0-FC2) */
- +#define USER_DATA (1)
- +#ifndef __USER_DS
- +#define __USER_DS (USER_DATA)
- +#endif
- +#define USER_PROGRAM (2)
- +#define SUPER_DATA (5)
- +#ifndef __KERNEL_DS
- +#define __KERNEL_DS (SUPER_DATA)
- +#endif
- +#define SUPER_PROGRAM (6)
- +#define CPU_SPACE (7)
- +
- +#ifndef __ASSEMBLY__
- +
- +typedef struct {
- + unsigned long seg;
- +} mm_segment_t;
- +
- +#define MAKE_MM_SEG(s) ((mm_segment_t) { (s) })
- +#define USER_DS MAKE_MM_SEG(__USER_DS)
- +#define KERNEL_DS MAKE_MM_SEG(__KERNEL_DS)
- +
- +/*
- + * Get/set the SFC/DFC registers for MOVES instructions
- + */
- +
- +static inline mm_segment_t get_fs(void)
- +{
- + return USER_DS;
- +}
- +
- +static inline mm_segment_t get_ds(void)
- +{
- + /* return the supervisor data space code */
- + return KERNEL_DS;
- +}
- +
- +static inline void set_fs(mm_segment_t val)
- +{
- +}
- +
- +#define segment_eq(a,b) ((a).seg == (b).seg)
- +
- +#endif /* __ASSEMBLY__ */
- +
- +#endif /* _ASM_UBICOM32_SEGMENT_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/sembuf.h
- @@ -0,0 +1,52 @@
- +/*
- + * arch/ubicom32/include/asm/sembuf.h
- + * The semid64_ds structure for Ubicom32 architecture.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_SEMBUF_H
- +#define _ASM_UBICOM32_SEMBUF_H
- +
- +/*
- + * The semid64_ds structure for ubicom32 architecture.
- + * Note extra padding because this structure is passed back and forth
- + * between kernel and user space.
- + *
- + * Pad space is left for:
- + * - 64-bit time_t to solve y2038 problem
- + * - 2 miscellaneous 32-bit values
- + */
- +
- +struct semid64_ds {
- + struct ipc64_perm sem_perm; /* permissions .. see ipc.h */
- + __kernel_time_t sem_otime; /* last semop time */
- + unsigned long __unused1;
- + __kernel_time_t sem_ctime; /* last change time */
- + unsigned long __unused2;
- + unsigned long sem_nsems; /* no. of semaphores in array */
- + unsigned long __unused3;
- + unsigned long __unused4;
- +};
- +
- +#endif /* _ASM_UBICOM32_SEMBUF_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/setup.h
- @@ -0,0 +1,35 @@
- +/*
- + * arch/ubicom32/include/asm/setup.h
- + * Kernel command line length definition.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + * Copyright (C) 2004, Microtronix Datacom Ltd., All rights reserved.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +
- +#ifndef _ASM_UBICOM32_SETUP_H
- +#define _ASM_UBICOM32_SETUP_H
- +
- +#define COMMAND_LINE_SIZE 512
- +
- +#endif /* _ASM_UBICOM32_SETUP_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/shmbuf.h
- @@ -0,0 +1,69 @@
- +/*
- + * arch/ubicom32/include/asm/shmbuf.h
- + * The shmid64_ds structure for the Ubicom32 architecture.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_SHMBUF_H
- +#define _ASM_UBICOM32_SHMBUF_H
- +
- +/*
- + * The shmid64_ds structure for m68k architecture.
- + * Note extra padding because this structure is passed back and forth
- + * between kernel and user space.
- + *
- + * Pad space is left for:
- + * - 64-bit time_t to solve y2038 problem
- + * - 2 miscellaneous 32-bit values
- + */
- +
- +struct shmid64_ds {
- + struct ipc64_perm shm_perm; /* operation perms */
- + size_t shm_segsz; /* size of segment (bytes) */
- + __kernel_time_t shm_atime; /* last attach time */
- + unsigned long __unused1;
- + __kernel_time_t shm_dtime; /* last detach time */
- + unsigned long __unused2;
- + __kernel_time_t shm_ctime; /* last change time */
- + unsigned long __unused3;
- + __kernel_pid_t shm_cpid; /* pid of creator */
- + __kernel_pid_t shm_lpid; /* pid of last operator */
- + unsigned long shm_nattch; /* no. of current attaches */
- + unsigned long __unused4;
- + unsigned long __unused5;
- +};
- +
- +struct shminfo64 {
- + unsigned long shmmax;
- + unsigned long shmmin;
- + unsigned long shmmni;
- + unsigned long shmseg;
- + unsigned long shmall;
- + unsigned long __unused1;
- + unsigned long __unused2;
- + unsigned long __unused3;
- + unsigned long __unused4;
- +};
- +
- +#endif /* _ASM_UBICOM32_SHMBUF_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/shmparam.h
- @@ -0,0 +1,35 @@
- +/*
- + * arch/ubicom32/include/asm/shmparam.h
- + * Shared memory definitions for Ubicom32 architecture.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + * Copyright (C) 2004 Microtronix Datacom Ltd
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + * Alpha, ix86, M68K, Sparc, ...et al
- + */
- +#ifndef _ASM_UBICOM32_SHMPARAM_H
- +#define _ASM_UBICOM32_SHMPARAM_H
- +
- +#define SHMLBA PAGE_SIZE /* attach addr a multiple of this */
- +
- +#endif /* _ASM_UBICOM32_SHMPARAM_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/sigcontext.h
- @@ -0,0 +1,37 @@
- +/*
- + * arch/ubicom32/include/asm/sigcontext.h
- + * Definition of sigcontext struct for Ubicom32 architecture.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_SIGCONTEXT_H
- +#define _ASM_UBICOM32_SIGCONTEXT_H
- +
- +#include <asm/ptrace.h>
- +
- +struct sigcontext {
- + struct pt_regs sc_regs;
- +};
- +
- +#endif /* _ASM_UBICOM32_SIGCONTEXT_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/siginfo.h
- @@ -0,0 +1,33 @@
- +/*
- + * arch/ubicom32/include/asm/siginfo.h
- + * Generic siginfo.h definitions for Ubicom32 architecture.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_SIGINFO_H
- +#define _ASM_UBICOM32_SIGINFO_H
- +
- +#include <asm-generic/siginfo.h>
- +
- +#endif /* _ASM_UBICOM32_SIGINFO_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/signal.h
- @@ -0,0 +1,180 @@
- +/*
- + * arch/ubicom32/include/asm/signal.h
- + * Signal related definitions for Ubicom32 architecture.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_SIGNAL_H
- +#define _ASM_UBICOM32_SIGNAL_H
- +
- +#include <linux/types.h>
- +
- +/* Avoid too many header ordering problems. */
- +struct siginfo;
- +
- +#ifdef __KERNEL__
- +/* Most things should be clean enough to redefine this at will, if care
- + is taken to make libc match. */
- +
- +#define _NSIG 64
- +#define _NSIG_BPW 32
- +#define _NSIG_WORDS (_NSIG / _NSIG_BPW)
- +
- +typedef unsigned long old_sigset_t; /* at least 32 bits */
- +
- +typedef struct {
- + unsigned long sig[_NSIG_WORDS];
- +} sigset_t;
- +
- +#endif /* __KERNEL__ */
- +
- +#define SIGHUP 1
- +#define SIGINT 2
- +#define SIGQUIT 3
- +#define SIGILL 4
- +#define SIGTRAP 5
- +#define SIGABRT 6
- +#define SIGIOT 6
- +#define SIGBUS 7
- +#define SIGFPE 8
- +#define SIGKILL 9
- +#define SIGUSR1 10
- +#define SIGSEGV 11
- +#define SIGUSR2 12
- +#define SIGPIPE 13
- +#define SIGALRM 14
- +#define SIGTERM 15
- +#define SIGSTKFLT 16
- +#define SIGCHLD 17
- +#define SIGCONT 18
- +#define SIGSTOP 19
- +#define SIGTSTP 20
- +#define SIGTTIN 21
- +#define SIGTTOU 22
- +#define SIGURG 23
- +#define SIGXCPU 24
- +#define SIGXFSZ 25
- +#define SIGVTALRM 26
- +#define SIGPROF 27
- +#define SIGWINCH 28
- +#define SIGIO 29
- +#define SIGPOLL SIGIO
- +/*
- +#define SIGLOST 29
- +*/
- +#define SIGPWR 30
- +#define SIGSYS 31
- +#define SIGUNUSED 31
- +
- +/* These should not be considered constants from userland. */
- +#define SIGRTMIN 32
- +#define SIGRTMAX _NSIG
- +
- +/*
- + * SA_FLAGS values:
- + *
- + * SA_ONSTACK indicates that a registered stack_t will be used.
- + * SA_RESTART flag to get restarting signals (which were the default long ago)
- + * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop.
- + * SA_RESETHAND clears the handler when the signal is delivered.
- + * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies.
- + * SA_NODEFER prevents the current signal from being masked in the handler.
- + *
- + * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single
- + * Unix names RESETHAND and NODEFER respectively.
- + */
- +#define SA_NOCLDSTOP 0x00000001
- +#define SA_NOCLDWAIT 0x00000002
- +#define SA_SIGINFO 0x00000004
- +#define SA_ONSTACK 0x08000000
- +#define SA_RESTART 0x10000000
- +#define SA_NODEFER 0x40000000
- +#define SA_RESETHAND 0x80000000
- +
- +#define SA_NOMASK SA_NODEFER
- +#define SA_ONESHOT SA_RESETHAND
- +
- +/*
- + * sigaltstack controls
- + */
- +#define SS_ONSTACK 1
- +#define SS_DISABLE 2
- +
- +#define MINSIGSTKSZ 2048
- +#define SIGSTKSZ 8192
- +
- +#include <asm-generic/signal.h>
- +
- +#ifdef __KERNEL__
- +struct old_sigaction {
- + __sighandler_t sa_handler;
- + old_sigset_t sa_mask;
- + unsigned long sa_flags;
- + void (*sa_restorer)(void);
- +};
- +
- +struct sigaction {
- + __sighandler_t sa_handler;
- + unsigned long sa_flags;
- + void (*sa_restorer)(void);
- + sigset_t sa_mask; /* mask last for extensibility */
- +};
- +
- +struct k_sigaction {
- + struct sigaction sa;
- +};
- +#else
- +/* Here we must cater to libcs that poke about in kernel headers. */
- +
- +struct sigaction {
- + union {
- + __sighandler_t _sa_handler;
- + void (*_sa_sigaction)(int, struct siginfo *, void *);
- + } _u;
- + sigset_t sa_mask;
- + unsigned long sa_flags;
- + void (*sa_restorer)(void);
- +};
- +
- +#define sa_handler _u._sa_handler
- +#define sa_sigaction _u._sa_sigaction
- +
- +#endif /* __KERNEL__ */
- +
- +typedef struct sigaltstack {
- + void *ss_sp;
- + int ss_flags;
- + size_t ss_size;
- +} stack_t;
- +
- +#ifdef __KERNEL__
- +
- +#include <asm/sigcontext.h>
- +#undef __HAVE_ARCH_SIG_BITOPS
- +
- +#define ptrace_signal_deliver(regs, cookie) do { } while (0)
- +
- +#endif /* __KERNEL__ */
- +
- +#endif /* _ASM_UBICOM32_SIGNAL_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/socket.h
- @@ -0,0 +1,84 @@
- +/*
- + * arch/ubicom32/include/asm/socket.h
- + * Socket options definitions for Ubicom32 architecture.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_SOCKET_H
- +#define _ASM_UBICOM32_SOCKET_H
- +
- +#include <asm/sockios.h>
- +
- +/* For setsockopt(2) */
- +#define SOL_SOCKET 1
- +
- +#define SO_DEBUG 1
- +#define SO_REUSEADDR 2
- +#define SO_TYPE 3
- +#define SO_ERROR 4
- +#define SO_DONTROUTE 5
- +#define SO_BROADCAST 6
- +#define SO_SNDBUF 7
- +#define SO_RCVBUF 8
- +#define SO_SNDBUFFORCE 32
- +#define SO_RCVBUFFORCE 33
- +#define SO_KEEPALIVE 9
- +#define SO_OOBINLINE 10
- +#define SO_NO_CHECK 11
- +#define SO_PRIORITY 12
- +#define SO_LINGER 13
- +#define SO_BSDCOMPAT 14
- +/* To add :#define SO_REUSEPORT 15 */
- +#define SO_PASSCRED 16
- +#define SO_PEERCRED 17
- +#define SO_RCVLOWAT 18
- +#define SO_SNDLOWAT 19
- +#define SO_RCVTIMEO 20
- +#define SO_SNDTIMEO 21
- +
- +/* Security levels - as per NRL IPv6 - don't actually do anything */
- +#define SO_SECURITY_AUTHENTICATION 22
- +#define SO_SECURITY_ENCRYPTION_TRANSPORT 23
- +#define SO_SECURITY_ENCRYPTION_NETWORK 24
- +
- +#define SO_BINDTODEVICE 25
- +
- +/* Socket filtering */
- +#define SO_ATTACH_FILTER 26
- +#define SO_DETACH_FILTER 27
- +
- +#define SO_PEERNAME 28
- +#define SO_TIMESTAMP 29
- +#define SCM_TIMESTAMP SO_TIMESTAMP
- +
- +#define SO_ACCEPTCONN 30
- +
- +#define SO_PEERSEC 31
- +#define SO_PASSSEC 34
- +#define SO_TIMESTAMPNS 35
- +#define SCM_TIMESTAMPNS SO_TIMESTAMPNS
- +
- +#define SO_MARK 36
- +
- +#endif /* _ASM_UBICOM32_SOCKET_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/sockios.h
- @@ -0,0 +1,40 @@
- +/*
- + * arch/ubicom32/include/asm/sockios.h
- + * Socket-level ioctl definitions for Ubicom32 architecture.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_SOCKIOS_H
- +#define _ASM_UBICOM32_SOCKIOS_H
- +
- +/* Socket-level I/O control calls. */
- +#define FIOSETOWN 0x8901
- +#define SIOCSPGRP 0x8902
- +#define FIOGETOWN 0x8903
- +#define SIOCGPGRP 0x8904
- +#define SIOCATMARK 0x8905
- +#define SIOCGSTAMP 0x8906 /* Get stamp (timeval) */
- +#define SIOCGSTAMPNS 0x8907 /* Get stamp (timespec) */
- +
- +#endif /* _ASM_UBICOM32_SOCKIOS_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/statfs.h
- @@ -0,0 +1,33 @@
- +/*
- + * arch/ubicom32/include/asm/statfs.h
- + * Generic statfs.h definitions
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_STATFS_H
- +#define _ASM_UBICOM32_STATFS_H
- +
- +#include <asm-generic/statfs.h>
- +
- +#endif /* _ASM_UBICOM32_STATFS_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/stat.h
- @@ -0,0 +1,104 @@
- +/*
- + * arch/ubicom32/include/asm/stat.h
- + * File status definitions for Ubicom32 architecture.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_STAT_H
- +#define _ASM_UBICOM32_STAT_H
- +
- +struct __old_kernel_stat {
- + unsigned short st_dev;
- + unsigned short st_ino;
- + unsigned short st_mode;
- + unsigned short st_nlink;
- + unsigned short st_uid;
- + unsigned short st_gid;
- + unsigned short st_rdev;
- + unsigned long st_size;
- + unsigned long st_atime;
- + unsigned long st_mtime;
- + unsigned long st_ctime;
- +};
- +
- +struct stat {
- + unsigned short st_dev;
- + unsigned short __pad1;
- + unsigned long st_ino;
- + unsigned short st_mode;
- + unsigned short st_nlink;
- + unsigned short st_uid;
- + unsigned short st_gid;
- + unsigned short st_rdev;
- + unsigned short __pad2;
- + unsigned long st_size;
- + unsigned long st_blksize;
- + unsigned long st_blocks;
- + unsigned long st_atime;
- + unsigned long __unused1;
- + unsigned long st_mtime;
- + unsigned long __unused2;
- + unsigned long st_ctime;
- + unsigned long __unused3;
- + unsigned long __unused4;
- + unsigned long __unused5;
- +};
- +
- +/* This matches struct stat64 in glibc2.1, hence the absolutely
- + * insane amounts of padding around dev_t's.
- + */
- +struct stat64 {
- + unsigned long long st_dev;
- + unsigned char __pad1[2];
- +
- +#define STAT64_HAS_BROKEN_ST_INO 1
- + unsigned long __st_ino;
- +
- + unsigned int st_mode;
- + unsigned int st_nlink;
- +
- + unsigned long st_uid;
- + unsigned long st_gid;
- +
- + unsigned long long st_rdev;
- + unsigned char __pad3[2];
- +
- + long long st_size;
- + unsigned long st_blksize;
- +
- + unsigned long long st_blocks; /* Number 512-byte blocks allocated. */
- +
- + unsigned long st_atime;
- + unsigned long st_atime_nsec;
- +
- + unsigned long st_mtime;
- + unsigned long st_mtime_nsec;
- +
- + unsigned long st_ctime;
- + unsigned long st_ctime_nsec;
- +
- + unsigned long long st_ino;
- +};
- +
- +#endif /* _ASM_UBICOM32_STAT_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/swab.h
- @@ -0,0 +1,46 @@
- +/*
- + * arch/ubicom32/include/asm/swab.h
- + * Byte order swapping utility routines.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_SWAB_H
- +#define _ASM_UBICOM32_SWAB_H
- +
- +#include <linux/types.h>
- +
- +#if defined(__GNUC__) && !defined(__STRICT_ANSI__) || defined(__KERNEL__)
- +# define __BYTEORDER_HAS_U64__
- +# define __SWAB_64_THRU_32__
- +#endif
- +
- +#if defined(IP7000) || defined(IP7000_REV2)
- +
- +#define __arch__swab16 __builtin_ubicom32_swapb_2
- +#define __arch__swab32 __builtin_ubicom32_swapb_4
- +
- +#endif /* IP7000 */
- +
- +#endif /* _ASM_UBICOM32_SWAB_H */
- +
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/termbits.h
- @@ -0,0 +1,227 @@
- +/*
- + * arch/ubicom32/include/asm/termbits.h
- + * Terminal/serial port definitions for Ubicom32 architecture.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_TERMBITS_H
- +#define _ASM_UBICOM32_TERMBITS_H
- +
- +#include <linux/posix_types.h>
- +
- +typedef unsigned char cc_t;
- +typedef unsigned int speed_t;
- +typedef unsigned int tcflag_t;
- +
- +#define NCCS 19
- +struct termios {
- + tcflag_t c_iflag; /* input mode flags */
- + tcflag_t c_oflag; /* output mode flags */
- + tcflag_t c_cflag; /* control mode flags */
- + tcflag_t c_lflag; /* local mode flags */
- + cc_t c_line; /* line discipline */
- + cc_t c_cc[NCCS]; /* control characters */
- +};
- +
- +struct termios2 {
- + tcflag_t c_iflag; /* input mode flags */
- + tcflag_t c_oflag; /* output mode flags */
- + tcflag_t c_cflag; /* control mode flags */
- + tcflag_t c_lflag; /* local mode flags */
- + cc_t c_line; /* line discipline */
- + cc_t c_cc[NCCS]; /* control characters */
- + speed_t c_ispeed; /* input speed */
- + speed_t c_ospeed; /* output speed */
- +};
- +
- +struct ktermios {
- + tcflag_t c_iflag; /* input mode flags */
- + tcflag_t c_oflag; /* output mode flags */
- + tcflag_t c_cflag; /* control mode flags */
- + tcflag_t c_lflag; /* local mode flags */
- + cc_t c_line; /* line discipline */
- + cc_t c_cc[NCCS]; /* control characters */
- + speed_t c_ispeed; /* input speed */
- + speed_t c_ospeed; /* output speed */
- +};
- +
- +/* c_cc characters */
- +#define VINTR 0
- +#define VQUIT 1
- +#define VERASE 2
- +#define VKILL 3
- +#define VEOF 4
- +#define VTIME 5
- +#define VMIN 6
- +#define VSWTC 7
- +#define VSTART 8
- +#define VSTOP 9
- +#define VSUSP 10
- +#define VEOL 11
- +#define VREPRINT 12
- +#define VDISCARD 13
- +#define VWERASE 14
- +#define VLNEXT 15
- +#define VEOL2 16
- +
- +
- +/* c_iflag bits */
- +#define IGNBRK 0000001
- +#define BRKINT 0000002
- +#define IGNPAR 0000004
- +#define PARMRK 0000010
- +#define INPCK 0000020
- +#define ISTRIP 0000040
- +#define INLCR 0000100
- +#define IGNCR 0000200
- +#define ICRNL 0000400
- +#define IUCLC 0001000
- +#define IXON 0002000
- +#define IXANY 0004000
- +#define IXOFF 0010000
- +#define IMAXBEL 0020000
- +#define IUTF8 0040000
- +
- +/* c_oflag bits */
- +#define OPOST 0000001
- +#define OLCUC 0000002
- +#define ONLCR 0000004
- +#define OCRNL 0000010
- +#define ONOCR 0000020
- +#define ONLRET 0000040
- +#define OFILL 0000100
- +#define OFDEL 0000200
- +#define NLDLY 0000400
- +#define NL0 0000000
- +#define NL1 0000400
- +#define CRDLY 0003000
- +#define CR0 0000000
- +#define CR1 0001000
- +#define CR2 0002000
- +#define CR3 0003000
- +#define TABDLY 0014000
- +#define TAB0 0000000
- +#define TAB1 0004000
- +#define TAB2 0010000
- +#define TAB3 0014000
- +#define XTABS 0014000
- +#define BSDLY 0020000
- +#define BS0 0000000
- +#define BS1 0020000
- +#define VTDLY 0040000
- +#define VT0 0000000
- +#define VT1 0040000
- +#define FFDLY 0100000
- +#define FF0 0000000
- +#define FF1 0100000
- +
- +/* c_cflag bit meaning */
- +#define CBAUD 0010017
- +#define B0 0000000 /* hang up */
- +#define B50 0000001
- +#define B75 0000002
- +#define B110 0000003
- +#define B134 0000004
- +#define B150 0000005
- +#define B200 0000006
- +#define B300 0000007
- +#define B600 0000010
- +#define B1200 0000011
- +#define B1800 0000012
- +#define B2400 0000013
- +#define B4800 0000014
- +#define B9600 0000015
- +#define B19200 0000016
- +#define B38400 0000017
- +#define EXTA B19200
- +#define EXTB B38400
- +#define CSIZE 0000060
- +#define CS5 0000000
- +#define CS6 0000020
- +#define CS7 0000040
- +#define CS8 0000060
- +#define CSTOPB 0000100
- +#define CREAD 0000200
- +#define PARENB 0000400
- +#define PARODD 0001000
- +#define HUPCL 0002000
- +#define CLOCAL 0004000
- +#define CBAUDEX 0010000
- +#define BOTHER 0010000
- +#define B57600 0010001
- +#define B115200 0010002
- +#define B230400 0010003
- +#define B460800 0010004
- +#define B500000 0010005
- +#define B576000 0010006
- +#define B921600 0010007
- +#define B1000000 0010010
- +#define B1152000 0010011
- +#define B1500000 0010012
- +#define B2000000 0010013
- +#define B2500000 0010014
- +#define B3000000 0010015
- +#define B3500000 0010016
- +#define B4000000 0010017
- +#define CIBAUD 002003600000 /* input baud rate */
- +#define CMSPAR 010000000000 /* mark or space (stick) parity */
- +#define CRTSCTS 020000000000 /* flow control */
- +
- +#define IBSHIFT 16 /* Shift from CBAUD to CIBAUD */
- +
- +/* c_lflag bits */
- +#define ISIG 0000001
- +#define ICANON 0000002
- +#define XCASE 0000004
- +#define ECHO 0000010
- +#define ECHOE 0000020
- +#define ECHOK 0000040
- +#define ECHONL 0000100
- +#define NOFLSH 0000200
- +#define TOSTOP 0000400
- +#define ECHOCTL 0001000
- +#define ECHOPRT 0002000
- +#define ECHOKE 0004000
- +#define FLUSHO 0010000
- +#define PENDIN 0040000
- +#define IEXTEN 0100000
- +
- +
- +/* tcflow() and TCXONC use these */
- +#define TCOOFF 0
- +#define TCOON 1
- +#define TCIOFF 2
- +#define TCION 3
- +
- +/* tcflush() and TCFLSH use these */
- +#define TCIFLUSH 0
- +#define TCOFLUSH 1
- +#define TCIOFLUSH 2
- +
- +/* tcsetattr uses these */
- +#define TCSANOW 0
- +#define TCSADRAIN 1
- +#define TCSAFLUSH 2
- +
- +#endif /* _ASM_UBICOM32_TERMBITS_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/termios.h
- @@ -0,0 +1,119 @@
- +/*
- + * arch/ubicom32/include/asm/termios.h
- + * Ubicom32 termio definitions.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_TERMIOS_H
- +#define _ASM_UBICOM32_TERMIOS_H
- +
- +#include <asm/termbits.h>
- +#include <asm/ioctls.h>
- +
- +struct winsize {
- + unsigned short ws_row;
- + unsigned short ws_col;
- + unsigned short ws_xpixel;
- + unsigned short ws_ypixel;
- +};
- +
- +#define NCC 8
- +struct termio {
- + unsigned short c_iflag; /* input mode flags */
- + unsigned short c_oflag; /* output mode flags */
- + unsigned short c_cflag; /* control mode flags */
- + unsigned short c_lflag; /* local mode flags */
- + unsigned char c_line; /* line discipline */
- + unsigned char c_cc[NCC]; /* control characters */
- +};
- +
- +#ifdef __KERNEL__
- +/* intr=^C quit=^| erase=del kill=^U
- + eof=^D vtime=\0 vmin=\1 sxtc=\0
- + start=^Q stop=^S susp=^Z eol=\0
- + reprint=^R discard=^U werase=^W lnext=^V
- + eol2=\0
- +*/
- +#define INIT_C_CC "\003\034\177\025\004\0\1\0\021\023\032\0\022\017\027\026\0"
- +#endif
- +
- +/* modem lines */
- +#define TIOCM_LE 0x001
- +#define TIOCM_DTR 0x002
- +#define TIOCM_RTS 0x004
- +#define TIOCM_ST 0x008
- +#define TIOCM_SR 0x010
- +#define TIOCM_CTS 0x020
- +#define TIOCM_CAR 0x040
- +#define TIOCM_RNG 0x080
- +#define TIOCM_DSR 0x100
- +#define TIOCM_CD TIOCM_CAR
- +#define TIOCM_RI TIOCM_RNG
- +#define TIOCM_OUT1 0x2000
- +#define TIOCM_OUT2 0x4000
- +#define TIOCM_LOOP 0x8000
- +
- +/* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */
- +
- +#ifdef __KERNEL__
- +
- +/*
- + * Translate a "termio" structure into a "termios". Ugh.
- + */
- +#define user_termio_to_kernel_termios(termios, termio) \
- +({ \
- + unsigned short tmp; \
- + get_user(tmp, &(termio)->c_iflag); \
- + (termios)->c_iflag = (0xffff0000 & ((termios)->c_iflag)) | tmp; \
- + get_user(tmp, &(termio)->c_oflag); \
- + (termios)->c_oflag = (0xffff0000 & ((termios)->c_oflag)) | tmp; \
- + get_user(tmp, &(termio)->c_cflag); \
- + (termios)->c_cflag = (0xffff0000 & ((termios)->c_cflag)) | tmp; \
- + get_user(tmp, &(termio)->c_lflag); \
- + (termios)->c_lflag = (0xffff0000 & ((termios)->c_lflag)) | tmp; \
- + get_user((termios)->c_line, &(termio)->c_line); \
- + copy_from_user((termios)->c_cc, (termio)->c_cc, NCC); \
- +})
- +
- +/*
- + * Translate a "termios" structure into a "termio". Ugh.
- + */
- +#define kernel_termios_to_user_termio(termio, termios) \
- +({ \
- + put_user((termios)->c_iflag, &(termio)->c_iflag); \
- + put_user((termios)->c_oflag, &(termio)->c_oflag); \
- + put_user((termios)->c_cflag, &(termio)->c_cflag); \
- + put_user((termios)->c_lflag, &(termio)->c_lflag); \
- + put_user((termios)->c_line, &(termio)->c_line); \
- + copy_to_user((termio)->c_cc, (termios)->c_cc, NCC); \
- +})
- +
- +#define user_termios_to_kernel_termios(k, u) copy_from_user(k, u, sizeof(struct termios2))
- +#define kernel_termios_to_user_termios(u, k) copy_to_user(u, k, sizeof(struct termios2))
- +#define user_termios_to_kernel_termios_1(k, u) copy_from_user(k, u, sizeof(struct termios))
- +#define kernel_termios_to_user_termios_1(u, k) copy_to_user(u, k, sizeof(struct termios))
- +
- +#endif /* __KERNEL__ */
- +
- +#endif /* _ASM_UBICOM32_TERMIOS_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/thread_info.h
- @@ -0,0 +1,134 @@
- +/*
- + * arch/ubicom32/include/asm/thread_info.h
- + * Ubicom32 architecture low-level thread information.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + * Adapted from the i386 and PPC versions by Greg Ungerer ([email protected])
- + * Copyright (C) 2002 David Howells ([email protected])
- + * - Incorporating suggestions made by Linus Torvalds and Dave Miller
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +
- +#ifndef _ASM_UBICOM32_THREAD_INFO_H
- +#define _ASM_UBICOM32_THREAD_INFO_H
- +
- +#include <asm/page.h>
- +
- +/*
- + * Size of kernel stack for each process. This must be a power of 2...
- + */
- +#ifdef CONFIG_4KSTACKS
- +#define THREAD_SIZE_ORDER (0)
- +#else
- +#define THREAD_SIZE_ORDER (1)
- +#endif
- +
- +/*
- + * for asm files, THREAD_SIZE is now generated by asm-offsets.c
- + */
- +#define THREAD_SIZE (PAGE_SIZE<<THREAD_SIZE_ORDER)
- +
- +#ifdef __KERNEL__
- +
- +#ifndef __ASSEMBLY__
- +
- +/*
- + * low level task data.
- + */
- +struct thread_info {
- + struct task_struct *task; /* main task structure */
- + struct exec_domain *exec_domain; /* execution domain */
- + unsigned long flags; /* low level flags */
- + int cpu; /* cpu we're on */
- + int preempt_count; /* 0 => preemptable, <0 => BUG */
- + int interrupt_nesting; /* Interrupt nesting level. */
- + struct restart_block restart_block;
- +};
- +
- +/*
- + * macros/functions for gaining access to the thread information structure
- + */
- +#define INIT_THREAD_INFO(tsk) \
- +{ \
- + .task = &tsk, \
- + .exec_domain = &default_exec_domain, \
- + .flags = 0, \
- + .cpu = 0, \
- + .interrupt_nesting = 0, \
- + .restart_block = { \
- + .fn = do_no_restart_syscall, \
- + }, \
- +}
- +
- +#define init_thread_info (init_thread_union.thread_info)
- +#define init_stack (init_thread_union.stack)
- +
- +
- +/* how to get the thread information struct from C */
- +static inline struct thread_info *current_thread_info(void)
- +{
- + struct thread_info *ti;
- +
- + asm (
- + "and.4 %0, sp, %1\n\t"
- + : "=&r" (ti)
- + : "d" (~(THREAD_SIZE-1))
- + : "cc"
- + );
- +
- + return ti;
- +}
- +
- +#define STACK_WARN (THREAD_SIZE / 8)
- +
- +#define __HAVE_ARCH_THREAD_INFO_ALLOCATOR 1
- +
- +/* thread information allocation */
- +#define alloc_thread_info(tsk) ((struct thread_info *) \
- + __get_free_pages(GFP_KERNEL, THREAD_SIZE_ORDER))
- +#define free_thread_info(ti) free_pages((unsigned long) (ti), THREAD_SIZE_ORDER)
- +#endif /* __ASSEMBLY__ */
- +
- +#define PREEMPT_ACTIVE 0x4000000
- +
- +/*
- + * thread information flag bit numbers
- + */
- +#define TIF_SYSCALL_TRACE 0 /* syscall trace active */
- +#define TIF_SIGPENDING 1 /* signal pending */
- +#define TIF_NEED_RESCHED 2 /* rescheduling necessary */
- +#define TIF_POLLING_NRFLAG 3 /* true if poll_idle() is polling
- + TIF_NEED_RESCHED */
- +#define TIF_MEMDIE 4
- +
- +/* as above, but as bit values */
- +#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
- +#define _TIF_SIGPENDING (1<<TIF_SIGPENDING)
- +#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)
- +#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)
- +
- +#define _TIF_WORK_MASK 0x0000FFFE /* work to do on interrupt/exception return */
- +
- +#endif /* __KERNEL__ */
- +
- +#endif /* _ASM_UBICOM32_THREAD_INFO_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/types.h
- @@ -0,0 +1,75 @@
- +/*
- + * arch/ubicom32/include/asm/types.h
- + * Date type definitions for Ubicom32 architecture.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_TYPES_H
- +#define _ASM_UBICOM32_TYPES_H
- +
- +/*
- + * This file is never included by application software unless
- + * explicitly requested (e.g., via linux/types.h) in which case the
- + * application is Linux specific so (user-) name space pollution is
- + * not a major issue. However, for interoperability, libraries still
- + * need to be careful to avoid a name clashes.
- + */
- +
- +#include <asm-generic/int-ll64.h>
- +
- +#ifndef __ASSEMBLY__
- +
- +typedef unsigned short umode_t;
- +
- +#endif /* __ASSEMBLY__ */
- +
- +/*
- + * These aren't exported outside the kernel to avoid name space clashes
- + */
- +#ifdef __KERNEL__
- +
- +#define BITS_PER_LONG 32
- +
- +#ifndef __ASSEMBLY__
- +
- +/* DMA addresses are always 32-bits wide */
- +
- +typedef u32 dma_addr_t;
- +typedef u32 dma64_addr_t;
- +
- +/*
- + * XXX These are "Ubicom style" typedefs. They should be removed in all files used by linux.
- + */
- +typedef u32 u32_t;
- +typedef s32 s32_t;
- +typedef u16 u16_t;
- +typedef s16 s16_t;
- +typedef u8 u8_t;
- +typedef s8 s8_t;
- +
- +#endif /* __ASSEMBLY__ */
- +
- +#endif /* __KERNEL__ */
- +
- +#endif /* _ASM_UBICOM32_TYPES_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/ucontext.h
- @@ -0,0 +1,39 @@
- +/*
- + * arch/ubicom32/include/asm/ucontext.h
- + * Definition of ucontext structure for Ubicom32 architecture.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_UCONTEXT_H
- +#define _ASM_UBICOM32_UCONTEXT_H
- +
- +struct ucontext {
- + unsigned long uc_flags;
- + struct ucontext *uc_link;
- + stack_t uc_stack;
- + struct sigcontext uc_mcontext;
- + sigset_t uc_sigmask; /* mask last for extensibility */
- +};
- +
- +#endif /* _ASM_UBICOM32_UCONTEXT_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/unistd.h
- @@ -0,0 +1,400 @@
- +/*
- + * arch/ubicom32/include/asm/unistd.h
- + * Ubicom32 architecture syscall definitions.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_UNISTD_H
- +#define _ASM_UBICOM32_UNISTD_H
- +
- +/*
- + * This file contains the system call numbers.
- + */
- +
- +#define __NR_restart_syscall 0
- +#define __NR_exit 1
- +#define __NR_fork 2
- +#define __NR_read 3
- +#define __NR_write 4
- +#define __NR_open 5
- +#define __NR_close 6
- +#define __NR_waitpid 7
- +#define __NR_creat 8
- +#define __NR_link 9
- +#define __NR_unlink 10
- +#define __NR_execve 11
- +#define __NR_chdir 12
- +#define __NR_time 13
- +#define __NR_mknod 14
- +#define __NR_chmod 15
- +#define __NR_chown 16
- +#define __NR_break 17
- +#define __NR_oldstat 18
- +#define __NR_lseek 19
- +#define __NR_getpid 20
- +#define __NR_mount 21
- +#define __NR_umount 22
- +#define __NR_setuid 23
- +#define __NR_getuid 24
- +#define __NR_stime 25
- +#define __NR_ptrace 26
- +#define __NR_alarm 27
- +#define __NR_oldfstat 28
- +#define __NR_pause 29
- +#define __NR_utime 30
- +#define __NR_stty 31
- +#define __NR_gtty 32
- +#define __NR_access 33
- +#define __NR_nice 34
- +#define __NR_ftime 35
- +#define __NR_sync 36
- +#define __NR_kill 37
- +#define __NR_rename 38
- +#define __NR_mkdir 39
- +#define __NR_rmdir 40
- +#define __NR_dup 41
- +#define __NR_pipe 42
- +#define __NR_times 43
- +#define __NR_prof 44
- +#define __NR_brk 45
- +#define __NR_setgid 46
- +#define __NR_getgid 47
- +#define __NR_signal 48
- +#define __NR_geteuid 49
- +#define __NR_getegid 50
- +#define __NR_acct 51
- +#define __NR_umount2 52
- +#define __NR_lock 53
- +#define __NR_ioctl 54
- +#define __NR_fcntl 55
- +#define __NR_mpx 56
- +#define __NR_setpgid 57
- +#define __NR_ulimit 58
- +#define __NR_oldolduname 59
- +#define __NR_umask 60
- +#define __NR_chroot 61
- +#define __NR_ustat 62
- +#define __NR_dup2 63
- +#define __NR_getppid 64
- +#define __NR_getpgrp 65
- +#define __NR_setsid 66
- +#define __NR_sigaction 67
- +#define __NR_sgetmask 68
- +#define __NR_ssetmask 69
- +#define __NR_setreuid 70
- +#define __NR_setregid 71
- +#define __NR_sigsuspend 72
- +#define __NR_sigpending 73
- +#define __NR_sethostname 74
- +#define __NR_setrlimit 75
- +#define __NR_getrlimit 76
- +#define __NR_getrusage 77
- +#define __NR_gettimeofday 78
- +#define __NR_settimeofday 79
- +#define __NR_getgroups 80
- +#define __NR_setgroups 81
- +#define __NR_select 82
- +#define __NR_symlink 83
- +#define __NR_oldlstat 84
- +#define __NR_readlink 85
- +#define __NR_uselib 86
- +#define __NR_swapon 87
- +#define __NR_reboot 88
- +#define __NR_readdir 89
- +#define __NR_mmap 90
- +#define __NR_munmap 91
- +#define __NR_truncate 92
- +#define __NR_ftruncate 93
- +#define __NR_fchmod 94
- +#define __NR_fchown 95
- +#define __NR_getpriority 96
- +#define __NR_setpriority 97
- +#define __NR_profil 98
- +#define __NR_statfs 99
- +#define __NR_fstatfs 100
- +#define __NR_ioperm 101
- +#define __NR_socketcall 102
- +#define __NR_syslog 103
- +#define __NR_setitimer 104
- +#define __NR_getitimer 105
- +#define __NR_stat 106
- +#define __NR_lstat 107
- +#define __NR_fstat 108
- +#define __NR_olduname 109
- +#define __NR_iopl /* 110 */ not supported
- +#define __NR_vhangup 111
- +#define __NR_idle /* 112 */ Obsolete
- +#define __NR_vm86 /* 113 */ not supported
- +#define __NR_wait4 114
- +#define __NR_swapoff 115
- +#define __NR_sysinfo 116
- +#define __NR_ipc 117
- +#define __NR_fsync 118
- +#define __NR_sigreturn 119
- +#define __NR_clone 120
- +#define __NR_setdomainname 121
- +#define __NR_uname 122
- +#define __NR_cacheflush 123
- +#define __NR_adjtimex 124
- +#define __NR_mprotect 125
- +#define __NR_sigprocmask 126
- +#define __NR_create_module 127
- +#define __NR_init_module 128
- +#define __NR_delete_module 129
- +#define __NR_get_kernel_syms 130
- +#define __NR_quotactl 131
- +#define __NR_getpgid 132
- +#define __NR_fchdir 133
- +#define __NR_bdflush 134
- +#define __NR_sysfs 135
- +#define __NR_personality 136
- +#define __NR_afs_syscall 137 /* Syscall for Andrew File System */
- +#define __NR_setfsuid 138
- +#define __NR_setfsgid 139
- +#define __NR__llseek 140
- +#define __NR_getdents 141
- +#define __NR__newselect 142
- +#define __NR_flock 143
- +#define __NR_msync 144
- +#define __NR_readv 145
- +#define __NR_writev 146
- +#define __NR_getsid 147
- +#define __NR_fdatasync 148
- +#define __NR__sysctl 149
- +#define __NR_mlock 150
- +#define __NR_munlock 151
- +#define __NR_mlockall 152
- +#define __NR_munlockall 153
- +#define __NR_sched_setparam 154
- +#define __NR_sched_getparam 155
- +#define __NR_sched_setscheduler 156
- +#define __NR_sched_getscheduler 157
- +#define __NR_sched_yield 158
- +#define __NR_sched_get_priority_max 159
- +#define __NR_sched_get_priority_min 160
- +#define __NR_sched_rr_get_interval 161
- +#define __NR_nanosleep 162
- +#define __NR_mremap 163
- +#define __NR_setresuid 164
- +#define __NR_getresuid 165
- +#define __NR_getpagesize 166
- +#define __NR_query_module 167
- +#define __NR_poll 168
- +#define __NR_nfsservctl 169
- +#define __NR_setresgid 170
- +#define __NR_getresgid 171
- +#define __NR_prctl 172
- +#define __NR_rt_sigreturn 173
- +#define __NR_rt_sigaction 174
- +#define __NR_rt_sigprocmask 175
- +#define __NR_rt_sigpending 176
- +#define __NR_rt_sigtimedwait 177
- +#define __NR_rt_sigqueueinfo 178
- +#define __NR_rt_sigsuspend 179
- +#define __NR_pread64 180
- +#define __NR_pwrite64 181
- +#define __NR_lchown 182
- +#define __NR_getcwd 183
- +#define __NR_capget 184
- +#define __NR_capset 185
- +#define __NR_sigaltstack 186
- +#define __NR_sendfile 187
- +#define __NR_getpmsg 188 /* some people actually want streams */
- +#define __NR_putpmsg 189 /* some people actually want streams */
- +#define __NR_vfork 190
- +#define __NR_ugetrlimit 191
- +#define __NR_mmap2 192
- +#define __NR_truncate64 193
- +#define __NR_ftruncate64 194
- +#define __NR_stat64 195
- +#define __NR_lstat64 196
- +#define __NR_fstat64 197
- +#define __NR_chown32 198
- +#define __NR_getuid32 199
- +#define __NR_getgid32 200
- +#define __NR_geteuid32 201
- +#define __NR_getegid32 202
- +#define __NR_setreuid32 203
- +#define __NR_setregid32 204
- +#define __NR_getgroups32 205
- +#define __NR_setgroups32 206
- +#define __NR_fchown32 207
- +#define __NR_setresuid32 208
- +#define __NR_getresuid32 209
- +#define __NR_setresgid32 210
- +#define __NR_getresgid32 211
- +#define __NR_lchown32 212
- +#define __NR_setuid32 213
- +#define __NR_setgid32 214
- +#define __NR_setfsuid32 215
- +#define __NR_setfsgid32 216
- +#define __NR_pivot_root 217
- +#define __NR_getdents64 220
- +#define __NR_gettid 221
- +#define __NR_tkill 222
- +#define __NR_setxattr 223
- +#define __NR_lsetxattr 224
- +#define __NR_fsetxattr 225
- +#define __NR_getxattr 226
- +#define __NR_lgetxattr 227
- +#define __NR_fgetxattr 228
- +#define __NR_listxattr 229
- +#define __NR_llistxattr 230
- +#define __NR_flistxattr 231
- +#define __NR_removexattr 232
- +#define __NR_lremovexattr 233
- +#define __NR_fremovexattr 234
- +#define __NR_futex 235
- +#define __NR_sendfile64 236
- +#define __NR_mincore 237
- +#define __NR_madvise 238
- +#define __NR_fcntl64 239
- +#define __NR_readahead 240
- +#define __NR_io_setup 241
- +#define __NR_io_destroy 242
- +#define __NR_io_getevents 243
- +#define __NR_io_submit 244
- +#define __NR_io_cancel 245
- +#define __NR_fadvise64 246
- +#define __NR_exit_group 247
- +#define __NR_lookup_dcookie 248
- +#define __NR_epoll_create 249
- +#define __NR_epoll_ctl 250
- +#define __NR_epoll_wait 251
- +#define __NR_remap_file_pages 252
- +#define __NR_set_tid_address 253
- +#define __NR_timer_create 254
- +#define __NR_timer_settime 255
- +#define __NR_timer_gettime 256
- +#define __NR_timer_getoverrun 257
- +#define __NR_timer_delete 258
- +#define __NR_clock_settime 259
- +#define __NR_clock_gettime 260
- +#define __NR_clock_getres 261
- +#define __NR_clock_nanosleep 262
- +#define __NR_statfs64 263
- +#define __NR_fstatfs64 264
- +#define __NR_tgkill 265
- +#define __NR_utimes 266
- +#define __NR_fadvise64_64 267
- +#define __NR_mbind 268
- +#define __NR_get_mempolicy 269
- +#define __NR_set_mempolicy 270
- +#define __NR_mq_open 271
- +#define __NR_mq_unlink 272
- +#define __NR_mq_timedsend 273
- +#define __NR_mq_timedreceive 274
- +#define __NR_mq_notify 275
- +#define __NR_mq_getsetattr 276
- +#define __NR_waitid 277
- +#define __NR_vserver 278
- +#define __NR_add_key 279
- +#define __NR_request_key 280
- +#define __NR_keyctl 281
- +#define __NR_ioprio_set 282
- +#define __NR_ioprio_get 283
- +#define __NR_inotify_init 284
- +#define __NR_inotify_add_watch 285
- +#define __NR_inotify_rm_watch 286
- +#define __NR_migrate_pages 287
- +#define __NR_openat 288
- +#define __NR_mkdirat 289
- +#define __NR_mknodat 290
- +#define __NR_fchownat 291
- +#define __NR_futimesat 292
- +#define __NR_fstatat64 293
- +#define __NR_unlinkat 294
- +#define __NR_renameat 295
- +#define __NR_linkat 296
- +#define __NR_symlinkat 297
- +#define __NR_readlinkat 298
- +#define __NR_fchmodat 299
- +#define __NR_faccessat 300
- +#define __NR_pselect6 301
- +#define __NR_ppoll 302
- +#define __NR_unshare 303
- +#define __NR_set_robust_list 304
- +#define __NR_get_robust_list 305
- +#define __NR_splice 306
- +#define __NR_sync_file_range 307
- +#define __NR_tee 308
- +#define __NR_vmsplice 309
- +#define __NR_move_pages 310
- +#define __NR_sched_setaffinity 311
- +#define __NR_sched_getaffinity 312
- +#define __NR_kexec_load 313
- +#define __NR_getcpu 314
- +#define __NR_epoll_pwait 315
- +#define __NR_utimensat 316
- +#define __NR_signalfd 317
- +#define __NR_timerfd_create 318
- +#define __NR_eventfd 319
- +#define __NR_fallocate 320
- +#define __NR_timerfd_settime 321
- +#define __NR_timerfd_gettime 322
- +#define __NR_signalfd4 323
- +#define __NR_eventfd2 324
- +#define __NR_epoll_create1 325
- +#define __NR_dup3 326
- +#define __NR_pipe2 327
- +#define __NR_inotify_init1 328
- +
- +#ifdef __KERNEL__
- +
- +#define NR_syscalls 329
- +
- +#define __ARCH_WANT_IPC_PARSE_VERSION
- +#define __ARCH_WANT_OLD_READDIR
- +#define __ARCH_WANT_OLD_STAT
- +#define __ARCH_WANT_STAT64
- +#define __ARCH_WANT_SYS_ALARM
- +#define __ARCH_WANT_SYS_GETHOSTNAME
- +#define __ARCH_WANT_SYS_PAUSE
- +#define __ARCH_WANT_SYS_SGETMASK
- +#define __ARCH_WANT_SYS_SIGNAL
- +#define __ARCH_WANT_SYS_TIME
- +#define __ARCH_WANT_SYS_UTIME
- +#define __ARCH_WANT_SYS_WAITPID
- +#define __ARCH_WANT_SYS_SOCKETCALL
- +#define __ARCH_WANT_SYS_FADVISE64
- +#define __ARCH_WANT_SYS_GETPGRP
- +#define __ARCH_WANT_SYS_LLSEEK
- +#define __ARCH_WANT_SYS_NICE
- +#define __ARCH_WANT_SYS_OLD_GETRLIMIT
- +#define __ARCH_WANT_SYS_OLDUMOUNT
- +#define __ARCH_WANT_SYS_SIGPENDING
- +#define __ARCH_WANT_SYS_SIGPROCMASK
- +#define __ARCH_WANT_SYS_RT_SIGACTION
- +
- +/*
- + * "Conditional" syscalls
- + *
- + * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
- + * but it doesn't work on all toolchains, so we just do it by hand
- + */
- +//#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
- +#define cond_syscall(x) long x(void) __attribute__((weak,alias("sys_ni_syscall")))
- +#endif /* __KERNEL__ */
- +
- +#endif /* _ASM_UBICOM32_UNISTD_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/user.h
- @@ -0,0 +1,82 @@
- +/*
- + * arch/ubicom32/include/asm/user.h
- + * Ubicom32 architecture core file definitions.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_USER_H
- +#define _ASM_UBICOM32_USER_H
- +
- +#include <asm/ptrace.h>
- +#include <asm/page.h>
- +/*
- + * Adapted from <asm-powerpc/user.h>
- + *
- + * Core file format: The core file is written in such a way that gdb
- + * can understand it and provide useful information to the user (under
- + * linux we use the `trad-core' bfd, NOT the osf-core). The file contents
- + * are as follows:
- + *
- + * upage: 1 page consisting of a user struct that tells gdb
- + * what is present in the file. Directly after this is a
- + * copy of the task_struct, which is currently not used by gdb,
- + * but it may come in handy at some point. All of the registers
- + * are stored as part of the upage. The upage should always be
- + * only one page long.
- + * data: The data segment follows next. We use current->end_text to
- + * current->brk to pick up all of the user variables, plus any memory
- + * that may have been sbrk'ed. No attempt is made to determine if a
- + * page is demand-zero or if a page is totally unused, we just cover
- + * the entire range. All of the addresses are rounded in such a way
- + * that an integral number of pages is written.
- + * stack: We need the stack information in order to get a meaningful
- + * backtrace. We need to write the data from usp to
- + * current->start_stack, so we round each of these in order to be able
- + * to write an integer number of pages.
- + */
- +
- +struct user_ubicom32fp_struct {
- +};
- +
- +struct user {
- + struct pt_regs regs; /* entire machine state */
- + size_t u_tsize; /* text size (pages) */
- + size_t u_dsize; /* data size (pages) */
- + size_t u_ssize; /* stack size (pages) */
- + unsigned long start_code; /* text starting address */
- + unsigned long start_data; /* data starting address */
- + unsigned long start_stack; /* stack starting address */
- + long int signal; /* signal causing core dump */
- + unsigned long u_ar0; /* help gdb find registers */
- + unsigned long magic; /* identifies a core file */
- + char u_comm[32]; /* user command name */
- +};
- +
- +#define NBPG PAGE_SIZE
- +#define UPAGES 1
- +#define HOST_TEXT_START_ADDR (u.start_code)
- +#define HOST_DATA_START_ADDR (u.start_data)
- +#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG)
- +
- +#endif /* _ASM_UBICOM32_USER_H */
- --- /dev/null
- +++ b/arch/ubicom32/include/asm/xor.h
- @@ -0,0 +1,33 @@
- +/*
- + * arch/ubicom32/include/asm/xor.h
- + * Generic xor.h definitions for Ubicom32 architecture.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +#ifndef _ASM_UBICOM32_XOR_H
- +#define _ASM_UBICOM32_XOR_H
- +
- +#include <asm-generic/xor.h>
- +
- +#endif /* _ASM_UBICOM32_XOR_H */
- --- /dev/null
- +++ b/arch/ubicom32/Kconfig
- @@ -0,0 +1,455 @@
- +#
- +# For a description of the syntax of this configuration file,
- +# see Documentation/kbuild/kconfig-language.txt.
- +#
- +
- +mainmenu "uClinux/ubicom32 (w/o MMU) Kernel Configuration"
- +
- +config RAMBASE
- + hex
- + default "0x40000000"
- + help
- + Define the address that RAM starts at.
- +
- +config UBICOM32
- + bool
- + select HAVE_OPROFILE
- + default y
- +
- +config RAMKERNEL
- + bool
- + default y
- +
- +config CPU_BIG_ENDIAN
- + bool
- + default y
- +
- +config FORCE_MAX_ZONEORDER
- + int
- + default "14"
- +
- +config HAVE_CLK
- + bool
- + default y
- +
- +config MMU
- + bool
- + default n
- +
- +config FPU
- + bool
- + default n
- +
- +config ZONE_DMA
- + bool
- + default y
- +
- +config RWSEM_GENERIC_SPINLOCK
- + bool
- + default y
- +
- +config RWSEM_XCHGADD_ALGORITHM
- + bool
- + default n
- +
- +config ARCH_HAS_ILOG2_U32
- + bool
- + default n
- +
- +config ARCH_HAS_ILOG2_U64
- + bool
- + default n
- +
- +config GENERIC_FIND_NEXT_BIT
- + bool
- + default y
- +
- +config GENERIC_GPIO
- + bool
- + default y
- +
- +config GPIOLIB
- + bool
- + default y
- +
- +config GENERIC_HWEIGHT
- + bool
- + default y
- +
- +config GENERIC_HARDIRQS
- + bool
- + default y
- +
- +config STACKTRACE_SUPPORT
- + bool
- + default y
- +
- +config LOCKDEP_SUPPORT
- + bool
- + default y
- +
- +config GENERIC_CALIBRATE_DELAY
- + bool
- + default y
- +
- +config GENERIC_TIME
- + bool
- + default y
- +
- +config TIME_LOW_RES
- + bool
- + default y
- +
- +config GENERIC_CLOCKEVENTS
- + bool
- + default y
- +
- +config GENERIC_CLOCKEVENTS_BROADCAST
- + bool
- + depends on GENERIC_CLOCKEVENTS
- + default y if SMP && !LOCAL_TIMERS
- +
- +config NO_IOPORT
- + def_bool y
- +
- +config ARCH_SUPPORTS_AOUT
- + def_bool y
- +
- +config IRQ_PER_CPU
- + bool
- + default y
- +
- +config SCHED_NO_NO_OMIT_FRAME_POINTER
- + bool
- + default y
- +
- +menu "Processor type and features"
- +
- +config BRD_32MB
- + bool
- + depends on IP5160EVAL
- + help
- + Board has 32MB of RAM on it. It is a hidden option used to select default for size of RAM
- + default n
- +
- +config BRD_64MB
- + bool
- + depends on IP7145DPF || IP7160RGW || IP7160BRINGUP || IP7160DPF || IP5170DPF || IP5160DEV
- + help
- + Board has 64MB of RAM on it. It is a hidden option used to select default for size of RAM
- + default n
- +
- +config BRD_128MB
- + bool
- + depends on IP7500MODULE || IP7500AV || IP7500MEDIA
- + help
- + Board has 128MB of RAM on it. It is a hidden option used to select default for size of RAM
- + default n
- +
- +comment "Processor type will be selected by Board"
- +
- +config UBICOM32_V3
- + bool
- + help
- + Ubicom IP5xxx series processor support.
- +
- +config UBICOM32_V4
- + bool
- + help
- + Ubicom IP7xxx series processor support.
- +
- +comment "Board"
- +choice
- + prompt "Board type"
- + help
- + Select your board.
- +
- +config NOBOARD
- + bool "No board selected"
- + help
- + Default. Don't select any board specific config. Will not build unless you change!
- +
- +# Add your boards here
- +source "arch/ubicom32/mach-ip5k/Kconfig"
- +source "arch/ubicom32/mach-ip7k/Kconfig"
- +
- +endchoice
- +
- +comment "Kernel Options"
- +config SMP
- + bool "Symmetric multi-processing support"
- + select USE_GENERIC_SMP_HELPERS
- + default n
- + help
- + Enables multithreading support. Enabling SMP support increases
- + the size of system data structures. SMP support can have either
- + positive or negative impact on performance depending on workloads.
- +
- + If you do not know what to do here, say N.
- +
- +config NR_CPUS
- + int "Number of configured CPUs"
- + range 2 32
- + default 2
- + depends on SMP
- + help
- + Upper bound on the number of CPUs. Space is reserved
- + at compile time for this many CPUs.
- +
- +config LOCAL_TIMERS
- + bool "Use local timer interrupts"
- + depends on SMP
- + default y
- + help
- + Enable support for local timers on SMP platforms, rather then the
- + legacy IPI broadcast method. Local timers allows the system
- + accounting to be spread across the timer interval, preventing a
- + "thundering herd" at every timer tick. A physical timer is allocated
- + per cpu.
- +
- +config TIMER_EXTRA_ALLOC
- + int "Number of additional physical timer events to create"
- + depends on GENERIC_CLOCKEVENTS
- + default 0
- + help
- + The Ubicom32 processor has a number of event timers that can be wrapped
- + in Linux clock event structures (assuming that the timers are not being
- + used for another purpose). Based on the value of LOCAL_TIMERS, either
- + 2 timers will be used or a timer will be used for every CPU. This value
- + allows the programmer to select additional timers over that amount.
- +
- +config IRQSTACKS
- + bool "Create separate stacks for interrupt handling"
- + default n
- + help
- + Selecting this causes interrupts to be created on a separate
- + stack instead of nesting the interrupts on the kernel stack.
- +
- +config IRQSTACKS_USEOCM
- + bool "Use OCM for interrupt stacks"
- + default n
- + depends on IRQSTACKS
- + help
- + Selecting this cause the interrupt stacks to be placed in OCM
- + reducing cache misses at the expense of using the OCM for servicing
- + interrupts.
- +
- +menu "OCM Instruction Heap"
- +
- +config OCM_MODULES_RESERVATION
- + int "OCM Instruction heap reservation. 0-192 kB"
- + range 0 192
- + default "0"
- + help
- + The minimum amount of OCM memory to reserve for kernel loadable module
- + code. If you are not using this memory it cannot be used for anything
- + else. Leave it as 0 if you have prebuilt modules that are compiled with
- + OCM support.
- +
- +config OCM_MODULES_MAY_CONSUME_REMAINING_CODESPACE
- + bool "Give all unused ocm code space to the ocm instruction heap."
- + default n
- + help
- + Allow the OCM instruction heap allocation to consume any remaining
- + unused OCM code space. The result of this is that you will not have
- + and deterministic results, but you will not have any waste either.
- +
- +config OCM_MODULES_FALLBACK_TO_DDR
- + bool "Loadable Modules requiring OCM may fallback to use DDR."
- + default n
- + help
- + If a module cannot get the OCM code it requires allow DDR to
- + be used instead.
- +endmenu
- +
- +config HZ
- + int "Frequency of 'jiffies' (for polling)"
- + default 1000
- + help
- + 100 is common for embedded systems, but 1000 allows
- + you to do more drivers without actually having
- + interrupts working properly.
- +
- +comment "RAM configuration"
- +
- +if BRD_32MB
- +
- +config RAMSIZE
- + hex "Size of RAM (in bytes)"
- + range 0x00000000 0x02000000
- + default "0x02000000"
- + help
- + Define the size of the system RAM. If you select 0 then the
- + kernel will try to probe the RAM size at runtime. This is not
- + supported on all CPU types.
- +
- +endif
- +
- +if BRD_64MB
- +
- +config RAMSIZE
- + hex "Size of RAM (in bytes)"
- + range 0x00000000 0x04000000
- + default "0x04000000"
- + help
- + Define the size of the system RAM. If you select 0 then the
- + kernel will try to probe the RAM size at runtime. This is not
- + supported on all CPU types.
- +
- +endif
- +
- +if BRD_128MB
- +
- +config RAMSIZE
- + hex "Size of RAM (in bytes)"
- + range 0x00000000 0x08000000
- + default "0x08000000"
- + help
- + Define the size of the system RAM. If you select 0 then the
- + kernel will try to probe the RAM size at runtime. This is not
- + supported on all CPU types.
- +
- +endif
- +
- +config KERNELBASE
- + hex "Address of the base of kernel code"
- + default "0x40400000"
- + help
- + For the time being we are going to start the Kernel at a 4 meg offset.
- +
- +comment "Build options"
- +config LINKER_RELAXATION
- + bool "Linker Relaxation"
- + default y
- + help
- + Turns on linker relaxation that will produce smaller
- + faster code. Increases link time.
- +
- +comment "Driver options"
- +menu "PCI Bus"
- +config PCI
- + bool "PCI bus"
- + default true
- + help
- + Enable/Disable PCI bus
- + source "drivers/pci/Kconfig"
- +
- +
- +config PCI_DEV0_IDSEL
- + hex "slot 0 address"
- + depends on PCI
- + default "0x01000000"
- + help
- + Slot 0 address. This address should correspond to the address line
- + which the IDSEL bit for this slot is connected to.
- +
- +config PCI_DEV1_IDSEL
- + hex "slot 1 address"
- + depends on PCI
- + default "0x02000000"
- + help
- + Slot 1 address. This address should correspond to the address line
- + which the IDSEL bit for this slot is connected to.
- +endmenu
- +# End PCI
- +
- +menu "Input devices"
- +config UBICOM_INPUT
- + bool "Ubicom polled GPIO input driver"
- + select INPUT
- + select INPUT_POLLDEV
- + help
- + Polling input driver, much like the GPIO input driver, except that it doesn't
- + rely on interrupts. It will report events via the input subsystem.
- + default n
- +
- +config UBICOM_INPUT_I2C
- + bool "Ubicom polled GPIO input driver over I2C"
- + select INPUT
- + select INPUT_POLLDEV
- + help
- + Polling input driver, much like the PCA953x driver, it can support a variety of
- + different I2C I/O expanders. This device polls the I2C I/O expander for events
- + and reports them via the input subsystem.
- + default n
- +endmenu
- +# Input devices
- +
- +menu "Misc devices"
- +config UBICOM_HID
- + bool "Ubicom HID driver"
- + select INPUT
- + select INPUT_POLLDEV
- + select LCD_CLASS_DEVICE
- + help
- + Driver for HID chip found on some Ubicom reference designs. This chip handles
- + PWM, button input, and IR remote control. It registers as an input device and
- + a backlight device.
- + default n
- +endmenu
- +# Misc devices
- +
- +config CMDLINE_BOOL
- + bool "Built-in kernel command line"
- + default n
- + help
- + Allow for specifying boot arguments to the kernel at
- + build time. On some systems (e.g. embedded ones), it is
- + necessary or convenient to provide some or all of the
- + kernel boot arguments with the kernel itself (that is,
- + to not rely on the boot loader to provide them.)
- +
- + To compile command line arguments into the kernel,
- + set this option to 'Y', then fill in the
- + the boot arguments in CONFIG_CMDLINE.
- +
- + Systems with fully functional boot loaders (i.e. non-embedded)
- + should leave this option set to 'N'.
- +
- +config CMDLINE
- + string "Built-in kernel command string"
- + depends on CMDLINE_BOOL
- + default ""
- + help
- + Enter arguments here that should be compiled into the kernel
- + image and used at boot time. If the boot loader provides a
- + command line at boot time, it is appended to this string to
- + form the full kernel command line, when the system boots.
- +
- + However, you can use the CONFIG_CMDLINE_OVERRIDE option to
- + change this behavior.
- +
- + In most cases, the command line (whether built-in or provided
- + by the boot loader) should specify the device for the root
- + file system.
- +
- +config CMDLINE_OVERRIDE
- + bool "Built-in command line overrides boot loader arguments"
- + default n
- + depends on CMDLINE_BOOL
- + help
- + Set this option to 'Y' to have the kernel ignore the boot loader
- + command line, and use ONLY the built-in command line.
- +
- + This is used to work around broken boot loaders. This should
- + be set to 'N' under normal conditions.
- +
- +endmenu
- +# End Processor type and features
- +
- +source "arch/ubicom32/Kconfig.debug"
- +
- +menu "Executable file formats"
- +source "fs/Kconfig.binfmt"
- +endmenu
- +
- +source "init/Kconfig"
- +source "kernel/Kconfig.preempt"
- +source "kernel/time/Kconfig"
- +source "mm/Kconfig"
- +source "net/Kconfig"
- +source "drivers/Kconfig"
- +source "fs/Kconfig"
- +source "security/Kconfig"
- +source "crypto/Kconfig"
- +source "lib/Kconfig"
- --- /dev/null
- +++ b/arch/ubicom32/Kconfig.debug
- @@ -0,0 +1,117 @@
- +menu "Kernel hacking"
- +
- +config TRACE_IRQFLAGS_SUPPORT
- + def_bool y
- +
- +config PROTECT_KERNEL
- + default y
- + bool 'Enable Kernel range register Protection'
- + help
- + Adds code to enable/disable range registers to protect static
- + kernel code/data from userspace. Currently the ranges covered
- + do no protect kernel loadable modules or dynamically allocated
- + kernel data.
- +
- +config NO_KERNEL_MSG
- + bool "Suppress Kernel BUG Messages"
- + help
- + Do not output any debug BUG messages within the kernel.
- +
- +config EARLY_PRINTK
- + bool "Use the driver that you selected as console also for early printk (to debug kernel bootup)."
- + default n
- + help
- + If you want to use the serdes driver (console=ttyUS0) for
- + early printk, you must also supply an additional kernel boot
- + parameter like this:
- +
- + serdes=ioportaddr,irq,clockrate,baud
- +
- + For an IP7160RGW eval board, you could use this:
- +
- + serdes=0x2004000,61,250000000,57600
- +
- + which will let you see early printk output at 57600 baud.
- +
- +config STOP_ON_TRAP
- + bool "Enable stopping at the LDSR for all traps"
- + default n
- + help
- + Cause the LDSR to stop all threads whenever a trap is about to be serviced
- +
- +config STOP_ON_BUG
- + bool "Enable stopping on failed BUG_ON()"
- + default n
- + help
- + Cause all BUG_ON failures to stop all threads
- +
- +config DEBUG_IRQMEASURE
- + bool "Enable IRQ handler measurements"
- + default n
- + help
- + When enabled each IRQ's min/avg/max times will be printed. If the handler
- + re-enables interrupt, the times will show the full time including to service
- + nested interrupts. See /proc/irq_measurements.
- +
- +config DEBUG_PCIMEASURE
- + bool "Enable PCI transaction measurements"
- + default n
- + help
- + When enabled the system will measure the min/avg/max timer for each PCI transactions.
- + See /proc/pci_measurements.
- +
- +config ACCESS_OK_CHECKS_ENABLED
- + bool "Enable user space access checks"
- + default n
- + help
- + Enabling this check causes the kernel to verify that addresses passed
- + to the kernel by the user space code are within the processes
- + address space. On a no-mmu system, this is done by examining the
- + processes memory data structures (adversly affecting performance) but
- + ensuring that a process does not ask the kernel to violate another
- + processes address space. Sadly, the kernel uses access_ok() for
- + address that are in the kernel which results in a large volume of
- + false positives.
- +
- +choice
- + prompt "Unaligned Access Support"
- + default UNALIGNED_ACCESS_ENABLED
- + help
- + Kernel / Userspace unaligned access handling.
- +
- +config UNALIGNED_ACCESS_ENABLED
- + bool "Kernel and Userspace"
- + help
- +
- +config UNALIGNED_ACCESS_USERSPACE_ONLY
- + bool "Userspace Only"
- + help
- +
- +config UNALIGNED_ACCESS_DISABLED
- + bool "Disabled"
- + help
- +
- +endchoice
- +
- +config DEBUG_STACKOVERFLOW
- + bool "Check for stack overflows"
- + default n
- + depends on DEBUG_KERNEL
- + help
- + This option will cause messages to be printed if free kernel stack space
- + drops below a certain limit (THREAD_SIZE /8).
- +
- +config DEBUG_STACK_USAGE
- + bool "Stack utilization instrumentation"
- + default n
- + depends on DEBUG_KERNEL
- + help
- + Enables the display of the minimum amount of free kernel stack which each
- + task has ever had available in the sysrq-T and sysrq-P debug output.
- +
- + This option will slow down process creation somewhat.
- +
- +source "lib/Kconfig.debug"
- +
- +endmenu
- +
- --- /dev/null
- +++ b/arch/ubicom32/Makefile
- @@ -0,0 +1,103 @@
- +#
- +# arch/ubicom32/Makefile
- +# <TODO: Replace with short file description>
- +#
- +# (C) Copyright 2009, Ubicom, Inc.
- +#
- +# This file is part of the Ubicom32 Linux Kernel Port.
- +#
- +# The Ubicom32 Linux Kernel Port is free software: you can redistribute
- +# it and/or modify it under the terms of the GNU General Public License
- +# as published by the Free Software Foundation, either version 2 of the
- +# License, or (at your option) any later version.
- +#
- +# The Ubicom32 Linux Kernel Port is distributed in the hope that it
- +# will be useful, but WITHOUT ANY WARRANTY; without even the implied
- +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- +# the GNU General Public License for more details.
- +#
- +# You should have received a copy of the GNU General Public License
- +# along with the Ubicom32 Linux Kernel Port. If not,
- +# see <http://www.gnu.org/licenses/>.
- +#
- +# Ubicom32 implementation derived from (with many thanks):
- +# arch/m68knommu
- +# arch/blackfin
- +# arch/parisc
- +#
- +
- +KBUILD_DEFCONFIG :=
- +
- +# setup the machine name and machine dependent settings
- +machine-$(CONFIG_UBICOM32_V3) := ip5k
- +machine-$(CONFIG_UBICOM32_V4) := ip7k
- +MACHINE := $(machine-y)
- +export MACHINE
- +
- +model-$(CONFIG_RAMKERNEL) := ram
- +model-$(CONFIG_ROMKERNEL) := rom
- +MODEL := $(model-y)
- +export MODEL
- +
- +CPUCLASS := $(cpuclass-y)
- +
- +export CPUCLASS
- +
- +#
- +# We want the core kernel built using the fastcall ABI but modules need
- +# to be built using the slower calling convention because they could be
- +# loaded out of range for fast calls.
- +#
- +CFLAGS_KERNEL += -mfastcall
- +CFLAGS_MODULE += -mno-fastcall
- +
- +#
- +# Some CFLAG additions based on specific CPU type.
- +#
- +cflags-$(CONFIG_UBICOM32_V3) := -march=ubicom32v3 -mno-fdpic -DIP5000
- +cflags-$(CONFIG_UBICOM32_V4) := -march=ubicom32v4 -mno-fdpic -DIP7000
- +
- +ldflags-$(CONFIG_LINKER_RELAXATION) := --relax
- +LDFLAGS_vmlinux := $(ldflags-y)
- +
- +GCCLIBDIR := $(dir $(shell $(CC) $(cflags-y) -print-libgcc-file-name))
- +
- +KBUILD_CFLAGS += $(cflags-y) -ffunction-sections
- +KBUILD_AFLAGS += $(cflags-y)
- +
- +KBUILD_CFLAGS += -D__linux__ -Dlinux
- +KBUILD_CFLAGS += -DUTS_SYSNAME=\"uClinux\"
- +
- +# include any machine specific directory
- +ifneq ($(machine-y),)
- +core-y += arch/$(ARCH)/mach-$(MACHINE)/
- +endif
- +
- +head-y := arch/$(ARCH)/kernel/head.o
- +
- +core-y += arch/$(ARCH)/kernel/ \
- + arch/$(ARCH)/mm/ \
- + arch/$(ARCH)/crypto/ \
- + arch/$(ARCH)/mach-common/
- +
- +drivers-$(CONFIG_OPROFILE) += arch/ubicom32/oprofile/
- +
- +libs-y += arch/$(ARCH)/lib/
- +
- +archclean:
- +
- +# make sure developer has selected a valid board
- +ifeq ($(CONFIG_NOBOARD),y)
- +# $(error have to select a valid board file $(CONFIG_NOBOARD), please run kernel config again)
- +_all: config_board_error
- +endif
- +
- +config_board_error:
- + @echo "*************************************************"
- + @echo "You have not selected a proper board."
- + @echo "Please run menuconfig (or config) against your"
- + @echo "kernel and choose your board under Processor"
- + @echo "options"
- + @echo "*************************************************"
- + @exit 1
- +
- --- /dev/null
- +++ b/arch/ubicom32/kernel/asm-offsets.c
- @@ -0,0 +1,162 @@
- +/*
- + * arch/ubicom32/kernel/asm-offsets.c
- + * Ubicom32 architecture definitions needed by assembly language modules.
- + *
- + * (C) Copyright 2009, Ubicom, Inc.
- + *
- + * This file is part of the Ubicom32 Linux Kernel Port.
- + *
- + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
- + * it and/or modify it under the terms of the GNU General Public License
- + * as published by the Free Software Foundation, either version 2 of the
- + * License, or (at your option) any later version.
- + *
- + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
- + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
- + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- + * the GNU General Public License for more details.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with the Ubicom32 Linux Kernel Port. If not,
- + * see <http://www.gnu.org/licenses/>.
- + *
- + * Ubicom32 implementation derived from (with many thanks):
- + * arch/m68knommu
- + * arch/blackfin
- + * arch/parisc
- + */
- +/*
- + * This program is used to generate definitions needed by
- + * assembly language modules.
- + *
- + * We use the technique used in the OSF Mach kernel code:
- + * generate asm statements containing #defines,
- + * compile this file to assembler, and then extract the
- + * #defines from the assembly-language output.
- + */
- +
- +#include <linux/module.h>
- +#include <linux/stddef.h>
- +#include <linux/sched.h>
- +#include <linux/kernel_stat.h>
- +#include <linux/ptrace.h>
- +#include <linux/hardirq.h>
- +#include <asm/bootinfo.h>
- +#include <asm/irq.h>
- +#include <asm/thread_info.h>
- +
- +#define DEFINE(sym, val) \
- + asm volatile("\n->" #sym " %0 " #val : : "i" (val))
- +
- +#define BLANK() asm volatile("\n->" : : )
- +
- +int main(void)
- +{
- + /* offsets into the task struct */
- + DEFINE(TASK_STATE, offsetof(struct task_struct, state));
- + DEFINE(TASK_FLAGS, offsetof(struct task_struct, flags));
- + DEFINE(TASK_PTRACE, offsetof(struct task_struct, ptrace));
- + DEFINE(TASK_BLOCKED, offsetof(struct task_struct, blocked));
- + DEFINE(TASK_THREAD, offsetof(struct task_struct, thread));
- + DEFINE(TASK_THREAD_INFO, offsetof(struct task_struct, stack));
- + DEFINE(TASK_MM, offsetof(struct task_struct, mm));
- + DEFINE(TASK_ACTIVE_MM, offsetof(struct task_struct, active_mm));
- +
- + /* offsets into the kernel_stat struct */
- + DEFINE(STAT_IRQ, offsetof(struct kernel_stat, irqs));
- +
- + /* offsets into the irq_cpustat_t struct */
- + DEFINE(CPUSTAT_SOFTIRQ_PENDING, offsetof(irq_cpustat_t, __softirq_pending));
- +
- + /* offsets into the thread struct */
- + DEFINE(THREAD_D10, offsetof(struct thread_struct, d10));
- + DEFINE(THREAD_D11, offsetof(struct thread_struct, d11));
- + DEFINE(THREAD_D12, offsetof(struct thread_struct, d12));
- + DEFINE(THREAD_D13, offsetof(struct thread_struct, d13));
- + DEFINE(THREAD_A1, offsetof(struct thread_struct, a1));
- + DEFINE(THREAD_A2, offsetof(struct thread_struct, a2));
- + DEFINE(THREAD_A5, offsetof(struct thread_struct, a5));
- + DEFINE(THREAD_A6, offsetof(struct thread_struct, a6));
- + DEFINE(THREAD_SP, offsetof(struct thread_struct, sp));
- +
- + /* offsets into the pt_regs */
- + DEFINE(PT_D0, offsetof(struct pt_regs, dn[0]));
- + DEFINE(PT_D1, offsetof(struct pt_regs, dn[1]));
- + DEFINE(PT_D2, offsetof(struct pt_regs, dn[2]));
- + DEFINE(PT_D3, offsetof(struct pt_regs, dn[3]));
- + DEFINE(PT_D4, offsetof(struct pt_regs, dn[4]));
- + DEFINE(PT_D5, offsetof(struct pt_regs, dn[5]));
- + DEFINE(PT_D6, offsetof(struct pt_regs, dn[6]));
- + DEFINE(PT_D7, offsetof(struct pt_regs, dn[7]));
- + DEFINE(PT_D8, offsetof(struct pt_regs, dn[8]));
- + DEFINE(PT_D9, offsetof(struct pt_regs, dn[9]));
- + DEFINE(PT_D10, offsetof(struct pt_regs, dn[10]));
- + DEFINE(PT_D11, offsetof(struct pt_regs, dn[11]));
- + DEFINE(PT_D12, offsetof(struct pt_regs, dn[12]));
- + DEFINE(PT_D13, offsetof(struct pt_regs, dn[13]));
- + DEFINE(PT_D14, offsetof(struct pt_regs, dn[14]));
- + DEFINE(PT_D15, offsetof(struct pt_regs, dn[15]));
- + DEFINE(PT_A0, offsetof(struct pt_regs, an[0]));
- + DEFINE(PT_A1, offsetof(struct pt_regs, an[1]));
- + DEFINE(PT_A2, offsetof(struct pt_regs, an[2]));
- + DEFINE(PT_A3, offsetof(struct pt_regs, an[3]));
- + DEFINE(PT_A4, offsetof(struct pt_regs, an[4]));
- + DEFINE(PT_A5, offsetof(struct pt_regs, an[5]));
- + DEFINE(PT_A6, offsetof(struct pt_regs, an[6]));
- + DEFINE(PT_A7, offsetof(struct pt_regs, an[7]));
- + DEFINE(PT_SP, offsetof(struct pt_regs, an[7]));
- +
- + DEFINE(PT_ACC0HI, offsetof(struct pt_regs, acc0[0]));
- + DEFINE(PT_ACC0LO, offsetof(struct pt_regs, acc0[1]));
- + DEFINE(PT_MAC_RC16, offsetof(struct pt_regs, mac_rc16));
- +
- + DEFINE(PT_ACC1HI, offsetof(struct pt_regs, acc1[0]));
- + DEFINE(PT_ACC1LO, offsetof(struct pt_regs, acc1[1]));
- +
- + DEFINE(PT_SOURCE3, offsetof(struct pt_regs, source3));
- + DEFINE(PT_INST_CNT, offsetof(struct pt_regs, inst_cnt));
- + DEFINE(PT_CSR, offsetof(struct pt_regs, csr));
- + DEFINE(PT_DUMMY_UNUSED, offsetof(struct pt_regs, dummy_unused));
- +
- + DEFINE(PT_INT_MASK0, offsetof(struct pt_regs, int_mask0));
- + DEFINE(PT_INT_MASK1, offsetof(struct pt_regs, int_mask1));
- +
- + DEFINE(PT_PC, offsetof(struct pt_regs, pc));
- +
- + DEFINE(PT_TRAP_CAUSE, offsetof(struct pt_regs, trap_cause));
- +
- + DEFINE(PT_SIZE, sizeof(struct pt_regs));
- +
- + DEFINE(PT_FRAME_TYPE, offsetof(struct pt_regs, frame_type));
- +
- + DEFINE(PT_ORIGINAL_D0, offsetof(struct pt_regs, original_dn_0));
- + DEFINE(PT_PREVIOUS_PC, offsetof(struct pt_regs, previous_pc));
- +
- + /* offsets into the kernel_stat struct */
- + DEFINE(STAT_IRQ, offsetof(struct kernel_stat, irqs));
- +
- + /* signal defines */
- + DEFINE(SIGSEGV, SIGSEGV);
- + //DEFINE(SEGV_MAPERR, SEGV_MAPERR);
- + DEFINE(SIGTRAP, SIGTRAP);
- + //DEFINE(TRAP_TRACE, TRAP_TRACE);
- +
- + DEFINE(PT_PTRACED, PT_PTRACED);
- + DEFINE(PT_DTRACE, PT_DTRACE);
- +
- + DEFINE(ASM_THREAD_SIZE, THREAD_SIZE);
- +
- + /* Offsets in thread_info structure */
- + DEFINE(TI_TASK, offsetof(struct thread_info, task));
- + DEFINE(TI_EXECDOMAIN, offsetof(struct thread_info, exec_domain));
- + DEFINE(TI_FLAGS, offsetof(struct thread_info, flags));
- + DEFINE(TI_PREEMPTCOUNT, offsetof(struct thread_info, preempt_count));
- + DEFINE(TI_CPU, offsetof(struct thread_info, cpu));
- + DEFINE(TI_INTR_NESTING, offsetof(struct thread_info, interrupt_nesting));
- + DEFINE(ASM_TIF_NEED_RESCHED, TIF_NEED_RESCHED);
- + DEFINE(ASM_TIF_SYSCALL_TRACE, TIF_SYSCALL_TRACE);
- + DEFINE(ASM_TIF_SIGPENDING, TIF_SIGPENDING);
- +
- + DEFINE(ASM_RAM_END, (CONFIG_RAMBASE + CONFIG_RAMSIZE));
- + return 0;
- +}
- --- /dev/null
- +++ b/arch/ubicom32/kernel/Makefile
- @@ -0,0 +1,64 @@
- +#
- +# arch/ubicom32/kernel/Makefile
- +# Main Makefile for the Ubicom32 arch directory.
- +#
- +# (C) Copyright 2009, Ubicom, Inc.
- +#
- +# This file is part of the Ubicom32 Linux Kernel Port.
- +#
- +# The Ubicom32 Linux Kernel Port is free software: you can redistribute
- +# it and/or modify it under the terms of the GNU General Public License
- +# as published by the Free Software Foundation, either version 2 of the
- +# License, or (at your option) any later version.
- +#
- +# The Ubicom32 Linux Kernel Port is distributed in the hope that it
- +# will be useful, but WITHOUT ANY WARRANTY; without even the implied
- +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- +# the GNU General Public License for more details.
- +#
- +# You should have received a copy of the GNU General Public License
- +# along with the Ubicom32 Linux Kernel Port. If not,
- +# see <http://www.gnu.org/licenses/>.
- +#
- +# Ubicom32 implementation derived from (with many thanks):
- +# arch/m68knommu
- +# arch/blackfin
- +# arch/parisc
- +#
- +
- +extra-y := head.o vmlinux.lds
- +
- +obj-y += \
- + devtree.o \
- + dma.o \
- + flat.o \
- + init_task.o \
- + irq.o \
- + ldsr.o \
- + os_node.o \
- + process.o \
- + processor.o \
- + ptrace.o \
- + setup.o \
- + signal.o \
- + stacktrace.o \
- + sys_ubicom32.o \
- + syscalltable.o \
- + thread.o \
- + time.o \
- + traps.o \
- + ubicom32_context_switch.o \
- + ubicom32_ksyms.o \
- + ubicom32_syscall.o \
- + unaligned_trap.o
- +
- +obj-$(CONFIG_MODULES) += module.o
- +obj-$(CONFIG_COMEMPCI) += comempci.o
- +obj-$(CONFIG_SMP) += smp.o topology.o
- +obj-$(CONFIG_ACCESS_OK_CHECKS_ENABLED) += uaccess.o
- +obj-$(CONFIG_GENERIC_CLOCKEVENTS) += timer_device.o
- +obj-$(CONFIG_GENERIC_CLOCKEVENTS_BROADCAST) += timer_broadcast.o
- +
- +ifndef CONFIG_GENERIC_CLOCKEVENTS
- +obj-y += timer_tick.o
- +endif
- --- /dev/null
- +++ b/arch/ubicom32/mach-ip5k/Kconfig
- @@ -0,0 +1,32 @@
- +
- +config IP5170DPF
- + bool "IP5170DPF"
- + select UBICOM32_V3
- + select I2C
- + select I2C_GPIO
- + select FB
- + select FB_UBICOM32
- + select BACKLIGHT_LCD_SUPPORT
- + select BACKLIGHT_CLASS_DEVICE
- + select UBICOM_HID
- + select NEW_LEDS
- + select LEDS_CLASS
- + select LEDS_GPIO
- + select BRD_64MB
- + help
- + IP5170 Digital Picture Frame board, 8005-1113, IP5K-BEV-0011-13 v1.3
- +
- +config IP5160DEV
- + bool "IP5160Dev_Ver1Dot1"
- + select UBICOM32_V3
- + select BRD_64MB
- + help
- + Ubicom StreamEngine 5000 Development Board, IP5K-BDV-0004-11 v1.1
- +
- +config IP5160EVAL
- + bool "IP5160RGWEval_Ver2Rev2"
- + select UBICOM32_V3
- + select BRD_32MB
- + help
- + Ubicom StreamEngine 5000 RGW Evaluation Board, IP5K-RGW-0004-11 v2.2
- +
- --- /dev/null
- +++ b/arch/ubicom32/mach-ip7k/Kconfig
- @@ -0,0 +1,132 @@
- +config IP7145DPF
- + bool "IP7145DPF"
- + select UBICOM32_V4
- + select UBICOM_INPUT
- + select UBICOM_INPUT_I2C
- + select RTC_CLASS
- + select RTC_DRV_S35390A
- + select I2C
- + select I2C_GPIO
- + select GPIO_PCA953X
- + select FB
- + select FB_UBICOM32
- + select BACKLIGHT_LCD_SUPPORT
- + select LCD_CLASS_DEVICE
- + select LCD_UBICOM32
- + select BACKLIGHT_CLASS_DEVICE
- + select BACKLIGHT_UBICOM32
- + select SND_UBI32
- + select MMC_UBICOM32
- + select MMC
- + select MMC_BLOCK
- + select BRD_64MB
- + help
- + IP7145 Digital Picture Frame reference design, supports:
- + 8007-0410 v1.0
- +
- +config IP7160RGW
- + bool "IP7160RGW"
- + select UBICOM32_V4
- + select UBICOM_INPUT
- + select NEW_LEDS
- + select LEDS_CLASS
- + select LEDS_GPIO
- + select BRD_64MB
- + select SPI
- + select SPI_UBICOM32_GPIO
- + select VLAN_8021Q
- + select UBICOM_SWITCH
- + select UBICOM_SWITCH_BCM539X
- + help
- + Ubicom IP7160 RGW Eval, supports:
- + 8007-0110 v1.0
- + 8007-0111 v1.1
- + 8007-0112 v1.2
- +
- +config IP7160BRINGUP
- + bool "IP7160BRINGUP"
- + select UBICOM32_V4
- + select NEW_LEDS
- + select LEDS_CLASS
- + select LEDS_GPIO
- + select BRD_64MB
- + help
- + Ubicom IP7160 Bringup, supports:
- + 8007-0010 v1.0
- +
- +config IP7160DPF
- + bool "IP7160DPF"
- + select UBICOM32_V4
- + select I2C
- + select I2C_GPIO
- + select FB
- + select FB_UBICOM32
- + select BACKLIGHT_LCD_SUPPORT
- + select BACKLIGHT_CLASS_DEVICE
- + select SND_UBI32
- + select SND_UBI32_AUDIO_CS4350
- + select UBICOM_HID
- + select BRD_64MB
- + help
- + IP7160 Digital Picture Frame board, supports:
- + 8007-0211 Rev 1.1
- +
- +config IP7500MODULE
- + bool "IP7500MODULE"
- + select UBICOM32_V4
- + select BRD_128MB
- + help
- + Ubicom IP7500 CPU Module board, supports:
- + 8007-0510 v1.0
- + 8007-0510A v1.0
- +
- + Please see ip7500module.c for more details.
- +
- +config IP7500AV
- + bool "IP7500AV"
- + select UBICOM32_V4
- + select BRD_128MB
- + select I2C
- + select I2C_GPIO
- + select SND_UBI32
- + select SND_UBI32_AUDIO_CS4384
- + select FB
- + select FB_UBICOM32
- + help
- + Ubicom IP7500 Audio Video board, supports:
- + 8007-0810 v1.0
- +
- + With Ubicom IP7500 CPU Module board:
- + 8007-0510 v1.0 -or-
- + 8007-0510A v1.0
- +
- + Please see ip7500av.c for more details.
- +
- +config IP7500MEDIA
- + bool "IP7500MEDIA"
- + select UBICOM32_V4
- + select UBICOM_INPUT_I2C
- + select RTC_CLASS
- + select RTC_DRV_S35390A
- + select I2C
- + select I2C_GPIO
- + select GPIO_PCA953X
- + select FB
- + select FB_UBICOM32
- + select BACKLIGHT_LCD_SUPPORT
- + select LCD_CLASS_DEVICE
- + select LCD_UBICOM32
- + select BACKLIGHT_CLASS_DEVICE
- + select BACKLIGHT_UBICOM32
- + select SND_UBI32
- + select SND_UBI32_AUDIO_CS4350
- + select MMC_UBICOM32
- + select MMC
- + select MMC_BLOCK
- + select BRD_128MB
- + help
- + IP7500 Media Board w/ IP7500 CPU Module board, supports:
- + 8007-0610 v1.0 w/ 8007-0510 v1.0
- +
- + Please see ip7500media.c for more details.
- +
- --- a/fs/Kconfig.binfmt
- +++ b/fs/Kconfig.binfmt
- @@ -30,7 +30,7 @@ config COMPAT_BINFMT_ELF
- config BINFMT_ELF_FDPIC
- bool "Kernel support for FDPIC ELF binaries"
- default y
- - depends on (FRV || BLACKFIN || (SUPERH32 && !MMU))
- + depends on (FRV || BLACKFIN || (SUPERH32 && !MMU) || UBICOM32)
- help
- ELF FDPIC binaries are based on ELF, but allow the individual load
- segments of a binary to be located in memory independently of each
|