2
0

100-ubicom32_headers.patch 144 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852
  1. --- /dev/null
  2. +++ b/arch/ubicom32/include/asm/a.out.h
  3. @@ -0,0 +1,47 @@
  4. +/*
  5. + * arch/ubicom32/include/asm/a.out.h
  6. + * Definitions for Ubicom32 a.out executable format.
  7. + *
  8. + * (C) Copyright 2009, Ubicom, Inc.
  9. + *
  10. + * This file is part of the Ubicom32 Linux Kernel Port.
  11. + *
  12. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  13. + * it and/or modify it under the terms of the GNU General Public License
  14. + * as published by the Free Software Foundation, either version 2 of the
  15. + * License, or (at your option) any later version.
  16. + *
  17. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  18. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  19. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  20. + * the GNU General Public License for more details.
  21. + *
  22. + * You should have received a copy of the GNU General Public License
  23. + * along with the Ubicom32 Linux Kernel Port. If not,
  24. + * see <http://www.gnu.org/licenses/>.
  25. + *
  26. + * Ubicom32 implementation derived from (with many thanks):
  27. + * arch/m68knommu
  28. + * arch/blackfin
  29. + * arch/parisc
  30. + */
  31. +#ifndef _ASM_UBICOM32_A_OUT_H
  32. +#define _ASM_UBICOM32_A_OUT_H
  33. +
  34. +struct exec
  35. +{
  36. + unsigned long a_info; /* Use macros N_MAGIC, etc for access */
  37. + unsigned a_text; /* length of text, in bytes */
  38. + unsigned a_data; /* length of data, in bytes */
  39. + unsigned a_bss; /* length of uninitialized data area for file, in bytes */
  40. + unsigned a_syms; /* length of symbol table data in file, in bytes */
  41. + unsigned a_entry; /* start address */
  42. + unsigned a_trsize; /* length of relocation info for text, in bytes */
  43. + unsigned a_drsize; /* length of relocation info for data, in bytes */
  44. +};
  45. +
  46. +#define N_TRSIZE(a) ((a).a_trsize)
  47. +#define N_DRSIZE(a) ((a).a_drsize)
  48. +#define N_SYMSIZE(a) ((a).a_syms)
  49. +
  50. +#endif /* _ASM_UBICOM32_A_OUT_H */
  51. --- /dev/null
  52. +++ b/arch/ubicom32/include/asm/auxvec.h
  53. @@ -0,0 +1,32 @@
  54. +/*
  55. + * arch/ubicom32/include/asm/auxvec.h
  56. + * Symbolic values for the entries in the auxiliary table
  57. + * put on the initial stack.
  58. + *
  59. + * (C) Copyright 2009, Ubicom, Inc.
  60. + *
  61. + * This file is part of the Ubicom32 Linux Kernel Port.
  62. + *
  63. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  64. + * it and/or modify it under the terms of the GNU General Public License
  65. + * as published by the Free Software Foundation, either version 2 of the
  66. + * License, or (at your option) any later version.
  67. + *
  68. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  69. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  70. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  71. + * the GNU General Public License for more details.
  72. + *
  73. + * You should have received a copy of the GNU General Public License
  74. + * along with the Ubicom32 Linux Kernel Port. If not,
  75. + * see <http://www.gnu.org/licenses/>.
  76. + *
  77. + * Ubicom32 implementation derived from (with many thanks):
  78. + * arch/m68knommu
  79. + * arch/blackfin
  80. + * arch/parisc
  81. + */
  82. +#ifndef _ASM_UBICOM32_AUXVEC_H
  83. +#define _ASM_UBICOM32_AUXVEC_H
  84. +
  85. +#endif /* _ASM_UBICOM32_AUXVEC_H */
  86. --- /dev/null
  87. +++ b/arch/ubicom32/include/asm/bitops.h
  88. @@ -0,0 +1,41 @@
  89. +/*
  90. + * arch/ubicom32/include/asm/bitops.h
  91. + * Bit manipulation definitions for Ubicom32 architecture.
  92. + *
  93. + * (C) Copyright 2009, Ubicom, Inc.
  94. + *
  95. + * This file is part of the Ubicom32 Linux Kernel Port.
  96. + *
  97. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  98. + * it and/or modify it under the terms of the GNU General Public License
  99. + * as published by the Free Software Foundation, either version 2 of the
  100. + * License, or (at your option) any later version.
  101. + *
  102. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  103. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  104. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  105. + * the GNU General Public License for more details.
  106. + *
  107. + * You should have received a copy of the GNU General Public License
  108. + * along with the Ubicom32 Linux Kernel Port. If not,
  109. + * see <http://www.gnu.org/licenses/>.
  110. + *
  111. + * Ubicom32 implementation derived from (with many thanks):
  112. + * arch/m68knommu
  113. + * arch/blackfin
  114. + * arch/parisc
  115. + */
  116. +#ifndef _ASM_UBICOM32_BITOPS_H
  117. +#define _ASM_UBICOM32_BITOPS_H
  118. +
  119. +/*
  120. + * Copyright 1992, Linus Torvalds.
  121. + */
  122. +
  123. +#include <linux/compiler.h>
  124. +#include <asm/byteorder.h> /* swab32 */
  125. +
  126. +#include <asm-generic/bitops/fls.h>
  127. +#include <asm-generic/bitops/fls64.h>
  128. +
  129. +#endif /* _ASM_UBICOM32_BITOPS_H */
  130. --- /dev/null
  131. +++ b/arch/ubicom32/include/asm/board.h
  132. @@ -0,0 +1,34 @@
  133. +/*
  134. + * arch/ubicom32/include/asm/board.h
  135. + * Board init and revision definitions for Ubicom32 architecture.
  136. + *
  137. + * (C) Copyright 2009, Ubicom, Inc.
  138. + *
  139. + * This file is part of the Ubicom32 Linux Kernel Port.
  140. + *
  141. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  142. + * it and/or modify it under the terms of the GNU General Public License
  143. + * as published by the Free Software Foundation, either version 2 of the
  144. + * License, or (at your option) any later version.
  145. + *
  146. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  147. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  148. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  149. + * the GNU General Public License for more details.
  150. + *
  151. + * You should have received a copy of the GNU General Public License
  152. + * along with the Ubicom32 Linux Kernel Port. If not,
  153. + * see <http://www.gnu.org/licenses/>.
  154. + *
  155. + * Ubicom32 implementation derived from (with many thanks):
  156. + * arch/m68knommu
  157. + * arch/blackfin
  158. + * arch/parisc
  159. + */
  160. +#ifndef _ASM_UBICOM32_BOARD_H
  161. +#define _ASM_UBICOM32_BOARD_H
  162. +
  163. +extern const char *board_get_revision(void);
  164. +extern void __init board_init(void);
  165. +
  166. +#endif /* _ASM_UBICOM32_BOARD_H */
  167. --- /dev/null
  168. +++ b/arch/ubicom32/include/asm/byteorder.h
  169. @@ -0,0 +1,35 @@
  170. +/*
  171. + * arch/ubicom32/include/asm/byteorder.h
  172. + * Byte order swapping utility routines.
  173. + *
  174. + * (C) Copyright 2009, Ubicom, Inc.
  175. + *
  176. + * This file is part of the Ubicom32 Linux Kernel Port.
  177. + *
  178. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  179. + * it and/or modify it under the terms of the GNU General Public License
  180. + * as published by the Free Software Foundation, either version 2 of the
  181. + * License, or (at your option) any later version.
  182. + *
  183. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  184. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  185. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  186. + * the GNU General Public License for more details.
  187. + *
  188. + * You should have received a copy of the GNU General Public License
  189. + * along with the Ubicom32 Linux Kernel Port. If not,
  190. + * see <http://www.gnu.org/licenses/>.
  191. + *
  192. + * Ubicom32 implementation derived from (with many thanks):
  193. + * arch/m68knommu
  194. + * arch/blackfin
  195. + * arch/parisc
  196. + */
  197. +#ifndef _ASM_UBICOM32_BYTEORDER_H
  198. +#define _ASM_UBICOM32_BYTEORDER_H
  199. +
  200. +#include <linux/types.h>
  201. +#include <linux/byteorder/big_endian.h>
  202. +
  203. +#endif /* _ASM_UBICOM32_BYTEORDER_H */
  204. +
  205. --- /dev/null
  206. +++ b/arch/ubicom32/include/asm/elf.h
  207. @@ -0,0 +1,167 @@
  208. +/*
  209. + * arch/ubicom32/include/asm/elf.h
  210. + * Definitions for elf executable format for Ubicom32 architecture.
  211. + *
  212. + * (C) Copyright 2009, Ubicom, Inc.
  213. + *
  214. + * This file is part of the Ubicom32 Linux Kernel Port.
  215. + *
  216. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  217. + * it and/or modify it under the terms of the GNU General Public License
  218. + * as published by the Free Software Foundation, either version 2 of the
  219. + * License, or (at your option) any later version.
  220. + *
  221. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  222. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  223. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  224. + * the GNU General Public License for more details.
  225. + *
  226. + * You should have received a copy of the GNU General Public License
  227. + * along with the Ubicom32 Linux Kernel Port. If not,
  228. + * see <http://www.gnu.org/licenses/>.
  229. + *
  230. + * Ubicom32 implementation derived from (with many thanks):
  231. + * arch/m68knommu
  232. + * arch/blackfin
  233. + * arch/parisc
  234. + */
  235. +#ifndef _ASM_UBICOM32_ELF_H
  236. +#define _ASM_UBICOM32_ELF_H
  237. +
  238. +/*
  239. + * ELF register definitions..
  240. + */
  241. +
  242. +#include <asm/ptrace.h>
  243. +#include <asm/user.h>
  244. +
  245. +/*
  246. + * Processor specific flags for the ELF header e_flags field.
  247. + */
  248. +#define EF_UBICOM32_V3 0x00000001 /* -fmarch=ubicom32v3 */
  249. +#define EF_UBICOM32_V4 0x00000002 /* -fmarch=ubicom32v4 */
  250. +#define EF_UBICOM32_PIC 0x80000000 /* -fpic */
  251. +#define EF_UBICOM32_FDPIC 0x40000000 /* -mfdpic */
  252. +
  253. +/*
  254. + * Ubicom32 ELF relocation types
  255. + */
  256. +#define R_UBICOM32_NONE 0
  257. +#define R_UBICOM32_16 1
  258. +#define R_UBICOM32_32 2
  259. +#define R_UBICOM32_LO16 3
  260. +#define R_UBICOM32_HI16 4
  261. +#define R_UBICOM32_21_PCREL 5
  262. +#define R_UBICOM32_24_PCREL 6
  263. +#define R_UBICOM32_HI24 7
  264. +#define R_UBICOM32_LO7_S 8
  265. +#define R_UBICOM32_LO7_2_S 9
  266. +#define R_UBICOM32_LO7_4_S 10
  267. +#define R_UBICOM32_LO7_D 11
  268. +#define R_UBICOM32_LO7_2_D 12
  269. +#define R_UBICOM32_LO7_4_D 13
  270. +#define R_UBICOM32_32_HARVARD 14
  271. +#define R_UBICOM32_LO7_CALLI 15
  272. +#define R_UBICOM32_LO16_CALLI 16
  273. +#define R_UBICOM32_GOT_HI24 17
  274. +#define R_UBICOM32_GOT_LO7_S 18
  275. +#define R_UBICOM32_GOT_LO7_2_S 19
  276. +#define R_UBICOM32_GOT_LO7_4_S 20
  277. +#define R_UBICOM32_GOT_LO7_D 21
  278. +#define R_UBICOM32_GOT_LO7_2_D 22
  279. +#define R_UBICOM32_GOT_LO7_4_D 23
  280. +#define R_UBICOM32_FUNCDESC_GOT_HI24 24
  281. +#define R_UBICOM32_FUNCDESC_GOT_LO7_S 25
  282. +#define R_UBICOM32_FUNCDESC_GOT_LO7_2_S 26
  283. +#define R_UBICOM32_FUNCDESC_GOT_LO7_4_S 27
  284. +#define R_UBICOM32_FUNCDESC_GOT_LO7_D 28
  285. +#define R_UBICOM32_FUNCDESC_GOT_LO7_2_D 29
  286. +#define R_UBICOM32_FUNCDESC_GOT_LO7_4_D 30
  287. +#define R_UBICOM32_GOT_LO7_CALLI 31
  288. +#define R_UBICOM32_FUNCDESC_GOT_LO7_CALLI 32
  289. +#define R_UBICOM32_FUNCDESC_VALUE 33
  290. +#define R_UBICOM32_FUNCDESC 34
  291. +#define R_UBICOM32_GOTOFFSET_LO 35
  292. +#define R_UBICOM32_GOTOFFSET_HI 36
  293. +#define R_UBICOM32_FUNCDESC_GOTOFFSET_LO 37
  294. +#define R_UBICOM32_FUNCDESC_GOTOFFSET_HI 38
  295. +#define R_UBICOM32_GNU_VTINHERIT 200
  296. +#define R_UBICOM32_GNU_VTENTRY 201
  297. +
  298. +typedef unsigned long elf_greg_t;
  299. +
  300. +#define ELF_NGREG (sizeof(struct pt_regs) / sizeof(elf_greg_t))
  301. +typedef elf_greg_t elf_gregset_t[ELF_NGREG];
  302. +
  303. +typedef struct user_ubicom32fp_struct elf_fpregset_t;
  304. +
  305. +/*
  306. + * This is used to ensure we don't load something for the wrong architecture.
  307. + */
  308. +#define elf_check_arch(x) ((x)->e_machine == EM_UBICOM32)
  309. +
  310. +#define elf_check_fdpic(x) ((x)->e_flags & EF_UBICOM32_FDPIC)
  311. +
  312. +#define elf_check_const_displacement(x) ((x)->e_flags & EF_UBICOM32_PIC)
  313. +
  314. +/*
  315. + * These are used to set parameters in the core dumps.
  316. + */
  317. +#define ELF_CLASS ELFCLASS32
  318. +#define ELF_DATA ELFDATA2MSB
  319. +#define ELF_ARCH EM_UBICOM32
  320. +
  321. +/* For SVR4/m68k the function pointer to be registered with `atexit' is
  322. + passed in %a1. Although my copy of the ABI has no such statement, it
  323. + is actually used on ASV. */
  324. +#define ELF_PLAT_INIT(_r, load_addr) _r->a1 = 0
  325. +
  326. +#define ELF_FDPIC_PLAT_INIT(_regs, _exec_map_addr, _interp_map_addr, \
  327. + _dynamic_addr) \
  328. + do { \
  329. + _regs->dn[1] = _exec_map_addr; \
  330. + _regs->dn[2] = _interp_map_addr; \
  331. + _regs->dn[3] = _dynamic_addr; \
  332. + _regs->an[1] = 0; /* dl_fini will be set by ldso */ \
  333. + } while (0)
  334. +
  335. +#define USE_ELF_CORE_DUMP
  336. +#define ELF_EXEC_PAGESIZE 4096
  337. +
  338. +#ifdef __KERNEL__
  339. +#ifdef CONFIG_UBICOM32_V4
  340. +#define ELF_FDPIC_CORE_EFLAGS (EF_UBICOM32_FDPIC | EF_UBICOM32_V4)
  341. +#elif defined CONFIG_UBICOM32_V3
  342. +#define ELF_FDPIC_CORE_EFLAGS (EF_UBICOM32_FDPIC | EF_UBICOM32_V3)
  343. +#else
  344. +#error Unknown/Unsupported ubicom32 architecture.
  345. +#endif
  346. +#endif
  347. +
  348. +/* This is the location that an ET_DYN program is loaded if exec'ed. Typical
  349. + use of this is to invoke "./ld.so someprog" to test out a new version of
  350. + the loader. We need to make sure that it is out of the way of the program
  351. + that it will "exec", and that there is sufficient room for the brk. */
  352. +
  353. +#define ELF_ET_DYN_BASE 0xD0000000UL
  354. +
  355. +/*
  356. + * For Ubicom32, the elf_gregset_t and struct pt_regs are the same size
  357. + * data structure so a copy is performed instead of providing the
  358. + * ELF_CORE_COPY_REGS macro.
  359. + */
  360. +
  361. +/* This yields a mask that user programs can use to figure out what
  362. + instruction set this cpu supports. */
  363. +
  364. +#define ELF_HWCAP (0)
  365. +
  366. +/* This yields a string that ld.so will use to load implementation
  367. + specific libraries for optimization. This is more specific in
  368. + intent than poking at uname or /proc/cpuinfo. */
  369. +
  370. +#define ELF_PLATFORM (NULL)
  371. +
  372. +#define SET_PERSONALITY(ex, ibcs2) set_personality((ibcs2)?PER_SVR4:PER_LINUX)
  373. +
  374. +#endif /* _ASM_UBICOM32_ELF_H */
  375. --- /dev/null
  376. +++ b/arch/ubicom32/include/asm/errno.h
  377. @@ -0,0 +1,33 @@
  378. +/*
  379. + * arch/ubicom32/include/asm/errno.h
  380. + * Generic errno.h for Ubicom32 architecture.
  381. + *
  382. + * (C) Copyright 2009, Ubicom, Inc.
  383. + *
  384. + * This file is part of the Ubicom32 Linux Kernel Port.
  385. + *
  386. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  387. + * it and/or modify it under the terms of the GNU General Public License
  388. + * as published by the Free Software Foundation, either version 2 of the
  389. + * License, or (at your option) any later version.
  390. + *
  391. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  392. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  393. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  394. + * the GNU General Public License for more details.
  395. + *
  396. + * You should have received a copy of the GNU General Public License
  397. + * along with the Ubicom32 Linux Kernel Port. If not,
  398. + * see <http://www.gnu.org/licenses/>.
  399. + *
  400. + * Ubicom32 implementation derived from (with many thanks):
  401. + * arch/m68knommu
  402. + * arch/blackfin
  403. + * arch/parisc
  404. + */
  405. +#ifndef _ASM_UBICOM32_ERRNO_H
  406. +#define _ASM_UBICOM32_ERRNO_H
  407. +
  408. +#include <asm-generic/errno.h>
  409. +
  410. +#endif /* _ASM_UBICOM32_ERRNO_H */
  411. --- /dev/null
  412. +++ b/arch/ubicom32/include/asm/fcntl.h
  413. @@ -0,0 +1,38 @@
  414. +/*
  415. + * arch/ubicom32/include/asm/fcntl.h
  416. + * File control bit definitions for Ubicom32 architecture.
  417. + *
  418. + * (C) Copyright 2009, Ubicom, Inc.
  419. + *
  420. + * This file is part of the Ubicom32 Linux Kernel Port.
  421. + *
  422. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  423. + * it and/or modify it under the terms of the GNU General Public License
  424. + * as published by the Free Software Foundation, either version 2 of the
  425. + * License, or (at your option) any later version.
  426. + *
  427. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  428. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  429. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  430. + * the GNU General Public License for more details.
  431. + *
  432. + * You should have received a copy of the GNU General Public License
  433. + * along with the Ubicom32 Linux Kernel Port. If not,
  434. + * see <http://www.gnu.org/licenses/>.
  435. + *
  436. + * Ubicom32 implementation derived from (with many thanks):
  437. + * arch/m68knommu
  438. + * arch/blackfin
  439. + * arch/parisc
  440. + */
  441. +#ifndef _ASM_UBICOM32_FCNTL_H
  442. +#define _ASM_UBICOM32_FCNTL_H
  443. +
  444. +#define O_DIRECTORY 040000 /* must be a directory */
  445. +#define O_NOFOLLOW 0100000 /* don't follow links */
  446. +#define O_DIRECT 0200000 /* direct disk access hint - currently ignored */
  447. +#define O_LARGEFILE 0400000
  448. +
  449. +#include <asm-generic/fcntl.h>
  450. +
  451. +#endif /* _ASM_UBICOM32_FCNTL_H */
  452. --- /dev/null
  453. +++ b/arch/ubicom32/include/asm/flat.h
  454. @@ -0,0 +1,73 @@
  455. +/*
  456. + * arch/ubicom32/include/asm/flat.h
  457. + * Definitions to support flat-format executables.
  458. + *
  459. + * (C) Copyright 2009, Ubicom, Inc.
  460. + *
  461. + * This file is part of the Ubicom32 Linux Kernel Port.
  462. + *
  463. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  464. + * it and/or modify it under the terms of the GNU General Public License
  465. + * as published by the Free Software Foundation, either version 2 of the
  466. + * License, or (at your option) any later version.
  467. + *
  468. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  469. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  470. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  471. + * the GNU General Public License for more details.
  472. + *
  473. + * You should have received a copy of the GNU General Public License
  474. + * along with the Ubicom32 Linux Kernel Port. If not,
  475. + * see <http://www.gnu.org/licenses/>.
  476. + *
  477. + * Ubicom32 implementation derived from (with many thanks):
  478. + * arch/m68knommu
  479. + * arch/blackfin
  480. + * arch/parisc
  481. + */
  482. +
  483. +#ifndef _ASM_UBICOM32_FLAT_H
  484. +#define _ASM_UBICOM32_FLAT_H
  485. +
  486. +#define ARCH_FLAT_ALIGN 0x80
  487. +#define ARCH_FLAT_ALIGN_TEXT 1
  488. +
  489. +#define R_UBICOM32_32 2
  490. +#define R_UBICOM32_HI24 7
  491. +#define R_UBICOM32_LO7_S 8
  492. +#define R_UBICOM32_LO7_2_S 9
  493. +#define R_UBICOM32_LO7_4_S 10
  494. +#define R_UBICOM32_LO7_D 11
  495. +#define R_UBICOM32_LO7_2_D 12
  496. +#define R_UBICOM32_LO7_4_D 13
  497. +#define R_UBICOM32_LO7_CALLI 15
  498. +#define R_UBICOM32_LO16_CALLI 16
  499. +
  500. +extern void ubicom32_flat_put_addr_at_rp(unsigned long *rp, u32_t val, u32_t rval, unsigned long *p);
  501. +extern unsigned long ubicom32_flat_get_addr_from_rp(unsigned long *rp, u32_t relval, u32_t flags, unsigned long *p);
  502. +
  503. +#define flat_stack_align(sp) /* nothing needed */
  504. +#define flat_argvp_envp_on_stack() 1
  505. +#define flat_old_ram_flag(flags) (flags)
  506. +#define flat_reloc_valid(reloc, size) ((reloc) <= (size))
  507. +#define flat_get_addr_from_rp(rp, relval, flags, p) (ubicom32_flat_get_addr_from_rp(rp, relval,flags, p))
  508. +#define flat_put_addr_at_rp(rp, val, relval) do {ubicom32_flat_put_addr_at_rp(rp, val, relval, &persistent);} while(0)
  509. +#define flat_get_relocate_addr(rel) ((persistent) ? (persistent & 0x07ffffff) : (rel & 0x07ffffff))
  510. +
  511. +static inline int flat_set_persistent(unsigned int relval, unsigned long *p)
  512. +{
  513. + if (*p) {
  514. + return 0;
  515. + } else {
  516. + if ((relval >> 27) != R_UBICOM32_32) {
  517. + /*
  518. + * Something other than UBICOM32_32. The next entry has the relocation.
  519. + */
  520. + *p = relval;
  521. + return 1;
  522. + }
  523. + }
  524. + return 0;
  525. +}
  526. +
  527. +#endif /* _ASM_UBICOM32_FLAT_H */
  528. --- /dev/null
  529. +++ b/arch/ubicom32/include/asm/fpu.h
  530. @@ -0,0 +1,37 @@
  531. +/*
  532. + * arch/ubicom32/include/asm/fpu.h
  533. + * Floating point state definitions for Ubicom32 architecture.
  534. + *
  535. + * (C) Copyright 2009, Ubicom, Inc.
  536. + *
  537. + * This file is part of the Ubicom32 Linux Kernel Port.
  538. + *
  539. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  540. + * it and/or modify it under the terms of the GNU General Public License
  541. + * as published by the Free Software Foundation, either version 2 of the
  542. + * License, or (at your option) any later version.
  543. + *
  544. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  545. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  546. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  547. + * the GNU General Public License for more details.
  548. + *
  549. + * You should have received a copy of the GNU General Public License
  550. + * along with the Ubicom32 Linux Kernel Port. If not,
  551. + * see <http://www.gnu.org/licenses/>.
  552. + *
  553. + * Ubicom32 implementation derived from (with many thanks):
  554. + * arch/m68knommu
  555. + * arch/blackfin
  556. + * arch/parisc
  557. + */
  558. +#ifndef _ASM_UBICOM32_FPU_H
  559. +#define _ASM_UBICOM32_FPU_H
  560. +
  561. +/*
  562. + * MAX floating point unit state size (FSAVE/FRESTORE)
  563. + */
  564. +/* No FP unit present then... */
  565. +#define FPSTATESIZE (2) /* dummy size */
  566. +
  567. +#endif /* _ASM_UBICOM32_FPU_H */
  568. --- /dev/null
  569. +++ b/arch/ubicom32/include/asm/futex.h
  570. @@ -0,0 +1,33 @@
  571. +/*
  572. + * arch/ubicom32/include/asm/futex.h
  573. + * Generic futex.h for Ubicom32 architecture.
  574. + *
  575. + * (C) Copyright 2009, Ubicom, Inc.
  576. + *
  577. + * This file is part of the Ubicom32 Linux Kernel Port.
  578. + *
  579. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  580. + * it and/or modify it under the terms of the GNU General Public License
  581. + * as published by the Free Software Foundation, either version 2 of the
  582. + * License, or (at your option) any later version.
  583. + *
  584. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  585. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  586. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  587. + * the GNU General Public License for more details.
  588. + *
  589. + * You should have received a copy of the GNU General Public License
  590. + * along with the Ubicom32 Linux Kernel Port. If not,
  591. + * see <http://www.gnu.org/licenses/>.
  592. + *
  593. + * Ubicom32 implementation derived from (with many thanks):
  594. + * arch/m68knommu
  595. + * arch/blackfin
  596. + * arch/parisc
  597. + */
  598. +#ifndef _ASM_UBICOM32_FUTEX_H
  599. +#define _ASM_UBICOM32_FUTEX_H
  600. +
  601. +#include <asm-generic/futex.h>
  602. +
  603. +#endif /* _ASM_UBICOM32_FUTEX_H */
  604. --- /dev/null
  605. +++ b/arch/ubicom32/include/asm/ioctl.h
  606. @@ -0,0 +1,33 @@
  607. +/*
  608. + * arch/ubicom32/include/asm/ioctl.h
  609. + * Generic ioctl.h for Ubicom32 architecture.
  610. + *
  611. + * (C) Copyright 2009, Ubicom, Inc.
  612. + *
  613. + * This file is part of the Ubicom32 Linux Kernel Port.
  614. + *
  615. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  616. + * it and/or modify it under the terms of the GNU General Public License
  617. + * as published by the Free Software Foundation, either version 2 of the
  618. + * License, or (at your option) any later version.
  619. + *
  620. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  621. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  622. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  623. + * the GNU General Public License for more details.
  624. + *
  625. + * You should have received a copy of the GNU General Public License
  626. + * along with the Ubicom32 Linux Kernel Port. If not,
  627. + * see <http://www.gnu.org/licenses/>.
  628. + *
  629. + * Ubicom32 implementation derived from (with many thanks):
  630. + * arch/m68knommu
  631. + * arch/blackfin
  632. + * arch/parisc
  633. + */
  634. +#ifndef _ASM_UBICOM32_IOCTL_H
  635. +#define _ASM_UBICOM32_IOCTL_H
  636. +
  637. +#include <asm-generic/ioctl.h>
  638. +
  639. +#endif /* _ASM_UBICOM32_IOCTL_H */
  640. --- /dev/null
  641. +++ b/arch/ubicom32/include/asm/ioctls.h
  642. @@ -0,0 +1,111 @@
  643. +/*
  644. + * arch/ubicom32/include/asm/ioctls.h
  645. + * Definitions of ioctls for Ubicom32 architecture.
  646. + *
  647. + * (C) Copyright 2009, Ubicom, Inc.
  648. + *
  649. + * This file is part of the Ubicom32 Linux Kernel Port.
  650. + *
  651. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  652. + * it and/or modify it under the terms of the GNU General Public License
  653. + * as published by the Free Software Foundation, either version 2 of the
  654. + * License, or (at your option) any later version.
  655. + *
  656. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  657. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  658. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  659. + * the GNU General Public License for more details.
  660. + *
  661. + * You should have received a copy of the GNU General Public License
  662. + * along with the Ubicom32 Linux Kernel Port. If not,
  663. + * see <http://www.gnu.org/licenses/>.
  664. + *
  665. + * Ubicom32 implementation derived from (with many thanks):
  666. + * arch/m68knommu
  667. + * arch/blackfin
  668. + * arch/parisc
  669. + */
  670. +#ifndef _ASM_UBICOM32_IOCTLS_H
  671. +#define _ASM_UBICOM32_IOCTLS_H
  672. +
  673. +#include <asm/ioctl.h>
  674. +
  675. +/* 0x54 is just a magic number to make these relatively unique ('T') */
  676. +
  677. +#define TCGETS 0x5401
  678. +#define TCSETS 0x5402
  679. +#define TCSETSW 0x5403
  680. +#define TCSETSF 0x5404
  681. +#define TCGETA 0x5405
  682. +#define TCSETA 0x5406
  683. +#define TCSETAW 0x5407
  684. +#define TCSETAF 0x5408
  685. +#define TCSBRK 0x5409
  686. +#define TCXONC 0x540A
  687. +#define TCFLSH 0x540B
  688. +#define TIOCEXCL 0x540C
  689. +#define TIOCNXCL 0x540D
  690. +#define TIOCSCTTY 0x540E
  691. +#define TIOCGPGRP 0x540F
  692. +#define TIOCSPGRP 0x5410
  693. +#define TIOCOUTQ 0x5411
  694. +#define TIOCSTI 0x5412
  695. +#define TIOCGWINSZ 0x5413
  696. +#define TIOCSWINSZ 0x5414
  697. +#define TIOCMGET 0x5415
  698. +#define TIOCMBIS 0x5416
  699. +#define TIOCMBIC 0x5417
  700. +#define TIOCMSET 0x5418
  701. +#define TIOCGSOFTCAR 0x5419
  702. +#define TIOCSSOFTCAR 0x541A
  703. +#define FIONREAD 0x541B
  704. +#define TIOCINQ FIONREAD
  705. +#define TIOCLINUX 0x541C
  706. +#define TIOCCONS 0x541D
  707. +#define TIOCGSERIAL 0x541E
  708. +#define TIOCSSERIAL 0x541F
  709. +#define TIOCPKT 0x5420
  710. +#define FIONBIO 0x5421
  711. +#define TIOCNOTTY 0x5422
  712. +#define TIOCSETD 0x5423
  713. +#define TIOCGETD 0x5424
  714. +#define TCSBRKP 0x5425 /* Needed for POSIX tcsendbreak() */
  715. +#define TIOCSBRK 0x5427 /* BSD compatibility */
  716. +#define TIOCCBRK 0x5428 /* BSD compatibility */
  717. +#define TIOCGSID 0x5429 /* Return the session ID of FD */
  718. +#define TCGETS2 _IOR('T',0x2A, struct termios2)
  719. +#define TCSETS2 _IOW('T',0x2B, struct termios2)
  720. +#define TCSETSW2 _IOW('T',0x2C, struct termios2)
  721. +#define TCSETSF2 _IOW('T',0x2D, struct termios2)
  722. +#define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */
  723. +#define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */
  724. +
  725. +#define FIONCLEX 0x5450 /* these numbers need to be adjusted. */
  726. +#define FIOCLEX 0x5451
  727. +#define FIOASYNC 0x5452
  728. +#define TIOCSERCONFIG 0x5453
  729. +#define TIOCSERGWILD 0x5454
  730. +#define TIOCSERSWILD 0x5455
  731. +#define TIOCGLCKTRMIOS 0x5456
  732. +#define TIOCSLCKTRMIOS 0x5457
  733. +#define TIOCSERGSTRUCT 0x5458 /* For debugging only */
  734. +#define TIOCSERGETLSR 0x5459 /* Get line status register */
  735. +#define TIOCSERGETMULTI 0x545A /* Get multiport config */
  736. +#define TIOCSERSETMULTI 0x545B /* Set multiport config */
  737. +
  738. +#define TIOCMIWAIT 0x545C /* wait for a change on serial input line(s) */
  739. +#define TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */
  740. +#define FIOQSIZE 0x545E
  741. +
  742. +/* Used for packet mode */
  743. +#define TIOCPKT_DATA 0
  744. +#define TIOCPKT_FLUSHREAD 1
  745. +#define TIOCPKT_FLUSHWRITE 2
  746. +#define TIOCPKT_STOP 4
  747. +#define TIOCPKT_START 8
  748. +#define TIOCPKT_NOSTOP 16
  749. +#define TIOCPKT_DOSTOP 32
  750. +
  751. +#define TIOCSER_TEMT 0x01 /* Transmitter physically empty */
  752. +
  753. +#endif /* _ASM_UBICOM32_IOCTLS_H */
  754. --- /dev/null
  755. +++ b/arch/ubicom32/include/asm/ipcbuf.h
  756. @@ -0,0 +1,55 @@
  757. +/*
  758. + * arch/ubicom32/include/asm/ipcbuf.h
  759. + * Definition of ipc64_perm struct for Ubicom32 architecture.
  760. + *
  761. + * (C) Copyright 2009, Ubicom, Inc.
  762. + *
  763. + * This file is part of the Ubicom32 Linux Kernel Port.
  764. + *
  765. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  766. + * it and/or modify it under the terms of the GNU General Public License
  767. + * as published by the Free Software Foundation, either version 2 of the
  768. + * License, or (at your option) any later version.
  769. + *
  770. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  771. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  772. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  773. + * the GNU General Public License for more details.
  774. + *
  775. + * You should have received a copy of the GNU General Public License
  776. + * along with the Ubicom32 Linux Kernel Port. If not,
  777. + * see <http://www.gnu.org/licenses/>.
  778. + *
  779. + * Ubicom32 implementation derived from (with many thanks):
  780. + * arch/m68knommu
  781. + * arch/blackfin
  782. + * arch/parisc
  783. + */
  784. +#ifndef _ASM_UBICOM32_IPCBUF_H
  785. +#define _ASM_UBICOM32_IPCBUF_H
  786. +
  787. +/*
  788. + * The user_ipc_perm structure for m68k architecture.
  789. + * Note extra padding because this structure is passed back and forth
  790. + * between kernel and user space.
  791. + *
  792. + * Pad space is left for:
  793. + * - 32-bit mode_t and seq
  794. + * - 2 miscellaneous 32-bit values
  795. + */
  796. +struct ipc64_perm
  797. +{
  798. + __kernel_key_t key;
  799. + __kernel_uid32_t uid;
  800. + __kernel_gid32_t gid;
  801. + __kernel_uid32_t cuid;
  802. + __kernel_gid32_t cgid;
  803. + __kernel_mode_t mode;
  804. + unsigned short __pad1;
  805. + unsigned short seq;
  806. + unsigned short __pad2;
  807. + unsigned long __unused1;
  808. + unsigned long __unused2;
  809. +};
  810. +
  811. +#endif /* _ASM_UBICOM32_IPCBUF_H */
  812. --- /dev/null
  813. +++ b/arch/ubicom32/include/asm/irqflags.h
  814. @@ -0,0 +1,94 @@
  815. +/*
  816. + * arch/ubicom32/include/asm/irqflags.h
  817. + * Raw implementation of local IRQ functions.
  818. + *
  819. + * (C) Copyright 2009, Ubicom, Inc.
  820. + *
  821. + * This file is part of the Ubicom32 Linux Kernel Port.
  822. + *
  823. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  824. + * it and/or modify it under the terms of the GNU General Public License
  825. + * as published by the Free Software Foundation, either version 2 of the
  826. + * License, or (at your option) any later version.
  827. + *
  828. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  829. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  830. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  831. + * the GNU General Public License for more details.
  832. + *
  833. + * You should have received a copy of the GNU General Public License
  834. + * along with the Ubicom32 Linux Kernel Port. If not,
  835. + * see <http://www.gnu.org/licenses/>.
  836. + *
  837. + * Ubicom32 implementation derived from (with many thanks):
  838. + * arch/m68knommu
  839. + * arch/blackfin
  840. + * arch/parisc
  841. + */
  842. +#ifndef _ASM_UBICOM32_IRQFLAGS_H
  843. +#define _ASM_UBICOM32_IRQFLAGS_H
  844. +
  845. +#include <linux/thread_info.h>
  846. +#include <asm/ubicom32-common.h>
  847. +#include <asm/smp.h>
  848. +#include <asm/ldsr.h>
  849. +
  850. +#if defined(CONFIG_PREEMPT)
  851. +#error Not supported by Ubicom32 irq handling, yet!
  852. +#endif
  853. +
  854. +/*
  855. + * raw_local_irq_enable()
  856. + * Enable interrupts for this thread.
  857. + */
  858. +static inline void raw_local_irq_enable(void)
  859. +{
  860. + ldsr_local_irq_enable();
  861. +}
  862. +
  863. +/*
  864. + * raw_local_irq_disable()
  865. + * Disable interrupts for this thread.
  866. + */
  867. +static inline void raw_local_irq_disable(void)
  868. +{
  869. + ldsr_local_irq_disable();
  870. +}
  871. +
  872. +/*
  873. + * raw_local_save_flags()
  874. + * Get the current IRQ state.
  875. + */
  876. +#define raw_local_save_flags(flags) \
  877. +do { \
  878. + (flags) = ldsr_local_irq_is_disabled(); \
  879. +} while (0)
  880. +
  881. +/*
  882. + * raw_local_irq_save()
  883. + * Save the current interrupt state and disable interrupts.
  884. + */
  885. +#define raw_local_irq_save(flags) \
  886. +do { \
  887. + (flags) = ldsr_local_irq_save(); \
  888. +} while (0)
  889. +
  890. +/*
  891. + * raw_local_irq_restore()
  892. + * Restore the IRQ state back to flags.
  893. + */
  894. +static inline void raw_local_irq_restore(unsigned long flags)
  895. +{
  896. + ldsr_local_irq_restore(flags);
  897. +}
  898. +
  899. +/*
  900. + * raw_irqs_disabled_flags()
  901. + * Return true if the flags indicate that IRQ(s) are disabled.
  902. + */
  903. +static inline int raw_irqs_disabled_flags(unsigned long flags)
  904. +{
  905. + return (flags);
  906. +}
  907. +
  908. +#endif /* _ASM_UBICOM32_IRQFLAGS_H */
  909. --- /dev/null
  910. +++ b/arch/ubicom32/include/asm/Kbuild
  911. @@ -0,0 +1 @@
  912. +include include/asm-generic/Kbuild.asm
  913. --- /dev/null
  914. +++ b/arch/ubicom32/include/asm/kdebug.h
  915. @@ -0,0 +1,33 @@
  916. +/*
  917. + * arch/ubicom32/include/asm/kdebug.h
  918. + * Generic kdebug.h for Ubicom32 architecture.
  919. + *
  920. + * (C) Copyright 2009, Ubicom, Inc.
  921. + *
  922. + * This file is part of the Ubicom32 Linux Kernel Port.
  923. + *
  924. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  925. + * it and/or modify it under the terms of the GNU General Public License
  926. + * as published by the Free Software Foundation, either version 2 of the
  927. + * License, or (at your option) any later version.
  928. + *
  929. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  930. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  931. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  932. + * the GNU General Public License for more details.
  933. + *
  934. + * You should have received a copy of the GNU General Public License
  935. + * along with the Ubicom32 Linux Kernel Port. If not,
  936. + * see <http://www.gnu.org/licenses/>.
  937. + *
  938. + * Ubicom32 implementation derived from (with many thanks):
  939. + * arch/m68knommu
  940. + * arch/blackfin
  941. + * arch/parisc
  942. + */
  943. +#ifndef _ASM_UBICOM32_KDEBUG_H
  944. +#define _ASM_UBICOM32_KDEBUG_H
  945. +
  946. +#include <asm-generic/kdebug.h>
  947. +
  948. +#endif /* _ASM_UBICOM32_KDEBUG_H */
  949. --- /dev/null
  950. +++ b/arch/ubicom32/include/asm/linkage.h
  951. @@ -0,0 +1,34 @@
  952. +/*
  953. + * arch/ubicom32/include/asm/linkage.h
  954. + * Definition of Ubicom32 architecture specific linkage types.
  955. + *
  956. + * (C) Copyright 2009, Ubicom, Inc.
  957. + *
  958. + * This file is part of the Ubicom32 Linux Kernel Port.
  959. + *
  960. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  961. + * it and/or modify it under the terms of the GNU General Public License
  962. + * as published by the Free Software Foundation, either version 2 of the
  963. + * License, or (at your option) any later version.
  964. + *
  965. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  966. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  967. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  968. + * the GNU General Public License for more details.
  969. + *
  970. + * You should have received a copy of the GNU General Public License
  971. + * along with the Ubicom32 Linux Kernel Port. If not,
  972. + * see <http://www.gnu.org/licenses/>.
  973. + *
  974. + * Ubicom32 implementation derived from (with many thanks):
  975. + * arch/m68knommu
  976. + * arch/blackfin
  977. + * arch/parisc
  978. + */
  979. +#ifndef _ASM_UBICOM32_LINKAGE_H
  980. +#define _ASM_UBICOM32_LINKAGE_H
  981. +
  982. +#define __ocm_text __section(.ocm_text)
  983. +#define __ocm_data __section(.ocm_data)
  984. +
  985. +#endif /* _ASM_UBICOM32_LINKAGE_H */
  986. --- /dev/null
  987. +++ b/arch/ubicom32/include/asm/local.h
  988. @@ -0,0 +1,33 @@
  989. +/*
  990. + * arch/ubicom32/include/asm/local.h
  991. + * Generic local.h for Ubicom32 architecture.
  992. + *
  993. + * (C) Copyright 2009, Ubicom, Inc.
  994. + *
  995. + * This file is part of the Ubicom32 Linux Kernel Port.
  996. + *
  997. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  998. + * it and/or modify it under the terms of the GNU General Public License
  999. + * as published by the Free Software Foundation, either version 2 of the
  1000. + * License, or (at your option) any later version.
  1001. + *
  1002. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  1003. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  1004. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  1005. + * the GNU General Public License for more details.
  1006. + *
  1007. + * You should have received a copy of the GNU General Public License
  1008. + * along with the Ubicom32 Linux Kernel Port. If not,
  1009. + * see <http://www.gnu.org/licenses/>.
  1010. + *
  1011. + * Ubicom32 implementation derived from (with many thanks):
  1012. + * arch/m68knommu
  1013. + * arch/blackfin
  1014. + * arch/parisc
  1015. + */
  1016. +#ifndef _ASM_UBICOM32_LOCAL_H
  1017. +#define _ASM_UBICOM32_LOCAL_H
  1018. +
  1019. +#include <asm-generic/local.h>
  1020. +
  1021. +#endif /* _ASM_UBICOM32_LOCAL_H */
  1022. --- /dev/null
  1023. +++ b/arch/ubicom32/include/asm/mman.h
  1024. @@ -0,0 +1,44 @@
  1025. +/*
  1026. + * arch/ubicom32/include/asm/mman.h
  1027. + * Memory mapping definitions for Ubicom32 architecture.
  1028. + *
  1029. + * (C) Copyright 2009, Ubicom, Inc.
  1030. + *
  1031. + * This file is part of the Ubicom32 Linux Kernel Port.
  1032. + *
  1033. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  1034. + * it and/or modify it under the terms of the GNU General Public License
  1035. + * as published by the Free Software Foundation, either version 2 of the
  1036. + * License, or (at your option) any later version.
  1037. + *
  1038. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  1039. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  1040. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  1041. + * the GNU General Public License for more details.
  1042. + *
  1043. + * You should have received a copy of the GNU General Public License
  1044. + * along with the Ubicom32 Linux Kernel Port. If not,
  1045. + * see <http://www.gnu.org/licenses/>.
  1046. + *
  1047. + * Ubicom32 implementation derived from (with many thanks):
  1048. + * arch/m68knommu
  1049. + * arch/blackfin
  1050. + * arch/parisc
  1051. + */
  1052. +#ifndef _ASM_UBICOM32_MMAN_H
  1053. +#define _ASM_UBICOM32_MMAN_H
  1054. +
  1055. +#include <asm-generic/mman.h>
  1056. +
  1057. +#define MAP_GROWSDOWN 0x0100 /* stack-like segment */
  1058. +#define MAP_DENYWRITE 0x0800 /* ETXTBSY */
  1059. +#define MAP_EXECUTABLE 0x1000 /* mark it as an executable */
  1060. +#define MAP_LOCKED 0x2000 /* pages are locked */
  1061. +#define MAP_NORESERVE 0x4000 /* don't check for reservations */
  1062. +#define MAP_POPULATE 0x8000 /* populate (prefault) pagetables */
  1063. +#define MAP_NONBLOCK 0x10000 /* do not block on IO */
  1064. +
  1065. +#define MCL_CURRENT 1 /* lock all current mappings */
  1066. +#define MCL_FUTURE 2 /* lock all future mappings */
  1067. +
  1068. +#endif /* _ASM_UBICOM32_MMAN_H */
  1069. --- /dev/null
  1070. +++ b/arch/ubicom32/include/asm/msgbuf.h
  1071. @@ -0,0 +1,58 @@
  1072. +/*
  1073. + * arch/ubicom32/include/asm/msgbuf.h
  1074. + * Definition of msqid64_ds struct for Ubicom32 architecture.
  1075. + *
  1076. + * (C) Copyright 2009, Ubicom, Inc.
  1077. + *
  1078. + * This file is part of the Ubicom32 Linux Kernel Port.
  1079. + *
  1080. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  1081. + * it and/or modify it under the terms of the GNU General Public License
  1082. + * as published by the Free Software Foundation, either version 2 of the
  1083. + * License, or (at your option) any later version.
  1084. + *
  1085. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  1086. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  1087. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  1088. + * the GNU General Public License for more details.
  1089. + *
  1090. + * You should have received a copy of the GNU General Public License
  1091. + * along with the Ubicom32 Linux Kernel Port. If not,
  1092. + * see <http://www.gnu.org/licenses/>.
  1093. + *
  1094. + * Ubicom32 implementation derived from (with many thanks):
  1095. + * arch/m68knommu
  1096. + * arch/blackfin
  1097. + * arch/parisc
  1098. + */
  1099. +#ifndef _ASM_UBICOM32_MSGBUF_H
  1100. +#define _ASM_UBICOM32_MSGBUF_H
  1101. +
  1102. +/*
  1103. + * The msqid64_ds structure for ubicom32 architecture.
  1104. + * Note extra padding because this structure is passed back and forth
  1105. + * between kernel and user space.
  1106. + *
  1107. + * Pad space is left for:
  1108. + * - 64-bit time_t to solve y2038 problem
  1109. + * - 2 miscellaneous 32-bit values
  1110. + */
  1111. +
  1112. +struct msqid64_ds {
  1113. + struct ipc64_perm msg_perm;
  1114. + __kernel_time_t msg_stime; /* last msgsnd time */
  1115. + unsigned long __unused1;
  1116. + __kernel_time_t msg_rtime; /* last msgrcv time */
  1117. + unsigned long __unused2;
  1118. + __kernel_time_t msg_ctime; /* last change time */
  1119. + unsigned long __unused3;
  1120. + unsigned long msg_cbytes; /* current number of bytes on queue */
  1121. + unsigned long msg_qnum; /* number of messages in queue */
  1122. + unsigned long msg_qbytes; /* max number of bytes on queue */
  1123. + __kernel_pid_t msg_lspid; /* pid of last msgsnd */
  1124. + __kernel_pid_t msg_lrpid; /* last receive pid */
  1125. + unsigned long __unused4;
  1126. + unsigned long __unused5;
  1127. +};
  1128. +
  1129. +#endif /* _ASM_UBICOM32_MSGBUF_H */
  1130. --- /dev/null
  1131. +++ b/arch/ubicom32/include/asm/namei.h
  1132. @@ -0,0 +1,38 @@
  1133. +/*
  1134. + * arch/ubicom32/include/asm/namei.h
  1135. + * Definition of __emul_prefix() for Ubicom32 architecture.
  1136. + *
  1137. + * (C) Copyright 2009, Ubicom, Inc.
  1138. + *
  1139. + * This file is part of the Ubicom32 Linux Kernel Port.
  1140. + *
  1141. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  1142. + * it and/or modify it under the terms of the GNU General Public License
  1143. + * as published by the Free Software Foundation, either version 2 of the
  1144. + * License, or (at your option) any later version.
  1145. + *
  1146. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  1147. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  1148. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  1149. + * the GNU General Public License for more details.
  1150. + *
  1151. + * You should have received a copy of the GNU General Public License
  1152. + * along with the Ubicom32 Linux Kernel Port. If not,
  1153. + * see <http://www.gnu.org/licenses/>.
  1154. + *
  1155. + * Ubicom32 implementation derived from (with many thanks):
  1156. + * arch/m68knommu
  1157. + * arch/blackfin
  1158. + * arch/parisc
  1159. + */
  1160. +#ifndef _ASM_UBICOM32_NAMEI_H
  1161. +#define _ASM_UBICOM32_NAMEI_H
  1162. +
  1163. +/* This dummy routine maybe changed to something useful
  1164. + * for /usr/gnemul/ emulation stuff.
  1165. + * Look at asm-sparc/namei.h for details.
  1166. + */
  1167. +
  1168. +#define __emul_prefix() NULL
  1169. +
  1170. +#endif /* _ASM_UBICOM32_NAMEI_H */
  1171. --- /dev/null
  1172. +++ b/arch/ubicom32/include/asm/page.h
  1173. @@ -0,0 +1,106 @@
  1174. +/*
  1175. + * arch/ubicom32/include/asm/page.h
  1176. + * Memory page related operations and definitions.
  1177. + *
  1178. + * (C) Copyright 2009, Ubicom, Inc.
  1179. + *
  1180. + * This file is part of the Ubicom32 Linux Kernel Port.
  1181. + *
  1182. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  1183. + * it and/or modify it under the terms of the GNU General Public License
  1184. + * as published by the Free Software Foundation, either version 2 of the
  1185. + * License, or (at your option) any later version.
  1186. + *
  1187. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  1188. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  1189. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  1190. + * the GNU General Public License for more details.
  1191. + *
  1192. + * You should have received a copy of the GNU General Public License
  1193. + * along with the Ubicom32 Linux Kernel Port. If not,
  1194. + * see <http://www.gnu.org/licenses/>.
  1195. + *
  1196. + * Ubicom32 implementation derived from (with many thanks):
  1197. + * arch/m68knommu
  1198. + * arch/blackfin
  1199. + * arch/parisc
  1200. + */
  1201. +#ifndef _ASM_UBICOM32_PAGE_H
  1202. +#define _ASM_UBICOM32_PAGE_H
  1203. +
  1204. +/* PAGE_SHIFT determines the page size */
  1205. +
  1206. +#define PAGE_SHIFT 12
  1207. +#define PAGE_SIZE (1 << PAGE_SHIFT)
  1208. +#define PAGE_MASK (~(PAGE_SIZE-1))
  1209. +
  1210. +#include <asm/setup.h>
  1211. +
  1212. +#ifndef __ASSEMBLY__
  1213. +
  1214. +#define get_user_page(vaddr) __get_free_page(GFP_KERNEL)
  1215. +#define free_user_page(page, addr) free_page(addr)
  1216. +
  1217. +#define clear_page(page) memset((page), 0, PAGE_SIZE)
  1218. +#define copy_page(to,from) memcpy((to), (from), PAGE_SIZE)
  1219. +
  1220. +#define clear_user_page(page, vaddr, pg) clear_page(page)
  1221. +#define copy_user_page(to, from, vaddr, pg) copy_page(to, from)
  1222. +
  1223. +#define __alloc_zeroed_user_highpage(movableflags, vma, vaddr) \
  1224. + alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr)
  1225. +#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE
  1226. +
  1227. +/*
  1228. + * These are used to make use of C type-checking..
  1229. + */
  1230. +typedef struct { unsigned long pte; } pte_t;
  1231. +typedef struct { unsigned long pmd[16]; } pmd_t;
  1232. +typedef struct { unsigned long pgd; } pgd_t;
  1233. +typedef struct { unsigned long pgprot; } pgprot_t;
  1234. +typedef struct page *pgtable_t;
  1235. +
  1236. +#define pte_val(x) ((x).pte)
  1237. +#define pmd_val(x) ((&x)->pmd[0])
  1238. +#define pgd_val(x) ((x).pgd)
  1239. +#define pgprot_val(x) ((x).pgprot)
  1240. +
  1241. +#define __pte(x) ((pte_t) { (x) } )
  1242. +#define __pmd(x) ((pmd_t) { (x) } )
  1243. +#define __pgd(x) ((pgd_t) { (x) } )
  1244. +#define __pgprot(x) ((pgprot_t) { (x) } )
  1245. +
  1246. +extern unsigned long memory_start;
  1247. +extern unsigned long memory_end;
  1248. +
  1249. +#endif /* !__ASSEMBLY__ */
  1250. +
  1251. +#include <asm/page_offset.h>
  1252. +
  1253. +#define PAGE_OFFSET (PAGE_OFFSET_RAW)
  1254. +
  1255. +#ifndef __ASSEMBLY__
  1256. +
  1257. +#define __pa(vaddr) virt_to_phys((void *)(vaddr))
  1258. +#define __va(paddr) phys_to_virt((unsigned long)(paddr))
  1259. +
  1260. +#define virt_to_pfn(kaddr) (__pa(kaddr) >> PAGE_SHIFT)
  1261. +#define pfn_to_virt(pfn) __va((pfn) << PAGE_SHIFT)
  1262. +
  1263. +#define virt_to_page(addr) (mem_map + (((unsigned long)(addr)-PAGE_OFFSET) >> PAGE_SHIFT))
  1264. +#define page_to_virt(page) ((((page) - mem_map) << PAGE_SHIFT) + PAGE_OFFSET)
  1265. +
  1266. +#define pfn_to_page(pfn) virt_to_page(pfn_to_virt(pfn))
  1267. +#define page_to_pfn(page) virt_to_pfn(page_to_virt(page))
  1268. +#define pfn_valid(pfn) ((pfn) < max_mapnr)
  1269. +
  1270. +#define virt_addr_valid(kaddr) (((void *)(kaddr) >= (void *)PAGE_OFFSET) && \
  1271. + ((void *)(kaddr) < (void *)memory_end))
  1272. +
  1273. +#endif /* __ASSEMBLY__ */
  1274. +
  1275. +#ifdef __KERNEL__
  1276. +#include <asm-generic/page.h>
  1277. +#endif
  1278. +
  1279. +#endif /* _ASM_UBICOM32_PAGE_H */
  1280. --- /dev/null
  1281. +++ b/arch/ubicom32/include/asm/page_offset.h
  1282. @@ -0,0 +1,35 @@
  1283. +/*
  1284. + * arch/ubicom32/include/asm/page_offset.h
  1285. + * Definition of PAGE_OFFSET_RAW for Ubicom32 architecture.
  1286. + *
  1287. + * (C) Copyright 2009, Ubicom, Inc.
  1288. + *
  1289. + * This file is part of the Ubicom32 Linux Kernel Port.
  1290. + *
  1291. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  1292. + * it and/or modify it under the terms of the GNU General Public License
  1293. + * as published by the Free Software Foundation, either version 2 of the
  1294. + * License, or (at your option) any later version.
  1295. + *
  1296. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  1297. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  1298. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  1299. + * the GNU General Public License for more details.
  1300. + *
  1301. + * You should have received a copy of the GNU General Public License
  1302. + * along with the Ubicom32 Linux Kernel Port. If not,
  1303. + * see <http://www.gnu.org/licenses/>.
  1304. + *
  1305. + * Ubicom32 implementation derived from (with many thanks):
  1306. + * arch/m68knommu
  1307. + * arch/blackfin
  1308. + * arch/parisc
  1309. + */
  1310. +
  1311. +#ifndef _ASM_UBICOM32_PAGE_OFFSET_H
  1312. +#define _ASM_UBICOM32_PAGE_OFFSET_H
  1313. +
  1314. +/* This handles the memory map.. */
  1315. +#define PAGE_OFFSET_RAW 0x3ffc0000
  1316. +
  1317. +#endif /* _ASM_UBICOM32_PAGE_OFFSET_H */
  1318. --- /dev/null
  1319. +++ b/arch/ubicom32/include/asm/param.h
  1320. @@ -0,0 +1,49 @@
  1321. +/*
  1322. + * arch/ubicom32/include/asm/param.h
  1323. + * Definition of miscellaneous constants, including HZ.
  1324. + *
  1325. + * (C) Copyright 2009, Ubicom, Inc.
  1326. + *
  1327. + * This file is part of the Ubicom32 Linux Kernel Port.
  1328. + *
  1329. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  1330. + * it and/or modify it under the terms of the GNU General Public License
  1331. + * as published by the Free Software Foundation, either version 2 of the
  1332. + * License, or (at your option) any later version.
  1333. + *
  1334. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  1335. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  1336. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  1337. + * the GNU General Public License for more details.
  1338. + *
  1339. + * You should have received a copy of the GNU General Public License
  1340. + * along with the Ubicom32 Linux Kernel Port. If not,
  1341. + * see <http://www.gnu.org/licenses/>.
  1342. + *
  1343. + * Ubicom32 implementation derived from (with many thanks):
  1344. + * arch/m68knommu
  1345. + * arch/blackfin
  1346. + * arch/parisc
  1347. + */
  1348. +#ifndef _ASM_UBICOM32_PARAM_H
  1349. +#define _ASM_UBICOM32_PARAM_H
  1350. +
  1351. +#ifdef __KERNEL__
  1352. +#define HZ CONFIG_HZ
  1353. +#define USER_HZ HZ
  1354. +#define CLOCKS_PER_SEC (USER_HZ)
  1355. +#endif
  1356. +
  1357. +#ifndef HZ
  1358. +#define HZ 100
  1359. +#endif
  1360. +
  1361. +#define EXEC_PAGESIZE 4096
  1362. +
  1363. +#ifndef NOGROUP
  1364. +#define NOGROUP (-1)
  1365. +#endif
  1366. +
  1367. +#define MAXHOSTNAMELEN 64 /* max length of hostname */
  1368. +
  1369. +#endif /* _ASM_UBICOM32_PARAM_H */
  1370. --- /dev/null
  1371. +++ b/arch/ubicom32/include/asm/poll.h
  1372. @@ -0,0 +1,36 @@
  1373. +/*
  1374. + * arch/ubicom32/include/asm/poll.h
  1375. + * Ubicom32 specific poll() related flags definitions.
  1376. + *
  1377. + * (C) Copyright 2009, Ubicom, Inc.
  1378. + *
  1379. + * This file is part of the Ubicom32 Linux Kernel Port.
  1380. + *
  1381. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  1382. + * it and/or modify it under the terms of the GNU General Public License
  1383. + * as published by the Free Software Foundation, either version 2 of the
  1384. + * License, or (at your option) any later version.
  1385. + *
  1386. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  1387. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  1388. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  1389. + * the GNU General Public License for more details.
  1390. + *
  1391. + * You should have received a copy of the GNU General Public License
  1392. + * along with the Ubicom32 Linux Kernel Port. If not,
  1393. + * see <http://www.gnu.org/licenses/>.
  1394. + *
  1395. + * Ubicom32 implementation derived from (with many thanks):
  1396. + * arch/m68knommu
  1397. + * arch/blackfin
  1398. + * arch/parisc
  1399. + */
  1400. +#ifndef _ASM_UBICOM32_POLL_H
  1401. +#define _ASM_UBICOM32_POLL_H
  1402. +
  1403. +#define POLLWRNORM POLLOUT
  1404. +#define POLLWRBAND 0x0100
  1405. +
  1406. +#include <asm-generic/poll.h>
  1407. +
  1408. +#endif /* _ASM_UBICOM32_POLL_H */
  1409. --- /dev/null
  1410. +++ b/arch/ubicom32/include/asm/posix_types.h
  1411. @@ -0,0 +1,93 @@
  1412. +/*
  1413. + * arch/ubicom32/include/asm/posix_types.h
  1414. + * Ubicom32 architecture posix types.
  1415. + *
  1416. + * (C) Copyright 2009, Ubicom, Inc.
  1417. + * Copyright (C) 2004 Microtronix Datacom Ltd
  1418. + *
  1419. + * This file is part of the Ubicom32 Linux Kernel Port.
  1420. + *
  1421. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  1422. + * it and/or modify it under the terms of the GNU General Public License
  1423. + * as published by the Free Software Foundation, either version 2 of the
  1424. + * License, or (at your option) any later version.
  1425. + *
  1426. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  1427. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  1428. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  1429. + * the GNU General Public License for more details.
  1430. + *
  1431. + * You should have received a copy of the GNU General Public License
  1432. + * along with the Ubicom32 Linux Kernel Port. If not,
  1433. + * see <http://www.gnu.org/licenses/>.
  1434. + *
  1435. + * Ubicom32 implementation derived from (with many thanks):
  1436. + * arch/m68knommu
  1437. + * arch/blackfin
  1438. + * arch/parisc
  1439. + */
  1440. +#ifndef __ARCH_UBICOM32_POSIX_TYPES_H
  1441. +#define __ARCH_UBICOM32_POSIX_TYPES_H
  1442. +
  1443. +/*
  1444. + * This file is generally used by user-level software, so you need to
  1445. + * be a little careful about namespace pollution etc. Also, we cannot
  1446. + * assume GCC is being used.
  1447. + */
  1448. +
  1449. +typedef unsigned long __kernel_ino_t;
  1450. +typedef unsigned short __kernel_mode_t;
  1451. +typedef unsigned short __kernel_nlink_t;
  1452. +typedef long __kernel_off_t;
  1453. +typedef int __kernel_pid_t;
  1454. +typedef unsigned short __kernel_ipc_pid_t;
  1455. +typedef unsigned short __kernel_uid_t;
  1456. +typedef unsigned short __kernel_gid_t;
  1457. +typedef unsigned int __kernel_size_t;
  1458. +typedef int __kernel_ssize_t;
  1459. +typedef int __kernel_ptrdiff_t;
  1460. +typedef long __kernel_time_t;
  1461. +typedef long __kernel_suseconds_t;
  1462. +typedef long __kernel_clock_t;
  1463. +typedef int __kernel_timer_t;
  1464. +typedef int __kernel_clockid_t;
  1465. +typedef int __kernel_daddr_t;
  1466. +typedef char * __kernel_caddr_t;
  1467. +typedef unsigned short __kernel_uid16_t;
  1468. +typedef unsigned short __kernel_gid16_t;
  1469. +typedef unsigned int __kernel_uid32_t;
  1470. +typedef unsigned int __kernel_gid32_t;
  1471. +
  1472. +typedef unsigned short __kernel_old_uid_t;
  1473. +typedef unsigned short __kernel_old_gid_t;
  1474. +typedef unsigned short __kernel_old_dev_t;
  1475. +
  1476. +#ifdef __GNUC__
  1477. +typedef long long __kernel_loff_t;
  1478. +#endif
  1479. +
  1480. +typedef struct {
  1481. +#if defined(__KERNEL__) || defined(__USE_ALL)
  1482. + int val[2];
  1483. +#else /* !defined(__KERNEL__) && !defined(__USE_ALL) */
  1484. + int __val[2];
  1485. +#endif /* !defined(__KERNEL__) && !defined(__USE_ALL) */
  1486. +} __kernel_fsid_t;
  1487. +
  1488. +#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
  1489. +
  1490. +#undef __FD_SET
  1491. +#define __FD_SET(d, set) ((set)->fds_bits[__FDELT(d)] |= __FDMASK(d))
  1492. +
  1493. +#undef __FD_CLR
  1494. +#define __FD_CLR(d, set) ((set)->fds_bits[__FDELT(d)] &= ~__FDMASK(d))
  1495. +
  1496. +#undef __FD_ISSET
  1497. +#define __FD_ISSET(d, set) ((set)->fds_bits[__FDELT(d)] & __FDMASK(d))
  1498. +
  1499. +#undef __FD_ZERO
  1500. +#define __FD_ZERO(fdsetp) (memset (fdsetp, 0, sizeof(*(fd_set *)fdsetp)))
  1501. +
  1502. +#endif /* defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2) */
  1503. +
  1504. +#endif
  1505. --- /dev/null
  1506. +++ b/arch/ubicom32/include/asm/ptrace.h
  1507. @@ -0,0 +1,177 @@
  1508. +/*
  1509. + * arch/ubicom32/include/asm/ptrace.h
  1510. + * Ubicom32 architecture ptrace support.
  1511. + *
  1512. + * (C) Copyright 2009, Ubicom, Inc.
  1513. + *
  1514. + * This file is part of the Ubicom32 Linux Kernel Port.
  1515. + *
  1516. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  1517. + * it and/or modify it under the terms of the GNU General Public License
  1518. + * as published by the Free Software Foundation, either version 2 of the
  1519. + * License, or (at your option) any later version.
  1520. + *
  1521. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  1522. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  1523. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  1524. + * the GNU General Public License for more details.
  1525. + *
  1526. + * You should have received a copy of the GNU General Public License
  1527. + * along with the Ubicom32 Linux Kernel Port. If not,
  1528. + * see <http://www.gnu.org/licenses/>.
  1529. + *
  1530. + * Ubicom32 implementation derived from (with many thanks):
  1531. + * arch/m68knommu
  1532. + * arch/blackfin
  1533. + * arch/parisc
  1534. + */
  1535. +#ifndef _ASM_UBICOM32_PTRACE_H
  1536. +#define _ASM_UBICOM32_PTRACE_H
  1537. +
  1538. +#ifndef __ASSEMBLY__
  1539. +
  1540. +/*
  1541. + * We use hard coded constants because this is shared with user
  1542. + * space and the values are NOT allowed to change. Only fields
  1543. + * that are intended to be exposed get values.
  1544. + */
  1545. +#define PT_D0 0
  1546. +#define PT_D1 4
  1547. +#define PT_D2 8
  1548. +#define PT_D3 12
  1549. +#define PT_D4 16
  1550. +#define PT_D5 20
  1551. +#define PT_D6 24
  1552. +#define PT_D7 28
  1553. +#define PT_D8 32
  1554. +#define PT_D9 36
  1555. +#define PT_D10 40
  1556. +#define PT_D11 44
  1557. +#define PT_D12 48
  1558. +#define PT_D13 52
  1559. +#define PT_D14 56
  1560. +#define PT_D15 60
  1561. +#define PT_A0 64
  1562. +#define PT_A1 68
  1563. +#define PT_A2 72
  1564. +#define PT_A3 76
  1565. +#define PT_A4 80
  1566. +#define PT_A5 84
  1567. +#define PT_A6 88
  1568. +#define PT_A7 92
  1569. +#define PT_SP 92
  1570. +#define PT_ACC0HI 96
  1571. +#define PT_ACC0LO 100
  1572. +#define PT_MAC_RC16 104
  1573. +#define PT_ACC1HI 108
  1574. +#define PT_ACC1LO 112
  1575. +#define PT_SOURCE3 116
  1576. +#define PT_INST_CNT 120
  1577. +#define PT_CSR 124
  1578. +#define PT_DUMMY_UNUSED 128
  1579. +#define PT_INT_MASK0 132
  1580. +#define PT_INT_MASK1 136
  1581. +#define PT_TRAP_CAUSE 140
  1582. +#define PT_PC 144
  1583. +#define PT_ORIGINAL_D0 148
  1584. +#define PT_FRAME_TYPE 152
  1585. +
  1586. +/*
  1587. + * The following 'registers' are not registers at all but are used
  1588. + * locate the relocated sections.
  1589. + */
  1590. +#define PT_TEXT_ADDR 200
  1591. +#define PT_TEXT_END_ADDR 204
  1592. +#define PT_DATA_ADDR 208
  1593. +#define PT_EXEC_FDPIC_LOADMAP 212
  1594. +#define PT_INTERP_FDPIC_LOADMAP 216
  1595. +
  1596. +/*
  1597. + * This struct defines the way the registers are stored on the
  1598. + * stack during a system call.
  1599. + */
  1600. +enum thread_type {
  1601. + NORMAL_THREAD,
  1602. + KERNEL_THREAD,
  1603. +};
  1604. +
  1605. +#define UBICOM32_FRAME_TYPE_SYSCALL -1 /* System call frame */
  1606. +#define UBICOM32_FRAME_TYPE_INVALID 0 /* Invalid frame, no longer in use */
  1607. +#define UBICOM32_FRAME_TYPE_INTERRUPT 1 /* Interrupt frame */
  1608. +#define UBICOM32_FRAME_TYPE_TRAP 2 /* Trap frame */
  1609. +#define UBICOM32_FRAME_TYPE_SIGTRAMP 3 /* Signal trampoline frame. */
  1610. +#define UBICOM32_FRAME_TYPE_NEW_THREAD 4 /* New Thread. */
  1611. +
  1612. +struct pt_regs {
  1613. + /*
  1614. + * Data Registers
  1615. + */
  1616. + unsigned long dn[16];
  1617. +
  1618. + /*
  1619. + * Address Registers
  1620. + */
  1621. + unsigned long an[8];
  1622. +
  1623. + /*
  1624. + * Per thread misc registers.
  1625. + */
  1626. + unsigned long acc0[2];
  1627. + unsigned long mac_rc16;
  1628. + unsigned long acc1[2];
  1629. + unsigned long source3;
  1630. + unsigned long inst_cnt;
  1631. + unsigned long csr;
  1632. + unsigned long dummy_unused;
  1633. + unsigned long int_mask0;
  1634. + unsigned long int_mask1;
  1635. + unsigned long trap_cause;
  1636. + unsigned long pc;
  1637. + unsigned long original_dn_0;
  1638. +
  1639. + /*
  1640. + * Frame type. Syscall frames are -1. For other types look above.
  1641. + */
  1642. + unsigned long frame_type;
  1643. +
  1644. + /*
  1645. + * These fields are not exposed to ptrace.
  1646. + */
  1647. + unsigned long previous_pc;
  1648. + long nesting_level; /* When the kernel in in user space this
  1649. + * will be -1. */
  1650. + unsigned long thread_type; /* This indicates if this is a kernel
  1651. + * thread. */
  1652. +};
  1653. +
  1654. +/*
  1655. + * This is the extended stack used by signal handlers and the context
  1656. + * switcher: it's pushed after the normal "struct pt_regs".
  1657. + */
  1658. +struct switch_stack {
  1659. + unsigned long dummy;
  1660. +};
  1661. +
  1662. +#ifdef __KERNEL__
  1663. +
  1664. +/* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
  1665. +#define PTRACE_GETREGS 12
  1666. +#define PTRACE_SETREGS 13
  1667. +
  1668. +#ifndef PS_S
  1669. +#define PS_S (0x2000)
  1670. +#define PS_M (0x1000)
  1671. +#endif
  1672. +
  1673. +extern int __user_mode(unsigned long sp);
  1674. +
  1675. +#define user_mode(regs) (__user_mode((regs->an[7])))
  1676. +#define user_stack(regs) ((regs)->an[7])
  1677. +#define instruction_pointer(regs) ((regs)->pc)
  1678. +#define profile_pc(regs) instruction_pointer(regs)
  1679. +extern void show_regs(struct pt_regs *);
  1680. +#endif /* __KERNEL__ */
  1681. +
  1682. +#endif /* __ASSEMBLY__ */
  1683. +
  1684. +#endif /* _ASM_UBICOM32_PTRACE_H */
  1685. --- /dev/null
  1686. +++ b/arch/ubicom32/include/asm/resource.h
  1687. @@ -0,0 +1,33 @@
  1688. +/*
  1689. + * arch/ubicom32/include/asm/resource.h
  1690. + * Generic definitions for Ubicom32 architecture.
  1691. + *
  1692. + * (C) Copyright 2009, Ubicom, Inc.
  1693. + *
  1694. + * This file is part of the Ubicom32 Linux Kernel Port.
  1695. + *
  1696. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  1697. + * it and/or modify it under the terms of the GNU General Public License
  1698. + * as published by the Free Software Foundation, either version 2 of the
  1699. + * License, or (at your option) any later version.
  1700. + *
  1701. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  1702. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  1703. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  1704. + * the GNU General Public License for more details.
  1705. + *
  1706. + * You should have received a copy of the GNU General Public License
  1707. + * along with the Ubicom32 Linux Kernel Port. If not,
  1708. + * see <http://www.gnu.org/licenses/>.
  1709. + *
  1710. + * Ubicom32 implementation derived from (with many thanks):
  1711. + * arch/m68knommu
  1712. + * arch/blackfin
  1713. + * arch/parisc
  1714. + */
  1715. +#ifndef _ASM_UBICOM32_RESOURCE_H
  1716. +#define _ASM_UBICOM32_RESOURCE_H
  1717. +
  1718. +#include <asm-generic/resource.h>
  1719. +
  1720. +#endif /* _ASM_UBICOM32_RESOURCE_H */
  1721. --- /dev/null
  1722. +++ b/arch/ubicom32/include/asm/sections.h
  1723. @@ -0,0 +1,33 @@
  1724. +/*
  1725. + * arch/ubicom32/include/asm/sections.h
  1726. + * Generic sections.h definitions for Ubicom32 architecture.
  1727. + *
  1728. + * (C) Copyright 2009, Ubicom, Inc.
  1729. + *
  1730. + * This file is part of the Ubicom32 Linux Kernel Port.
  1731. + *
  1732. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  1733. + * it and/or modify it under the terms of the GNU General Public License
  1734. + * as published by the Free Software Foundation, either version 2 of the
  1735. + * License, or (at your option) any later version.
  1736. + *
  1737. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  1738. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  1739. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  1740. + * the GNU General Public License for more details.
  1741. + *
  1742. + * You should have received a copy of the GNU General Public License
  1743. + * along with the Ubicom32 Linux Kernel Port. If not,
  1744. + * see <http://www.gnu.org/licenses/>.
  1745. + *
  1746. + * Ubicom32 implementation derived from (with many thanks):
  1747. + * arch/m68knommu
  1748. + * arch/blackfin
  1749. + * arch/parisc
  1750. + */
  1751. +#ifndef _ASM_UBICOM32_SECTIONS_H
  1752. +#define _ASM_UBICOM32_SECTIONS_H
  1753. +
  1754. +#include <asm-generic/sections.h>
  1755. +
  1756. +#endif /* _ASM_UBICOM32_SECTIONS_H */
  1757. --- /dev/null
  1758. +++ b/arch/ubicom32/include/asm/segment.h
  1759. @@ -0,0 +1,78 @@
  1760. +/*
  1761. + * arch/ubicom32/include/asm/segment.h
  1762. + * Memory segment definitions for Ubicom32 architecture.
  1763. + *
  1764. + * (C) Copyright 2009, Ubicom, Inc.
  1765. + *
  1766. + * This file is part of the Ubicom32 Linux Kernel Port.
  1767. + *
  1768. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  1769. + * it and/or modify it under the terms of the GNU General Public License
  1770. + * as published by the Free Software Foundation, either version 2 of the
  1771. + * License, or (at your option) any later version.
  1772. + *
  1773. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  1774. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  1775. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  1776. + * the GNU General Public License for more details.
  1777. + *
  1778. + * You should have received a copy of the GNU General Public License
  1779. + * along with the Ubicom32 Linux Kernel Port. If not,
  1780. + * see <http://www.gnu.org/licenses/>.
  1781. + *
  1782. + * Ubicom32 implementation derived from (with many thanks):
  1783. + * arch/m68knommu
  1784. + * arch/blackfin
  1785. + * arch/parisc
  1786. + */
  1787. +#ifndef _ASM_UBICOM32_SEGMENT_H
  1788. +#define _ASM_UBICOM32_SEGMENT_H
  1789. +
  1790. +/* define constants */
  1791. +/* Address spaces (FC0-FC2) */
  1792. +#define USER_DATA (1)
  1793. +#ifndef __USER_DS
  1794. +#define __USER_DS (USER_DATA)
  1795. +#endif
  1796. +#define USER_PROGRAM (2)
  1797. +#define SUPER_DATA (5)
  1798. +#ifndef __KERNEL_DS
  1799. +#define __KERNEL_DS (SUPER_DATA)
  1800. +#endif
  1801. +#define SUPER_PROGRAM (6)
  1802. +#define CPU_SPACE (7)
  1803. +
  1804. +#ifndef __ASSEMBLY__
  1805. +
  1806. +typedef struct {
  1807. + unsigned long seg;
  1808. +} mm_segment_t;
  1809. +
  1810. +#define MAKE_MM_SEG(s) ((mm_segment_t) { (s) })
  1811. +#define USER_DS MAKE_MM_SEG(__USER_DS)
  1812. +#define KERNEL_DS MAKE_MM_SEG(__KERNEL_DS)
  1813. +
  1814. +/*
  1815. + * Get/set the SFC/DFC registers for MOVES instructions
  1816. + */
  1817. +
  1818. +static inline mm_segment_t get_fs(void)
  1819. +{
  1820. + return USER_DS;
  1821. +}
  1822. +
  1823. +static inline mm_segment_t get_ds(void)
  1824. +{
  1825. + /* return the supervisor data space code */
  1826. + return KERNEL_DS;
  1827. +}
  1828. +
  1829. +static inline void set_fs(mm_segment_t val)
  1830. +{
  1831. +}
  1832. +
  1833. +#define segment_eq(a,b) ((a).seg == (b).seg)
  1834. +
  1835. +#endif /* __ASSEMBLY__ */
  1836. +
  1837. +#endif /* _ASM_UBICOM32_SEGMENT_H */
  1838. --- /dev/null
  1839. +++ b/arch/ubicom32/include/asm/sembuf.h
  1840. @@ -0,0 +1,52 @@
  1841. +/*
  1842. + * arch/ubicom32/include/asm/sembuf.h
  1843. + * The semid64_ds structure for Ubicom32 architecture.
  1844. + *
  1845. + * (C) Copyright 2009, Ubicom, Inc.
  1846. + *
  1847. + * This file is part of the Ubicom32 Linux Kernel Port.
  1848. + *
  1849. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  1850. + * it and/or modify it under the terms of the GNU General Public License
  1851. + * as published by the Free Software Foundation, either version 2 of the
  1852. + * License, or (at your option) any later version.
  1853. + *
  1854. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  1855. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  1856. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  1857. + * the GNU General Public License for more details.
  1858. + *
  1859. + * You should have received a copy of the GNU General Public License
  1860. + * along with the Ubicom32 Linux Kernel Port. If not,
  1861. + * see <http://www.gnu.org/licenses/>.
  1862. + *
  1863. + * Ubicom32 implementation derived from (with many thanks):
  1864. + * arch/m68knommu
  1865. + * arch/blackfin
  1866. + * arch/parisc
  1867. + */
  1868. +#ifndef _ASM_UBICOM32_SEMBUF_H
  1869. +#define _ASM_UBICOM32_SEMBUF_H
  1870. +
  1871. +/*
  1872. + * The semid64_ds structure for ubicom32 architecture.
  1873. + * Note extra padding because this structure is passed back and forth
  1874. + * between kernel and user space.
  1875. + *
  1876. + * Pad space is left for:
  1877. + * - 64-bit time_t to solve y2038 problem
  1878. + * - 2 miscellaneous 32-bit values
  1879. + */
  1880. +
  1881. +struct semid64_ds {
  1882. + struct ipc64_perm sem_perm; /* permissions .. see ipc.h */
  1883. + __kernel_time_t sem_otime; /* last semop time */
  1884. + unsigned long __unused1;
  1885. + __kernel_time_t sem_ctime; /* last change time */
  1886. + unsigned long __unused2;
  1887. + unsigned long sem_nsems; /* no. of semaphores in array */
  1888. + unsigned long __unused3;
  1889. + unsigned long __unused4;
  1890. +};
  1891. +
  1892. +#endif /* _ASM_UBICOM32_SEMBUF_H */
  1893. --- /dev/null
  1894. +++ b/arch/ubicom32/include/asm/setup.h
  1895. @@ -0,0 +1,35 @@
  1896. +/*
  1897. + * arch/ubicom32/include/asm/setup.h
  1898. + * Kernel command line length definition.
  1899. + *
  1900. + * (C) Copyright 2009, Ubicom, Inc.
  1901. + * Copyright (C) 2004, Microtronix Datacom Ltd., All rights reserved.
  1902. + *
  1903. + * This file is part of the Ubicom32 Linux Kernel Port.
  1904. + *
  1905. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  1906. + * it and/or modify it under the terms of the GNU General Public License
  1907. + * as published by the Free Software Foundation, either version 2 of the
  1908. + * License, or (at your option) any later version.
  1909. + *
  1910. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  1911. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  1912. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  1913. + * the GNU General Public License for more details.
  1914. + *
  1915. + * You should have received a copy of the GNU General Public License
  1916. + * along with the Ubicom32 Linux Kernel Port. If not,
  1917. + * see <http://www.gnu.org/licenses/>.
  1918. + *
  1919. + * Ubicom32 implementation derived from (with many thanks):
  1920. + * arch/m68knommu
  1921. + * arch/blackfin
  1922. + * arch/parisc
  1923. + */
  1924. +
  1925. +#ifndef _ASM_UBICOM32_SETUP_H
  1926. +#define _ASM_UBICOM32_SETUP_H
  1927. +
  1928. +#define COMMAND_LINE_SIZE 512
  1929. +
  1930. +#endif /* _ASM_UBICOM32_SETUP_H */
  1931. --- /dev/null
  1932. +++ b/arch/ubicom32/include/asm/shmbuf.h
  1933. @@ -0,0 +1,69 @@
  1934. +/*
  1935. + * arch/ubicom32/include/asm/shmbuf.h
  1936. + * The shmid64_ds structure for the Ubicom32 architecture.
  1937. + *
  1938. + * (C) Copyright 2009, Ubicom, Inc.
  1939. + *
  1940. + * This file is part of the Ubicom32 Linux Kernel Port.
  1941. + *
  1942. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  1943. + * it and/or modify it under the terms of the GNU General Public License
  1944. + * as published by the Free Software Foundation, either version 2 of the
  1945. + * License, or (at your option) any later version.
  1946. + *
  1947. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  1948. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  1949. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  1950. + * the GNU General Public License for more details.
  1951. + *
  1952. + * You should have received a copy of the GNU General Public License
  1953. + * along with the Ubicom32 Linux Kernel Port. If not,
  1954. + * see <http://www.gnu.org/licenses/>.
  1955. + *
  1956. + * Ubicom32 implementation derived from (with many thanks):
  1957. + * arch/m68knommu
  1958. + * arch/blackfin
  1959. + * arch/parisc
  1960. + */
  1961. +#ifndef _ASM_UBICOM32_SHMBUF_H
  1962. +#define _ASM_UBICOM32_SHMBUF_H
  1963. +
  1964. +/*
  1965. + * The shmid64_ds structure for m68k architecture.
  1966. + * Note extra padding because this structure is passed back and forth
  1967. + * between kernel and user space.
  1968. + *
  1969. + * Pad space is left for:
  1970. + * - 64-bit time_t to solve y2038 problem
  1971. + * - 2 miscellaneous 32-bit values
  1972. + */
  1973. +
  1974. +struct shmid64_ds {
  1975. + struct ipc64_perm shm_perm; /* operation perms */
  1976. + size_t shm_segsz; /* size of segment (bytes) */
  1977. + __kernel_time_t shm_atime; /* last attach time */
  1978. + unsigned long __unused1;
  1979. + __kernel_time_t shm_dtime; /* last detach time */
  1980. + unsigned long __unused2;
  1981. + __kernel_time_t shm_ctime; /* last change time */
  1982. + unsigned long __unused3;
  1983. + __kernel_pid_t shm_cpid; /* pid of creator */
  1984. + __kernel_pid_t shm_lpid; /* pid of last operator */
  1985. + unsigned long shm_nattch; /* no. of current attaches */
  1986. + unsigned long __unused4;
  1987. + unsigned long __unused5;
  1988. +};
  1989. +
  1990. +struct shminfo64 {
  1991. + unsigned long shmmax;
  1992. + unsigned long shmmin;
  1993. + unsigned long shmmni;
  1994. + unsigned long shmseg;
  1995. + unsigned long shmall;
  1996. + unsigned long __unused1;
  1997. + unsigned long __unused2;
  1998. + unsigned long __unused3;
  1999. + unsigned long __unused4;
  2000. +};
  2001. +
  2002. +#endif /* _ASM_UBICOM32_SHMBUF_H */
  2003. --- /dev/null
  2004. +++ b/arch/ubicom32/include/asm/shmparam.h
  2005. @@ -0,0 +1,35 @@
  2006. +/*
  2007. + * arch/ubicom32/include/asm/shmparam.h
  2008. + * Shared memory definitions for Ubicom32 architecture.
  2009. + *
  2010. + * (C) Copyright 2009, Ubicom, Inc.
  2011. + * Copyright (C) 2004 Microtronix Datacom Ltd
  2012. + *
  2013. + * This file is part of the Ubicom32 Linux Kernel Port.
  2014. + *
  2015. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  2016. + * it and/or modify it under the terms of the GNU General Public License
  2017. + * as published by the Free Software Foundation, either version 2 of the
  2018. + * License, or (at your option) any later version.
  2019. + *
  2020. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  2021. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  2022. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  2023. + * the GNU General Public License for more details.
  2024. + *
  2025. + * You should have received a copy of the GNU General Public License
  2026. + * along with the Ubicom32 Linux Kernel Port. If not,
  2027. + * see <http://www.gnu.org/licenses/>.
  2028. + *
  2029. + * Ubicom32 implementation derived from (with many thanks):
  2030. + * arch/m68knommu
  2031. + * arch/blackfin
  2032. + * arch/parisc
  2033. + * Alpha, ix86, M68K, Sparc, ...et al
  2034. + */
  2035. +#ifndef _ASM_UBICOM32_SHMPARAM_H
  2036. +#define _ASM_UBICOM32_SHMPARAM_H
  2037. +
  2038. +#define SHMLBA PAGE_SIZE /* attach addr a multiple of this */
  2039. +
  2040. +#endif /* _ASM_UBICOM32_SHMPARAM_H */
  2041. --- /dev/null
  2042. +++ b/arch/ubicom32/include/asm/sigcontext.h
  2043. @@ -0,0 +1,37 @@
  2044. +/*
  2045. + * arch/ubicom32/include/asm/sigcontext.h
  2046. + * Definition of sigcontext struct for Ubicom32 architecture.
  2047. + *
  2048. + * (C) Copyright 2009, Ubicom, Inc.
  2049. + *
  2050. + * This file is part of the Ubicom32 Linux Kernel Port.
  2051. + *
  2052. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  2053. + * it and/or modify it under the terms of the GNU General Public License
  2054. + * as published by the Free Software Foundation, either version 2 of the
  2055. + * License, or (at your option) any later version.
  2056. + *
  2057. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  2058. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  2059. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  2060. + * the GNU General Public License for more details.
  2061. + *
  2062. + * You should have received a copy of the GNU General Public License
  2063. + * along with the Ubicom32 Linux Kernel Port. If not,
  2064. + * see <http://www.gnu.org/licenses/>.
  2065. + *
  2066. + * Ubicom32 implementation derived from (with many thanks):
  2067. + * arch/m68knommu
  2068. + * arch/blackfin
  2069. + * arch/parisc
  2070. + */
  2071. +#ifndef _ASM_UBICOM32_SIGCONTEXT_H
  2072. +#define _ASM_UBICOM32_SIGCONTEXT_H
  2073. +
  2074. +#include <asm/ptrace.h>
  2075. +
  2076. +struct sigcontext {
  2077. + struct pt_regs sc_regs;
  2078. +};
  2079. +
  2080. +#endif /* _ASM_UBICOM32_SIGCONTEXT_H */
  2081. --- /dev/null
  2082. +++ b/arch/ubicom32/include/asm/siginfo.h
  2083. @@ -0,0 +1,33 @@
  2084. +/*
  2085. + * arch/ubicom32/include/asm/siginfo.h
  2086. + * Generic siginfo.h definitions for Ubicom32 architecture.
  2087. + *
  2088. + * (C) Copyright 2009, Ubicom, Inc.
  2089. + *
  2090. + * This file is part of the Ubicom32 Linux Kernel Port.
  2091. + *
  2092. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  2093. + * it and/or modify it under the terms of the GNU General Public License
  2094. + * as published by the Free Software Foundation, either version 2 of the
  2095. + * License, or (at your option) any later version.
  2096. + *
  2097. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  2098. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  2099. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  2100. + * the GNU General Public License for more details.
  2101. + *
  2102. + * You should have received a copy of the GNU General Public License
  2103. + * along with the Ubicom32 Linux Kernel Port. If not,
  2104. + * see <http://www.gnu.org/licenses/>.
  2105. + *
  2106. + * Ubicom32 implementation derived from (with many thanks):
  2107. + * arch/m68knommu
  2108. + * arch/blackfin
  2109. + * arch/parisc
  2110. + */
  2111. +#ifndef _ASM_UBICOM32_SIGINFO_H
  2112. +#define _ASM_UBICOM32_SIGINFO_H
  2113. +
  2114. +#include <asm-generic/siginfo.h>
  2115. +
  2116. +#endif /* _ASM_UBICOM32_SIGINFO_H */
  2117. --- /dev/null
  2118. +++ b/arch/ubicom32/include/asm/signal.h
  2119. @@ -0,0 +1,180 @@
  2120. +/*
  2121. + * arch/ubicom32/include/asm/signal.h
  2122. + * Signal related definitions for Ubicom32 architecture.
  2123. + *
  2124. + * (C) Copyright 2009, Ubicom, Inc.
  2125. + *
  2126. + * This file is part of the Ubicom32 Linux Kernel Port.
  2127. + *
  2128. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  2129. + * it and/or modify it under the terms of the GNU General Public License
  2130. + * as published by the Free Software Foundation, either version 2 of the
  2131. + * License, or (at your option) any later version.
  2132. + *
  2133. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  2134. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  2135. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  2136. + * the GNU General Public License for more details.
  2137. + *
  2138. + * You should have received a copy of the GNU General Public License
  2139. + * along with the Ubicom32 Linux Kernel Port. If not,
  2140. + * see <http://www.gnu.org/licenses/>.
  2141. + *
  2142. + * Ubicom32 implementation derived from (with many thanks):
  2143. + * arch/m68knommu
  2144. + * arch/blackfin
  2145. + * arch/parisc
  2146. + */
  2147. +#ifndef _ASM_UBICOM32_SIGNAL_H
  2148. +#define _ASM_UBICOM32_SIGNAL_H
  2149. +
  2150. +#include <linux/types.h>
  2151. +
  2152. +/* Avoid too many header ordering problems. */
  2153. +struct siginfo;
  2154. +
  2155. +#ifdef __KERNEL__
  2156. +/* Most things should be clean enough to redefine this at will, if care
  2157. + is taken to make libc match. */
  2158. +
  2159. +#define _NSIG 64
  2160. +#define _NSIG_BPW 32
  2161. +#define _NSIG_WORDS (_NSIG / _NSIG_BPW)
  2162. +
  2163. +typedef unsigned long old_sigset_t; /* at least 32 bits */
  2164. +
  2165. +typedef struct {
  2166. + unsigned long sig[_NSIG_WORDS];
  2167. +} sigset_t;
  2168. +
  2169. +#endif /* __KERNEL__ */
  2170. +
  2171. +#define SIGHUP 1
  2172. +#define SIGINT 2
  2173. +#define SIGQUIT 3
  2174. +#define SIGILL 4
  2175. +#define SIGTRAP 5
  2176. +#define SIGABRT 6
  2177. +#define SIGIOT 6
  2178. +#define SIGBUS 7
  2179. +#define SIGFPE 8
  2180. +#define SIGKILL 9
  2181. +#define SIGUSR1 10
  2182. +#define SIGSEGV 11
  2183. +#define SIGUSR2 12
  2184. +#define SIGPIPE 13
  2185. +#define SIGALRM 14
  2186. +#define SIGTERM 15
  2187. +#define SIGSTKFLT 16
  2188. +#define SIGCHLD 17
  2189. +#define SIGCONT 18
  2190. +#define SIGSTOP 19
  2191. +#define SIGTSTP 20
  2192. +#define SIGTTIN 21
  2193. +#define SIGTTOU 22
  2194. +#define SIGURG 23
  2195. +#define SIGXCPU 24
  2196. +#define SIGXFSZ 25
  2197. +#define SIGVTALRM 26
  2198. +#define SIGPROF 27
  2199. +#define SIGWINCH 28
  2200. +#define SIGIO 29
  2201. +#define SIGPOLL SIGIO
  2202. +/*
  2203. +#define SIGLOST 29
  2204. +*/
  2205. +#define SIGPWR 30
  2206. +#define SIGSYS 31
  2207. +#define SIGUNUSED 31
  2208. +
  2209. +/* These should not be considered constants from userland. */
  2210. +#define SIGRTMIN 32
  2211. +#define SIGRTMAX _NSIG
  2212. +
  2213. +/*
  2214. + * SA_FLAGS values:
  2215. + *
  2216. + * SA_ONSTACK indicates that a registered stack_t will be used.
  2217. + * SA_RESTART flag to get restarting signals (which were the default long ago)
  2218. + * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop.
  2219. + * SA_RESETHAND clears the handler when the signal is delivered.
  2220. + * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies.
  2221. + * SA_NODEFER prevents the current signal from being masked in the handler.
  2222. + *
  2223. + * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single
  2224. + * Unix names RESETHAND and NODEFER respectively.
  2225. + */
  2226. +#define SA_NOCLDSTOP 0x00000001
  2227. +#define SA_NOCLDWAIT 0x00000002
  2228. +#define SA_SIGINFO 0x00000004
  2229. +#define SA_ONSTACK 0x08000000
  2230. +#define SA_RESTART 0x10000000
  2231. +#define SA_NODEFER 0x40000000
  2232. +#define SA_RESETHAND 0x80000000
  2233. +
  2234. +#define SA_NOMASK SA_NODEFER
  2235. +#define SA_ONESHOT SA_RESETHAND
  2236. +
  2237. +/*
  2238. + * sigaltstack controls
  2239. + */
  2240. +#define SS_ONSTACK 1
  2241. +#define SS_DISABLE 2
  2242. +
  2243. +#define MINSIGSTKSZ 2048
  2244. +#define SIGSTKSZ 8192
  2245. +
  2246. +#include <asm-generic/signal.h>
  2247. +
  2248. +#ifdef __KERNEL__
  2249. +struct old_sigaction {
  2250. + __sighandler_t sa_handler;
  2251. + old_sigset_t sa_mask;
  2252. + unsigned long sa_flags;
  2253. + void (*sa_restorer)(void);
  2254. +};
  2255. +
  2256. +struct sigaction {
  2257. + __sighandler_t sa_handler;
  2258. + unsigned long sa_flags;
  2259. + void (*sa_restorer)(void);
  2260. + sigset_t sa_mask; /* mask last for extensibility */
  2261. +};
  2262. +
  2263. +struct k_sigaction {
  2264. + struct sigaction sa;
  2265. +};
  2266. +#else
  2267. +/* Here we must cater to libcs that poke about in kernel headers. */
  2268. +
  2269. +struct sigaction {
  2270. + union {
  2271. + __sighandler_t _sa_handler;
  2272. + void (*_sa_sigaction)(int, struct siginfo *, void *);
  2273. + } _u;
  2274. + sigset_t sa_mask;
  2275. + unsigned long sa_flags;
  2276. + void (*sa_restorer)(void);
  2277. +};
  2278. +
  2279. +#define sa_handler _u._sa_handler
  2280. +#define sa_sigaction _u._sa_sigaction
  2281. +
  2282. +#endif /* __KERNEL__ */
  2283. +
  2284. +typedef struct sigaltstack {
  2285. + void *ss_sp;
  2286. + int ss_flags;
  2287. + size_t ss_size;
  2288. +} stack_t;
  2289. +
  2290. +#ifdef __KERNEL__
  2291. +
  2292. +#include <asm/sigcontext.h>
  2293. +#undef __HAVE_ARCH_SIG_BITOPS
  2294. +
  2295. +#define ptrace_signal_deliver(regs, cookie) do { } while (0)
  2296. +
  2297. +#endif /* __KERNEL__ */
  2298. +
  2299. +#endif /* _ASM_UBICOM32_SIGNAL_H */
  2300. --- /dev/null
  2301. +++ b/arch/ubicom32/include/asm/socket.h
  2302. @@ -0,0 +1,84 @@
  2303. +/*
  2304. + * arch/ubicom32/include/asm/socket.h
  2305. + * Socket options definitions for Ubicom32 architecture.
  2306. + *
  2307. + * (C) Copyright 2009, Ubicom, Inc.
  2308. + *
  2309. + * This file is part of the Ubicom32 Linux Kernel Port.
  2310. + *
  2311. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  2312. + * it and/or modify it under the terms of the GNU General Public License
  2313. + * as published by the Free Software Foundation, either version 2 of the
  2314. + * License, or (at your option) any later version.
  2315. + *
  2316. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  2317. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  2318. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  2319. + * the GNU General Public License for more details.
  2320. + *
  2321. + * You should have received a copy of the GNU General Public License
  2322. + * along with the Ubicom32 Linux Kernel Port. If not,
  2323. + * see <http://www.gnu.org/licenses/>.
  2324. + *
  2325. + * Ubicom32 implementation derived from (with many thanks):
  2326. + * arch/m68knommu
  2327. + * arch/blackfin
  2328. + * arch/parisc
  2329. + */
  2330. +#ifndef _ASM_UBICOM32_SOCKET_H
  2331. +#define _ASM_UBICOM32_SOCKET_H
  2332. +
  2333. +#include <asm/sockios.h>
  2334. +
  2335. +/* For setsockopt(2) */
  2336. +#define SOL_SOCKET 1
  2337. +
  2338. +#define SO_DEBUG 1
  2339. +#define SO_REUSEADDR 2
  2340. +#define SO_TYPE 3
  2341. +#define SO_ERROR 4
  2342. +#define SO_DONTROUTE 5
  2343. +#define SO_BROADCAST 6
  2344. +#define SO_SNDBUF 7
  2345. +#define SO_RCVBUF 8
  2346. +#define SO_SNDBUFFORCE 32
  2347. +#define SO_RCVBUFFORCE 33
  2348. +#define SO_KEEPALIVE 9
  2349. +#define SO_OOBINLINE 10
  2350. +#define SO_NO_CHECK 11
  2351. +#define SO_PRIORITY 12
  2352. +#define SO_LINGER 13
  2353. +#define SO_BSDCOMPAT 14
  2354. +/* To add :#define SO_REUSEPORT 15 */
  2355. +#define SO_PASSCRED 16
  2356. +#define SO_PEERCRED 17
  2357. +#define SO_RCVLOWAT 18
  2358. +#define SO_SNDLOWAT 19
  2359. +#define SO_RCVTIMEO 20
  2360. +#define SO_SNDTIMEO 21
  2361. +
  2362. +/* Security levels - as per NRL IPv6 - don't actually do anything */
  2363. +#define SO_SECURITY_AUTHENTICATION 22
  2364. +#define SO_SECURITY_ENCRYPTION_TRANSPORT 23
  2365. +#define SO_SECURITY_ENCRYPTION_NETWORK 24
  2366. +
  2367. +#define SO_BINDTODEVICE 25
  2368. +
  2369. +/* Socket filtering */
  2370. +#define SO_ATTACH_FILTER 26
  2371. +#define SO_DETACH_FILTER 27
  2372. +
  2373. +#define SO_PEERNAME 28
  2374. +#define SO_TIMESTAMP 29
  2375. +#define SCM_TIMESTAMP SO_TIMESTAMP
  2376. +
  2377. +#define SO_ACCEPTCONN 30
  2378. +
  2379. +#define SO_PEERSEC 31
  2380. +#define SO_PASSSEC 34
  2381. +#define SO_TIMESTAMPNS 35
  2382. +#define SCM_TIMESTAMPNS SO_TIMESTAMPNS
  2383. +
  2384. +#define SO_MARK 36
  2385. +
  2386. +#endif /* _ASM_UBICOM32_SOCKET_H */
  2387. --- /dev/null
  2388. +++ b/arch/ubicom32/include/asm/sockios.h
  2389. @@ -0,0 +1,40 @@
  2390. +/*
  2391. + * arch/ubicom32/include/asm/sockios.h
  2392. + * Socket-level ioctl definitions for Ubicom32 architecture.
  2393. + *
  2394. + * (C) Copyright 2009, Ubicom, Inc.
  2395. + *
  2396. + * This file is part of the Ubicom32 Linux Kernel Port.
  2397. + *
  2398. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  2399. + * it and/or modify it under the terms of the GNU General Public License
  2400. + * as published by the Free Software Foundation, either version 2 of the
  2401. + * License, or (at your option) any later version.
  2402. + *
  2403. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  2404. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  2405. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  2406. + * the GNU General Public License for more details.
  2407. + *
  2408. + * You should have received a copy of the GNU General Public License
  2409. + * along with the Ubicom32 Linux Kernel Port. If not,
  2410. + * see <http://www.gnu.org/licenses/>.
  2411. + *
  2412. + * Ubicom32 implementation derived from (with many thanks):
  2413. + * arch/m68knommu
  2414. + * arch/blackfin
  2415. + * arch/parisc
  2416. + */
  2417. +#ifndef _ASM_UBICOM32_SOCKIOS_H
  2418. +#define _ASM_UBICOM32_SOCKIOS_H
  2419. +
  2420. +/* Socket-level I/O control calls. */
  2421. +#define FIOSETOWN 0x8901
  2422. +#define SIOCSPGRP 0x8902
  2423. +#define FIOGETOWN 0x8903
  2424. +#define SIOCGPGRP 0x8904
  2425. +#define SIOCATMARK 0x8905
  2426. +#define SIOCGSTAMP 0x8906 /* Get stamp (timeval) */
  2427. +#define SIOCGSTAMPNS 0x8907 /* Get stamp (timespec) */
  2428. +
  2429. +#endif /* _ASM_UBICOM32_SOCKIOS_H */
  2430. --- /dev/null
  2431. +++ b/arch/ubicom32/include/asm/statfs.h
  2432. @@ -0,0 +1,33 @@
  2433. +/*
  2434. + * arch/ubicom32/include/asm/statfs.h
  2435. + * Generic statfs.h definitions
  2436. + *
  2437. + * (C) Copyright 2009, Ubicom, Inc.
  2438. + *
  2439. + * This file is part of the Ubicom32 Linux Kernel Port.
  2440. + *
  2441. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  2442. + * it and/or modify it under the terms of the GNU General Public License
  2443. + * as published by the Free Software Foundation, either version 2 of the
  2444. + * License, or (at your option) any later version.
  2445. + *
  2446. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  2447. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  2448. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  2449. + * the GNU General Public License for more details.
  2450. + *
  2451. + * You should have received a copy of the GNU General Public License
  2452. + * along with the Ubicom32 Linux Kernel Port. If not,
  2453. + * see <http://www.gnu.org/licenses/>.
  2454. + *
  2455. + * Ubicom32 implementation derived from (with many thanks):
  2456. + * arch/m68knommu
  2457. + * arch/blackfin
  2458. + * arch/parisc
  2459. + */
  2460. +#ifndef _ASM_UBICOM32_STATFS_H
  2461. +#define _ASM_UBICOM32_STATFS_H
  2462. +
  2463. +#include <asm-generic/statfs.h>
  2464. +
  2465. +#endif /* _ASM_UBICOM32_STATFS_H */
  2466. --- /dev/null
  2467. +++ b/arch/ubicom32/include/asm/stat.h
  2468. @@ -0,0 +1,104 @@
  2469. +/*
  2470. + * arch/ubicom32/include/asm/stat.h
  2471. + * File status definitions for Ubicom32 architecture.
  2472. + *
  2473. + * (C) Copyright 2009, Ubicom, Inc.
  2474. + *
  2475. + * This file is part of the Ubicom32 Linux Kernel Port.
  2476. + *
  2477. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  2478. + * it and/or modify it under the terms of the GNU General Public License
  2479. + * as published by the Free Software Foundation, either version 2 of the
  2480. + * License, or (at your option) any later version.
  2481. + *
  2482. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  2483. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  2484. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  2485. + * the GNU General Public License for more details.
  2486. + *
  2487. + * You should have received a copy of the GNU General Public License
  2488. + * along with the Ubicom32 Linux Kernel Port. If not,
  2489. + * see <http://www.gnu.org/licenses/>.
  2490. + *
  2491. + * Ubicom32 implementation derived from (with many thanks):
  2492. + * arch/m68knommu
  2493. + * arch/blackfin
  2494. + * arch/parisc
  2495. + */
  2496. +#ifndef _ASM_UBICOM32_STAT_H
  2497. +#define _ASM_UBICOM32_STAT_H
  2498. +
  2499. +struct __old_kernel_stat {
  2500. + unsigned short st_dev;
  2501. + unsigned short st_ino;
  2502. + unsigned short st_mode;
  2503. + unsigned short st_nlink;
  2504. + unsigned short st_uid;
  2505. + unsigned short st_gid;
  2506. + unsigned short st_rdev;
  2507. + unsigned long st_size;
  2508. + unsigned long st_atime;
  2509. + unsigned long st_mtime;
  2510. + unsigned long st_ctime;
  2511. +};
  2512. +
  2513. +struct stat {
  2514. + unsigned short st_dev;
  2515. + unsigned short __pad1;
  2516. + unsigned long st_ino;
  2517. + unsigned short st_mode;
  2518. + unsigned short st_nlink;
  2519. + unsigned short st_uid;
  2520. + unsigned short st_gid;
  2521. + unsigned short st_rdev;
  2522. + unsigned short __pad2;
  2523. + unsigned long st_size;
  2524. + unsigned long st_blksize;
  2525. + unsigned long st_blocks;
  2526. + unsigned long st_atime;
  2527. + unsigned long __unused1;
  2528. + unsigned long st_mtime;
  2529. + unsigned long __unused2;
  2530. + unsigned long st_ctime;
  2531. + unsigned long __unused3;
  2532. + unsigned long __unused4;
  2533. + unsigned long __unused5;
  2534. +};
  2535. +
  2536. +/* This matches struct stat64 in glibc2.1, hence the absolutely
  2537. + * insane amounts of padding around dev_t's.
  2538. + */
  2539. +struct stat64 {
  2540. + unsigned long long st_dev;
  2541. + unsigned char __pad1[2];
  2542. +
  2543. +#define STAT64_HAS_BROKEN_ST_INO 1
  2544. + unsigned long __st_ino;
  2545. +
  2546. + unsigned int st_mode;
  2547. + unsigned int st_nlink;
  2548. +
  2549. + unsigned long st_uid;
  2550. + unsigned long st_gid;
  2551. +
  2552. + unsigned long long st_rdev;
  2553. + unsigned char __pad3[2];
  2554. +
  2555. + long long st_size;
  2556. + unsigned long st_blksize;
  2557. +
  2558. + unsigned long long st_blocks; /* Number 512-byte blocks allocated. */
  2559. +
  2560. + unsigned long st_atime;
  2561. + unsigned long st_atime_nsec;
  2562. +
  2563. + unsigned long st_mtime;
  2564. + unsigned long st_mtime_nsec;
  2565. +
  2566. + unsigned long st_ctime;
  2567. + unsigned long st_ctime_nsec;
  2568. +
  2569. + unsigned long long st_ino;
  2570. +};
  2571. +
  2572. +#endif /* _ASM_UBICOM32_STAT_H */
  2573. --- /dev/null
  2574. +++ b/arch/ubicom32/include/asm/swab.h
  2575. @@ -0,0 +1,46 @@
  2576. +/*
  2577. + * arch/ubicom32/include/asm/swab.h
  2578. + * Byte order swapping utility routines.
  2579. + *
  2580. + * (C) Copyright 2009, Ubicom, Inc.
  2581. + *
  2582. + * This file is part of the Ubicom32 Linux Kernel Port.
  2583. + *
  2584. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  2585. + * it and/or modify it under the terms of the GNU General Public License
  2586. + * as published by the Free Software Foundation, either version 2 of the
  2587. + * License, or (at your option) any later version.
  2588. + *
  2589. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  2590. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  2591. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  2592. + * the GNU General Public License for more details.
  2593. + *
  2594. + * You should have received a copy of the GNU General Public License
  2595. + * along with the Ubicom32 Linux Kernel Port. If not,
  2596. + * see <http://www.gnu.org/licenses/>.
  2597. + *
  2598. + * Ubicom32 implementation derived from (with many thanks):
  2599. + * arch/m68knommu
  2600. + * arch/blackfin
  2601. + * arch/parisc
  2602. + */
  2603. +#ifndef _ASM_UBICOM32_SWAB_H
  2604. +#define _ASM_UBICOM32_SWAB_H
  2605. +
  2606. +#include <linux/types.h>
  2607. +
  2608. +#if defined(__GNUC__) && !defined(__STRICT_ANSI__) || defined(__KERNEL__)
  2609. +# define __BYTEORDER_HAS_U64__
  2610. +# define __SWAB_64_THRU_32__
  2611. +#endif
  2612. +
  2613. +#if defined(IP7000) || defined(IP7000_REV2)
  2614. +
  2615. +#define __arch__swab16 __builtin_ubicom32_swapb_2
  2616. +#define __arch__swab32 __builtin_ubicom32_swapb_4
  2617. +
  2618. +#endif /* IP7000 */
  2619. +
  2620. +#endif /* _ASM_UBICOM32_SWAB_H */
  2621. +
  2622. --- /dev/null
  2623. +++ b/arch/ubicom32/include/asm/termbits.h
  2624. @@ -0,0 +1,227 @@
  2625. +/*
  2626. + * arch/ubicom32/include/asm/termbits.h
  2627. + * Terminal/serial port definitions for Ubicom32 architecture.
  2628. + *
  2629. + * (C) Copyright 2009, Ubicom, Inc.
  2630. + *
  2631. + * This file is part of the Ubicom32 Linux Kernel Port.
  2632. + *
  2633. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  2634. + * it and/or modify it under the terms of the GNU General Public License
  2635. + * as published by the Free Software Foundation, either version 2 of the
  2636. + * License, or (at your option) any later version.
  2637. + *
  2638. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  2639. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  2640. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  2641. + * the GNU General Public License for more details.
  2642. + *
  2643. + * You should have received a copy of the GNU General Public License
  2644. + * along with the Ubicom32 Linux Kernel Port. If not,
  2645. + * see <http://www.gnu.org/licenses/>.
  2646. + *
  2647. + * Ubicom32 implementation derived from (with many thanks):
  2648. + * arch/m68knommu
  2649. + * arch/blackfin
  2650. + * arch/parisc
  2651. + */
  2652. +#ifndef _ASM_UBICOM32_TERMBITS_H
  2653. +#define _ASM_UBICOM32_TERMBITS_H
  2654. +
  2655. +#include <linux/posix_types.h>
  2656. +
  2657. +typedef unsigned char cc_t;
  2658. +typedef unsigned int speed_t;
  2659. +typedef unsigned int tcflag_t;
  2660. +
  2661. +#define NCCS 19
  2662. +struct termios {
  2663. + tcflag_t c_iflag; /* input mode flags */
  2664. + tcflag_t c_oflag; /* output mode flags */
  2665. + tcflag_t c_cflag; /* control mode flags */
  2666. + tcflag_t c_lflag; /* local mode flags */
  2667. + cc_t c_line; /* line discipline */
  2668. + cc_t c_cc[NCCS]; /* control characters */
  2669. +};
  2670. +
  2671. +struct termios2 {
  2672. + tcflag_t c_iflag; /* input mode flags */
  2673. + tcflag_t c_oflag; /* output mode flags */
  2674. + tcflag_t c_cflag; /* control mode flags */
  2675. + tcflag_t c_lflag; /* local mode flags */
  2676. + cc_t c_line; /* line discipline */
  2677. + cc_t c_cc[NCCS]; /* control characters */
  2678. + speed_t c_ispeed; /* input speed */
  2679. + speed_t c_ospeed; /* output speed */
  2680. +};
  2681. +
  2682. +struct ktermios {
  2683. + tcflag_t c_iflag; /* input mode flags */
  2684. + tcflag_t c_oflag; /* output mode flags */
  2685. + tcflag_t c_cflag; /* control mode flags */
  2686. + tcflag_t c_lflag; /* local mode flags */
  2687. + cc_t c_line; /* line discipline */
  2688. + cc_t c_cc[NCCS]; /* control characters */
  2689. + speed_t c_ispeed; /* input speed */
  2690. + speed_t c_ospeed; /* output speed */
  2691. +};
  2692. +
  2693. +/* c_cc characters */
  2694. +#define VINTR 0
  2695. +#define VQUIT 1
  2696. +#define VERASE 2
  2697. +#define VKILL 3
  2698. +#define VEOF 4
  2699. +#define VTIME 5
  2700. +#define VMIN 6
  2701. +#define VSWTC 7
  2702. +#define VSTART 8
  2703. +#define VSTOP 9
  2704. +#define VSUSP 10
  2705. +#define VEOL 11
  2706. +#define VREPRINT 12
  2707. +#define VDISCARD 13
  2708. +#define VWERASE 14
  2709. +#define VLNEXT 15
  2710. +#define VEOL2 16
  2711. +
  2712. +
  2713. +/* c_iflag bits */
  2714. +#define IGNBRK 0000001
  2715. +#define BRKINT 0000002
  2716. +#define IGNPAR 0000004
  2717. +#define PARMRK 0000010
  2718. +#define INPCK 0000020
  2719. +#define ISTRIP 0000040
  2720. +#define INLCR 0000100
  2721. +#define IGNCR 0000200
  2722. +#define ICRNL 0000400
  2723. +#define IUCLC 0001000
  2724. +#define IXON 0002000
  2725. +#define IXANY 0004000
  2726. +#define IXOFF 0010000
  2727. +#define IMAXBEL 0020000
  2728. +#define IUTF8 0040000
  2729. +
  2730. +/* c_oflag bits */
  2731. +#define OPOST 0000001
  2732. +#define OLCUC 0000002
  2733. +#define ONLCR 0000004
  2734. +#define OCRNL 0000010
  2735. +#define ONOCR 0000020
  2736. +#define ONLRET 0000040
  2737. +#define OFILL 0000100
  2738. +#define OFDEL 0000200
  2739. +#define NLDLY 0000400
  2740. +#define NL0 0000000
  2741. +#define NL1 0000400
  2742. +#define CRDLY 0003000
  2743. +#define CR0 0000000
  2744. +#define CR1 0001000
  2745. +#define CR2 0002000
  2746. +#define CR3 0003000
  2747. +#define TABDLY 0014000
  2748. +#define TAB0 0000000
  2749. +#define TAB1 0004000
  2750. +#define TAB2 0010000
  2751. +#define TAB3 0014000
  2752. +#define XTABS 0014000
  2753. +#define BSDLY 0020000
  2754. +#define BS0 0000000
  2755. +#define BS1 0020000
  2756. +#define VTDLY 0040000
  2757. +#define VT0 0000000
  2758. +#define VT1 0040000
  2759. +#define FFDLY 0100000
  2760. +#define FF0 0000000
  2761. +#define FF1 0100000
  2762. +
  2763. +/* c_cflag bit meaning */
  2764. +#define CBAUD 0010017
  2765. +#define B0 0000000 /* hang up */
  2766. +#define B50 0000001
  2767. +#define B75 0000002
  2768. +#define B110 0000003
  2769. +#define B134 0000004
  2770. +#define B150 0000005
  2771. +#define B200 0000006
  2772. +#define B300 0000007
  2773. +#define B600 0000010
  2774. +#define B1200 0000011
  2775. +#define B1800 0000012
  2776. +#define B2400 0000013
  2777. +#define B4800 0000014
  2778. +#define B9600 0000015
  2779. +#define B19200 0000016
  2780. +#define B38400 0000017
  2781. +#define EXTA B19200
  2782. +#define EXTB B38400
  2783. +#define CSIZE 0000060
  2784. +#define CS5 0000000
  2785. +#define CS6 0000020
  2786. +#define CS7 0000040
  2787. +#define CS8 0000060
  2788. +#define CSTOPB 0000100
  2789. +#define CREAD 0000200
  2790. +#define PARENB 0000400
  2791. +#define PARODD 0001000
  2792. +#define HUPCL 0002000
  2793. +#define CLOCAL 0004000
  2794. +#define CBAUDEX 0010000
  2795. +#define BOTHER 0010000
  2796. +#define B57600 0010001
  2797. +#define B115200 0010002
  2798. +#define B230400 0010003
  2799. +#define B460800 0010004
  2800. +#define B500000 0010005
  2801. +#define B576000 0010006
  2802. +#define B921600 0010007
  2803. +#define B1000000 0010010
  2804. +#define B1152000 0010011
  2805. +#define B1500000 0010012
  2806. +#define B2000000 0010013
  2807. +#define B2500000 0010014
  2808. +#define B3000000 0010015
  2809. +#define B3500000 0010016
  2810. +#define B4000000 0010017
  2811. +#define CIBAUD 002003600000 /* input baud rate */
  2812. +#define CMSPAR 010000000000 /* mark or space (stick) parity */
  2813. +#define CRTSCTS 020000000000 /* flow control */
  2814. +
  2815. +#define IBSHIFT 16 /* Shift from CBAUD to CIBAUD */
  2816. +
  2817. +/* c_lflag bits */
  2818. +#define ISIG 0000001
  2819. +#define ICANON 0000002
  2820. +#define XCASE 0000004
  2821. +#define ECHO 0000010
  2822. +#define ECHOE 0000020
  2823. +#define ECHOK 0000040
  2824. +#define ECHONL 0000100
  2825. +#define NOFLSH 0000200
  2826. +#define TOSTOP 0000400
  2827. +#define ECHOCTL 0001000
  2828. +#define ECHOPRT 0002000
  2829. +#define ECHOKE 0004000
  2830. +#define FLUSHO 0010000
  2831. +#define PENDIN 0040000
  2832. +#define IEXTEN 0100000
  2833. +
  2834. +
  2835. +/* tcflow() and TCXONC use these */
  2836. +#define TCOOFF 0
  2837. +#define TCOON 1
  2838. +#define TCIOFF 2
  2839. +#define TCION 3
  2840. +
  2841. +/* tcflush() and TCFLSH use these */
  2842. +#define TCIFLUSH 0
  2843. +#define TCOFLUSH 1
  2844. +#define TCIOFLUSH 2
  2845. +
  2846. +/* tcsetattr uses these */
  2847. +#define TCSANOW 0
  2848. +#define TCSADRAIN 1
  2849. +#define TCSAFLUSH 2
  2850. +
  2851. +#endif /* _ASM_UBICOM32_TERMBITS_H */
  2852. --- /dev/null
  2853. +++ b/arch/ubicom32/include/asm/termios.h
  2854. @@ -0,0 +1,119 @@
  2855. +/*
  2856. + * arch/ubicom32/include/asm/termios.h
  2857. + * Ubicom32 termio definitions.
  2858. + *
  2859. + * (C) Copyright 2009, Ubicom, Inc.
  2860. + *
  2861. + * This file is part of the Ubicom32 Linux Kernel Port.
  2862. + *
  2863. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  2864. + * it and/or modify it under the terms of the GNU General Public License
  2865. + * as published by the Free Software Foundation, either version 2 of the
  2866. + * License, or (at your option) any later version.
  2867. + *
  2868. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  2869. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  2870. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  2871. + * the GNU General Public License for more details.
  2872. + *
  2873. + * You should have received a copy of the GNU General Public License
  2874. + * along with the Ubicom32 Linux Kernel Port. If not,
  2875. + * see <http://www.gnu.org/licenses/>.
  2876. + *
  2877. + * Ubicom32 implementation derived from (with many thanks):
  2878. + * arch/m68knommu
  2879. + * arch/blackfin
  2880. + * arch/parisc
  2881. + */
  2882. +#ifndef _ASM_UBICOM32_TERMIOS_H
  2883. +#define _ASM_UBICOM32_TERMIOS_H
  2884. +
  2885. +#include <asm/termbits.h>
  2886. +#include <asm/ioctls.h>
  2887. +
  2888. +struct winsize {
  2889. + unsigned short ws_row;
  2890. + unsigned short ws_col;
  2891. + unsigned short ws_xpixel;
  2892. + unsigned short ws_ypixel;
  2893. +};
  2894. +
  2895. +#define NCC 8
  2896. +struct termio {
  2897. + unsigned short c_iflag; /* input mode flags */
  2898. + unsigned short c_oflag; /* output mode flags */
  2899. + unsigned short c_cflag; /* control mode flags */
  2900. + unsigned short c_lflag; /* local mode flags */
  2901. + unsigned char c_line; /* line discipline */
  2902. + unsigned char c_cc[NCC]; /* control characters */
  2903. +};
  2904. +
  2905. +#ifdef __KERNEL__
  2906. +/* intr=^C quit=^| erase=del kill=^U
  2907. + eof=^D vtime=\0 vmin=\1 sxtc=\0
  2908. + start=^Q stop=^S susp=^Z eol=\0
  2909. + reprint=^R discard=^U werase=^W lnext=^V
  2910. + eol2=\0
  2911. +*/
  2912. +#define INIT_C_CC "\003\034\177\025\004\0\1\0\021\023\032\0\022\017\027\026\0"
  2913. +#endif
  2914. +
  2915. +/* modem lines */
  2916. +#define TIOCM_LE 0x001
  2917. +#define TIOCM_DTR 0x002
  2918. +#define TIOCM_RTS 0x004
  2919. +#define TIOCM_ST 0x008
  2920. +#define TIOCM_SR 0x010
  2921. +#define TIOCM_CTS 0x020
  2922. +#define TIOCM_CAR 0x040
  2923. +#define TIOCM_RNG 0x080
  2924. +#define TIOCM_DSR 0x100
  2925. +#define TIOCM_CD TIOCM_CAR
  2926. +#define TIOCM_RI TIOCM_RNG
  2927. +#define TIOCM_OUT1 0x2000
  2928. +#define TIOCM_OUT2 0x4000
  2929. +#define TIOCM_LOOP 0x8000
  2930. +
  2931. +/* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */
  2932. +
  2933. +#ifdef __KERNEL__
  2934. +
  2935. +/*
  2936. + * Translate a "termio" structure into a "termios". Ugh.
  2937. + */
  2938. +#define user_termio_to_kernel_termios(termios, termio) \
  2939. +({ \
  2940. + unsigned short tmp; \
  2941. + get_user(tmp, &(termio)->c_iflag); \
  2942. + (termios)->c_iflag = (0xffff0000 & ((termios)->c_iflag)) | tmp; \
  2943. + get_user(tmp, &(termio)->c_oflag); \
  2944. + (termios)->c_oflag = (0xffff0000 & ((termios)->c_oflag)) | tmp; \
  2945. + get_user(tmp, &(termio)->c_cflag); \
  2946. + (termios)->c_cflag = (0xffff0000 & ((termios)->c_cflag)) | tmp; \
  2947. + get_user(tmp, &(termio)->c_lflag); \
  2948. + (termios)->c_lflag = (0xffff0000 & ((termios)->c_lflag)) | tmp; \
  2949. + get_user((termios)->c_line, &(termio)->c_line); \
  2950. + copy_from_user((termios)->c_cc, (termio)->c_cc, NCC); \
  2951. +})
  2952. +
  2953. +/*
  2954. + * Translate a "termios" structure into a "termio". Ugh.
  2955. + */
  2956. +#define kernel_termios_to_user_termio(termio, termios) \
  2957. +({ \
  2958. + put_user((termios)->c_iflag, &(termio)->c_iflag); \
  2959. + put_user((termios)->c_oflag, &(termio)->c_oflag); \
  2960. + put_user((termios)->c_cflag, &(termio)->c_cflag); \
  2961. + put_user((termios)->c_lflag, &(termio)->c_lflag); \
  2962. + put_user((termios)->c_line, &(termio)->c_line); \
  2963. + copy_to_user((termio)->c_cc, (termios)->c_cc, NCC); \
  2964. +})
  2965. +
  2966. +#define user_termios_to_kernel_termios(k, u) copy_from_user(k, u, sizeof(struct termios2))
  2967. +#define kernel_termios_to_user_termios(u, k) copy_to_user(u, k, sizeof(struct termios2))
  2968. +#define user_termios_to_kernel_termios_1(k, u) copy_from_user(k, u, sizeof(struct termios))
  2969. +#define kernel_termios_to_user_termios_1(u, k) copy_to_user(u, k, sizeof(struct termios))
  2970. +
  2971. +#endif /* __KERNEL__ */
  2972. +
  2973. +#endif /* _ASM_UBICOM32_TERMIOS_H */
  2974. --- /dev/null
  2975. +++ b/arch/ubicom32/include/asm/thread_info.h
  2976. @@ -0,0 +1,134 @@
  2977. +/*
  2978. + * arch/ubicom32/include/asm/thread_info.h
  2979. + * Ubicom32 architecture low-level thread information.
  2980. + *
  2981. + * (C) Copyright 2009, Ubicom, Inc.
  2982. + * Adapted from the i386 and PPC versions by Greg Ungerer ([email protected])
  2983. + * Copyright (C) 2002 David Howells ([email protected])
  2984. + * - Incorporating suggestions made by Linus Torvalds and Dave Miller
  2985. + *
  2986. + * This file is part of the Ubicom32 Linux Kernel Port.
  2987. + *
  2988. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  2989. + * it and/or modify it under the terms of the GNU General Public License
  2990. + * as published by the Free Software Foundation, either version 2 of the
  2991. + * License, or (at your option) any later version.
  2992. + *
  2993. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  2994. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  2995. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  2996. + * the GNU General Public License for more details.
  2997. + *
  2998. + * You should have received a copy of the GNU General Public License
  2999. + * along with the Ubicom32 Linux Kernel Port. If not,
  3000. + * see <http://www.gnu.org/licenses/>.
  3001. + *
  3002. + * Ubicom32 implementation derived from (with many thanks):
  3003. + * arch/m68knommu
  3004. + * arch/blackfin
  3005. + * arch/parisc
  3006. + */
  3007. +
  3008. +#ifndef _ASM_UBICOM32_THREAD_INFO_H
  3009. +#define _ASM_UBICOM32_THREAD_INFO_H
  3010. +
  3011. +#include <asm/page.h>
  3012. +
  3013. +/*
  3014. + * Size of kernel stack for each process. This must be a power of 2...
  3015. + */
  3016. +#ifdef CONFIG_4KSTACKS
  3017. +#define THREAD_SIZE_ORDER (0)
  3018. +#else
  3019. +#define THREAD_SIZE_ORDER (1)
  3020. +#endif
  3021. +
  3022. +/*
  3023. + * for asm files, THREAD_SIZE is now generated by asm-offsets.c
  3024. + */
  3025. +#define THREAD_SIZE (PAGE_SIZE<<THREAD_SIZE_ORDER)
  3026. +
  3027. +#ifdef __KERNEL__
  3028. +
  3029. +#ifndef __ASSEMBLY__
  3030. +
  3031. +/*
  3032. + * low level task data.
  3033. + */
  3034. +struct thread_info {
  3035. + struct task_struct *task; /* main task structure */
  3036. + struct exec_domain *exec_domain; /* execution domain */
  3037. + unsigned long flags; /* low level flags */
  3038. + int cpu; /* cpu we're on */
  3039. + int preempt_count; /* 0 => preemptable, <0 => BUG */
  3040. + int interrupt_nesting; /* Interrupt nesting level. */
  3041. + struct restart_block restart_block;
  3042. +};
  3043. +
  3044. +/*
  3045. + * macros/functions for gaining access to the thread information structure
  3046. + */
  3047. +#define INIT_THREAD_INFO(tsk) \
  3048. +{ \
  3049. + .task = &tsk, \
  3050. + .exec_domain = &default_exec_domain, \
  3051. + .flags = 0, \
  3052. + .cpu = 0, \
  3053. + .interrupt_nesting = 0, \
  3054. + .restart_block = { \
  3055. + .fn = do_no_restart_syscall, \
  3056. + }, \
  3057. +}
  3058. +
  3059. +#define init_thread_info (init_thread_union.thread_info)
  3060. +#define init_stack (init_thread_union.stack)
  3061. +
  3062. +
  3063. +/* how to get the thread information struct from C */
  3064. +static inline struct thread_info *current_thread_info(void)
  3065. +{
  3066. + struct thread_info *ti;
  3067. +
  3068. + asm (
  3069. + "and.4 %0, sp, %1\n\t"
  3070. + : "=&r" (ti)
  3071. + : "d" (~(THREAD_SIZE-1))
  3072. + : "cc"
  3073. + );
  3074. +
  3075. + return ti;
  3076. +}
  3077. +
  3078. +#define STACK_WARN (THREAD_SIZE / 8)
  3079. +
  3080. +#define __HAVE_ARCH_THREAD_INFO_ALLOCATOR 1
  3081. +
  3082. +/* thread information allocation */
  3083. +#define alloc_thread_info(tsk) ((struct thread_info *) \
  3084. + __get_free_pages(GFP_KERNEL, THREAD_SIZE_ORDER))
  3085. +#define free_thread_info(ti) free_pages((unsigned long) (ti), THREAD_SIZE_ORDER)
  3086. +#endif /* __ASSEMBLY__ */
  3087. +
  3088. +#define PREEMPT_ACTIVE 0x4000000
  3089. +
  3090. +/*
  3091. + * thread information flag bit numbers
  3092. + */
  3093. +#define TIF_SYSCALL_TRACE 0 /* syscall trace active */
  3094. +#define TIF_SIGPENDING 1 /* signal pending */
  3095. +#define TIF_NEED_RESCHED 2 /* rescheduling necessary */
  3096. +#define TIF_POLLING_NRFLAG 3 /* true if poll_idle() is polling
  3097. + TIF_NEED_RESCHED */
  3098. +#define TIF_MEMDIE 4
  3099. +
  3100. +/* as above, but as bit values */
  3101. +#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
  3102. +#define _TIF_SIGPENDING (1<<TIF_SIGPENDING)
  3103. +#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)
  3104. +#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)
  3105. +
  3106. +#define _TIF_WORK_MASK 0x0000FFFE /* work to do on interrupt/exception return */
  3107. +
  3108. +#endif /* __KERNEL__ */
  3109. +
  3110. +#endif /* _ASM_UBICOM32_THREAD_INFO_H */
  3111. --- /dev/null
  3112. +++ b/arch/ubicom32/include/asm/types.h
  3113. @@ -0,0 +1,75 @@
  3114. +/*
  3115. + * arch/ubicom32/include/asm/types.h
  3116. + * Date type definitions for Ubicom32 architecture.
  3117. + *
  3118. + * (C) Copyright 2009, Ubicom, Inc.
  3119. + *
  3120. + * This file is part of the Ubicom32 Linux Kernel Port.
  3121. + *
  3122. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  3123. + * it and/or modify it under the terms of the GNU General Public License
  3124. + * as published by the Free Software Foundation, either version 2 of the
  3125. + * License, or (at your option) any later version.
  3126. + *
  3127. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  3128. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  3129. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  3130. + * the GNU General Public License for more details.
  3131. + *
  3132. + * You should have received a copy of the GNU General Public License
  3133. + * along with the Ubicom32 Linux Kernel Port. If not,
  3134. + * see <http://www.gnu.org/licenses/>.
  3135. + *
  3136. + * Ubicom32 implementation derived from (with many thanks):
  3137. + * arch/m68knommu
  3138. + * arch/blackfin
  3139. + * arch/parisc
  3140. + */
  3141. +#ifndef _ASM_UBICOM32_TYPES_H
  3142. +#define _ASM_UBICOM32_TYPES_H
  3143. +
  3144. +/*
  3145. + * This file is never included by application software unless
  3146. + * explicitly requested (e.g., via linux/types.h) in which case the
  3147. + * application is Linux specific so (user-) name space pollution is
  3148. + * not a major issue. However, for interoperability, libraries still
  3149. + * need to be careful to avoid a name clashes.
  3150. + */
  3151. +
  3152. +#include <asm-generic/int-ll64.h>
  3153. +
  3154. +#ifndef __ASSEMBLY__
  3155. +
  3156. +typedef unsigned short umode_t;
  3157. +
  3158. +#endif /* __ASSEMBLY__ */
  3159. +
  3160. +/*
  3161. + * These aren't exported outside the kernel to avoid name space clashes
  3162. + */
  3163. +#ifdef __KERNEL__
  3164. +
  3165. +#define BITS_PER_LONG 32
  3166. +
  3167. +#ifndef __ASSEMBLY__
  3168. +
  3169. +/* DMA addresses are always 32-bits wide */
  3170. +
  3171. +typedef u32 dma_addr_t;
  3172. +typedef u32 dma64_addr_t;
  3173. +
  3174. +/*
  3175. + * XXX These are "Ubicom style" typedefs. They should be removed in all files used by linux.
  3176. + */
  3177. +typedef u32 u32_t;
  3178. +typedef s32 s32_t;
  3179. +typedef u16 u16_t;
  3180. +typedef s16 s16_t;
  3181. +typedef u8 u8_t;
  3182. +typedef s8 s8_t;
  3183. +
  3184. +#endif /* __ASSEMBLY__ */
  3185. +
  3186. +#endif /* __KERNEL__ */
  3187. +
  3188. +#endif /* _ASM_UBICOM32_TYPES_H */
  3189. --- /dev/null
  3190. +++ b/arch/ubicom32/include/asm/ucontext.h
  3191. @@ -0,0 +1,39 @@
  3192. +/*
  3193. + * arch/ubicom32/include/asm/ucontext.h
  3194. + * Definition of ucontext structure for Ubicom32 architecture.
  3195. + *
  3196. + * (C) Copyright 2009, Ubicom, Inc.
  3197. + *
  3198. + * This file is part of the Ubicom32 Linux Kernel Port.
  3199. + *
  3200. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  3201. + * it and/or modify it under the terms of the GNU General Public License
  3202. + * as published by the Free Software Foundation, either version 2 of the
  3203. + * License, or (at your option) any later version.
  3204. + *
  3205. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  3206. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  3207. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  3208. + * the GNU General Public License for more details.
  3209. + *
  3210. + * You should have received a copy of the GNU General Public License
  3211. + * along with the Ubicom32 Linux Kernel Port. If not,
  3212. + * see <http://www.gnu.org/licenses/>.
  3213. + *
  3214. + * Ubicom32 implementation derived from (with many thanks):
  3215. + * arch/m68knommu
  3216. + * arch/blackfin
  3217. + * arch/parisc
  3218. + */
  3219. +#ifndef _ASM_UBICOM32_UCONTEXT_H
  3220. +#define _ASM_UBICOM32_UCONTEXT_H
  3221. +
  3222. +struct ucontext {
  3223. + unsigned long uc_flags;
  3224. + struct ucontext *uc_link;
  3225. + stack_t uc_stack;
  3226. + struct sigcontext uc_mcontext;
  3227. + sigset_t uc_sigmask; /* mask last for extensibility */
  3228. +};
  3229. +
  3230. +#endif /* _ASM_UBICOM32_UCONTEXT_H */
  3231. --- /dev/null
  3232. +++ b/arch/ubicom32/include/asm/unistd.h
  3233. @@ -0,0 +1,400 @@
  3234. +/*
  3235. + * arch/ubicom32/include/asm/unistd.h
  3236. + * Ubicom32 architecture syscall definitions.
  3237. + *
  3238. + * (C) Copyright 2009, Ubicom, Inc.
  3239. + *
  3240. + * This file is part of the Ubicom32 Linux Kernel Port.
  3241. + *
  3242. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  3243. + * it and/or modify it under the terms of the GNU General Public License
  3244. + * as published by the Free Software Foundation, either version 2 of the
  3245. + * License, or (at your option) any later version.
  3246. + *
  3247. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  3248. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  3249. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  3250. + * the GNU General Public License for more details.
  3251. + *
  3252. + * You should have received a copy of the GNU General Public License
  3253. + * along with the Ubicom32 Linux Kernel Port. If not,
  3254. + * see <http://www.gnu.org/licenses/>.
  3255. + *
  3256. + * Ubicom32 implementation derived from (with many thanks):
  3257. + * arch/m68knommu
  3258. + * arch/blackfin
  3259. + * arch/parisc
  3260. + */
  3261. +#ifndef _ASM_UBICOM32_UNISTD_H
  3262. +#define _ASM_UBICOM32_UNISTD_H
  3263. +
  3264. +/*
  3265. + * This file contains the system call numbers.
  3266. + */
  3267. +
  3268. +#define __NR_restart_syscall 0
  3269. +#define __NR_exit 1
  3270. +#define __NR_fork 2
  3271. +#define __NR_read 3
  3272. +#define __NR_write 4
  3273. +#define __NR_open 5
  3274. +#define __NR_close 6
  3275. +#define __NR_waitpid 7
  3276. +#define __NR_creat 8
  3277. +#define __NR_link 9
  3278. +#define __NR_unlink 10
  3279. +#define __NR_execve 11
  3280. +#define __NR_chdir 12
  3281. +#define __NR_time 13
  3282. +#define __NR_mknod 14
  3283. +#define __NR_chmod 15
  3284. +#define __NR_chown 16
  3285. +#define __NR_break 17
  3286. +#define __NR_oldstat 18
  3287. +#define __NR_lseek 19
  3288. +#define __NR_getpid 20
  3289. +#define __NR_mount 21
  3290. +#define __NR_umount 22
  3291. +#define __NR_setuid 23
  3292. +#define __NR_getuid 24
  3293. +#define __NR_stime 25
  3294. +#define __NR_ptrace 26
  3295. +#define __NR_alarm 27
  3296. +#define __NR_oldfstat 28
  3297. +#define __NR_pause 29
  3298. +#define __NR_utime 30
  3299. +#define __NR_stty 31
  3300. +#define __NR_gtty 32
  3301. +#define __NR_access 33
  3302. +#define __NR_nice 34
  3303. +#define __NR_ftime 35
  3304. +#define __NR_sync 36
  3305. +#define __NR_kill 37
  3306. +#define __NR_rename 38
  3307. +#define __NR_mkdir 39
  3308. +#define __NR_rmdir 40
  3309. +#define __NR_dup 41
  3310. +#define __NR_pipe 42
  3311. +#define __NR_times 43
  3312. +#define __NR_prof 44
  3313. +#define __NR_brk 45
  3314. +#define __NR_setgid 46
  3315. +#define __NR_getgid 47
  3316. +#define __NR_signal 48
  3317. +#define __NR_geteuid 49
  3318. +#define __NR_getegid 50
  3319. +#define __NR_acct 51
  3320. +#define __NR_umount2 52
  3321. +#define __NR_lock 53
  3322. +#define __NR_ioctl 54
  3323. +#define __NR_fcntl 55
  3324. +#define __NR_mpx 56
  3325. +#define __NR_setpgid 57
  3326. +#define __NR_ulimit 58
  3327. +#define __NR_oldolduname 59
  3328. +#define __NR_umask 60
  3329. +#define __NR_chroot 61
  3330. +#define __NR_ustat 62
  3331. +#define __NR_dup2 63
  3332. +#define __NR_getppid 64
  3333. +#define __NR_getpgrp 65
  3334. +#define __NR_setsid 66
  3335. +#define __NR_sigaction 67
  3336. +#define __NR_sgetmask 68
  3337. +#define __NR_ssetmask 69
  3338. +#define __NR_setreuid 70
  3339. +#define __NR_setregid 71
  3340. +#define __NR_sigsuspend 72
  3341. +#define __NR_sigpending 73
  3342. +#define __NR_sethostname 74
  3343. +#define __NR_setrlimit 75
  3344. +#define __NR_getrlimit 76
  3345. +#define __NR_getrusage 77
  3346. +#define __NR_gettimeofday 78
  3347. +#define __NR_settimeofday 79
  3348. +#define __NR_getgroups 80
  3349. +#define __NR_setgroups 81
  3350. +#define __NR_select 82
  3351. +#define __NR_symlink 83
  3352. +#define __NR_oldlstat 84
  3353. +#define __NR_readlink 85
  3354. +#define __NR_uselib 86
  3355. +#define __NR_swapon 87
  3356. +#define __NR_reboot 88
  3357. +#define __NR_readdir 89
  3358. +#define __NR_mmap 90
  3359. +#define __NR_munmap 91
  3360. +#define __NR_truncate 92
  3361. +#define __NR_ftruncate 93
  3362. +#define __NR_fchmod 94
  3363. +#define __NR_fchown 95
  3364. +#define __NR_getpriority 96
  3365. +#define __NR_setpriority 97
  3366. +#define __NR_profil 98
  3367. +#define __NR_statfs 99
  3368. +#define __NR_fstatfs 100
  3369. +#define __NR_ioperm 101
  3370. +#define __NR_socketcall 102
  3371. +#define __NR_syslog 103
  3372. +#define __NR_setitimer 104
  3373. +#define __NR_getitimer 105
  3374. +#define __NR_stat 106
  3375. +#define __NR_lstat 107
  3376. +#define __NR_fstat 108
  3377. +#define __NR_olduname 109
  3378. +#define __NR_iopl /* 110 */ not supported
  3379. +#define __NR_vhangup 111
  3380. +#define __NR_idle /* 112 */ Obsolete
  3381. +#define __NR_vm86 /* 113 */ not supported
  3382. +#define __NR_wait4 114
  3383. +#define __NR_swapoff 115
  3384. +#define __NR_sysinfo 116
  3385. +#define __NR_ipc 117
  3386. +#define __NR_fsync 118
  3387. +#define __NR_sigreturn 119
  3388. +#define __NR_clone 120
  3389. +#define __NR_setdomainname 121
  3390. +#define __NR_uname 122
  3391. +#define __NR_cacheflush 123
  3392. +#define __NR_adjtimex 124
  3393. +#define __NR_mprotect 125
  3394. +#define __NR_sigprocmask 126
  3395. +#define __NR_create_module 127
  3396. +#define __NR_init_module 128
  3397. +#define __NR_delete_module 129
  3398. +#define __NR_get_kernel_syms 130
  3399. +#define __NR_quotactl 131
  3400. +#define __NR_getpgid 132
  3401. +#define __NR_fchdir 133
  3402. +#define __NR_bdflush 134
  3403. +#define __NR_sysfs 135
  3404. +#define __NR_personality 136
  3405. +#define __NR_afs_syscall 137 /* Syscall for Andrew File System */
  3406. +#define __NR_setfsuid 138
  3407. +#define __NR_setfsgid 139
  3408. +#define __NR__llseek 140
  3409. +#define __NR_getdents 141
  3410. +#define __NR__newselect 142
  3411. +#define __NR_flock 143
  3412. +#define __NR_msync 144
  3413. +#define __NR_readv 145
  3414. +#define __NR_writev 146
  3415. +#define __NR_getsid 147
  3416. +#define __NR_fdatasync 148
  3417. +#define __NR__sysctl 149
  3418. +#define __NR_mlock 150
  3419. +#define __NR_munlock 151
  3420. +#define __NR_mlockall 152
  3421. +#define __NR_munlockall 153
  3422. +#define __NR_sched_setparam 154
  3423. +#define __NR_sched_getparam 155
  3424. +#define __NR_sched_setscheduler 156
  3425. +#define __NR_sched_getscheduler 157
  3426. +#define __NR_sched_yield 158
  3427. +#define __NR_sched_get_priority_max 159
  3428. +#define __NR_sched_get_priority_min 160
  3429. +#define __NR_sched_rr_get_interval 161
  3430. +#define __NR_nanosleep 162
  3431. +#define __NR_mremap 163
  3432. +#define __NR_setresuid 164
  3433. +#define __NR_getresuid 165
  3434. +#define __NR_getpagesize 166
  3435. +#define __NR_query_module 167
  3436. +#define __NR_poll 168
  3437. +#define __NR_nfsservctl 169
  3438. +#define __NR_setresgid 170
  3439. +#define __NR_getresgid 171
  3440. +#define __NR_prctl 172
  3441. +#define __NR_rt_sigreturn 173
  3442. +#define __NR_rt_sigaction 174
  3443. +#define __NR_rt_sigprocmask 175
  3444. +#define __NR_rt_sigpending 176
  3445. +#define __NR_rt_sigtimedwait 177
  3446. +#define __NR_rt_sigqueueinfo 178
  3447. +#define __NR_rt_sigsuspend 179
  3448. +#define __NR_pread64 180
  3449. +#define __NR_pwrite64 181
  3450. +#define __NR_lchown 182
  3451. +#define __NR_getcwd 183
  3452. +#define __NR_capget 184
  3453. +#define __NR_capset 185
  3454. +#define __NR_sigaltstack 186
  3455. +#define __NR_sendfile 187
  3456. +#define __NR_getpmsg 188 /* some people actually want streams */
  3457. +#define __NR_putpmsg 189 /* some people actually want streams */
  3458. +#define __NR_vfork 190
  3459. +#define __NR_ugetrlimit 191
  3460. +#define __NR_mmap2 192
  3461. +#define __NR_truncate64 193
  3462. +#define __NR_ftruncate64 194
  3463. +#define __NR_stat64 195
  3464. +#define __NR_lstat64 196
  3465. +#define __NR_fstat64 197
  3466. +#define __NR_chown32 198
  3467. +#define __NR_getuid32 199
  3468. +#define __NR_getgid32 200
  3469. +#define __NR_geteuid32 201
  3470. +#define __NR_getegid32 202
  3471. +#define __NR_setreuid32 203
  3472. +#define __NR_setregid32 204
  3473. +#define __NR_getgroups32 205
  3474. +#define __NR_setgroups32 206
  3475. +#define __NR_fchown32 207
  3476. +#define __NR_setresuid32 208
  3477. +#define __NR_getresuid32 209
  3478. +#define __NR_setresgid32 210
  3479. +#define __NR_getresgid32 211
  3480. +#define __NR_lchown32 212
  3481. +#define __NR_setuid32 213
  3482. +#define __NR_setgid32 214
  3483. +#define __NR_setfsuid32 215
  3484. +#define __NR_setfsgid32 216
  3485. +#define __NR_pivot_root 217
  3486. +#define __NR_getdents64 220
  3487. +#define __NR_gettid 221
  3488. +#define __NR_tkill 222
  3489. +#define __NR_setxattr 223
  3490. +#define __NR_lsetxattr 224
  3491. +#define __NR_fsetxattr 225
  3492. +#define __NR_getxattr 226
  3493. +#define __NR_lgetxattr 227
  3494. +#define __NR_fgetxattr 228
  3495. +#define __NR_listxattr 229
  3496. +#define __NR_llistxattr 230
  3497. +#define __NR_flistxattr 231
  3498. +#define __NR_removexattr 232
  3499. +#define __NR_lremovexattr 233
  3500. +#define __NR_fremovexattr 234
  3501. +#define __NR_futex 235
  3502. +#define __NR_sendfile64 236
  3503. +#define __NR_mincore 237
  3504. +#define __NR_madvise 238
  3505. +#define __NR_fcntl64 239
  3506. +#define __NR_readahead 240
  3507. +#define __NR_io_setup 241
  3508. +#define __NR_io_destroy 242
  3509. +#define __NR_io_getevents 243
  3510. +#define __NR_io_submit 244
  3511. +#define __NR_io_cancel 245
  3512. +#define __NR_fadvise64 246
  3513. +#define __NR_exit_group 247
  3514. +#define __NR_lookup_dcookie 248
  3515. +#define __NR_epoll_create 249
  3516. +#define __NR_epoll_ctl 250
  3517. +#define __NR_epoll_wait 251
  3518. +#define __NR_remap_file_pages 252
  3519. +#define __NR_set_tid_address 253
  3520. +#define __NR_timer_create 254
  3521. +#define __NR_timer_settime 255
  3522. +#define __NR_timer_gettime 256
  3523. +#define __NR_timer_getoverrun 257
  3524. +#define __NR_timer_delete 258
  3525. +#define __NR_clock_settime 259
  3526. +#define __NR_clock_gettime 260
  3527. +#define __NR_clock_getres 261
  3528. +#define __NR_clock_nanosleep 262
  3529. +#define __NR_statfs64 263
  3530. +#define __NR_fstatfs64 264
  3531. +#define __NR_tgkill 265
  3532. +#define __NR_utimes 266
  3533. +#define __NR_fadvise64_64 267
  3534. +#define __NR_mbind 268
  3535. +#define __NR_get_mempolicy 269
  3536. +#define __NR_set_mempolicy 270
  3537. +#define __NR_mq_open 271
  3538. +#define __NR_mq_unlink 272
  3539. +#define __NR_mq_timedsend 273
  3540. +#define __NR_mq_timedreceive 274
  3541. +#define __NR_mq_notify 275
  3542. +#define __NR_mq_getsetattr 276
  3543. +#define __NR_waitid 277
  3544. +#define __NR_vserver 278
  3545. +#define __NR_add_key 279
  3546. +#define __NR_request_key 280
  3547. +#define __NR_keyctl 281
  3548. +#define __NR_ioprio_set 282
  3549. +#define __NR_ioprio_get 283
  3550. +#define __NR_inotify_init 284
  3551. +#define __NR_inotify_add_watch 285
  3552. +#define __NR_inotify_rm_watch 286
  3553. +#define __NR_migrate_pages 287
  3554. +#define __NR_openat 288
  3555. +#define __NR_mkdirat 289
  3556. +#define __NR_mknodat 290
  3557. +#define __NR_fchownat 291
  3558. +#define __NR_futimesat 292
  3559. +#define __NR_fstatat64 293
  3560. +#define __NR_unlinkat 294
  3561. +#define __NR_renameat 295
  3562. +#define __NR_linkat 296
  3563. +#define __NR_symlinkat 297
  3564. +#define __NR_readlinkat 298
  3565. +#define __NR_fchmodat 299
  3566. +#define __NR_faccessat 300
  3567. +#define __NR_pselect6 301
  3568. +#define __NR_ppoll 302
  3569. +#define __NR_unshare 303
  3570. +#define __NR_set_robust_list 304
  3571. +#define __NR_get_robust_list 305
  3572. +#define __NR_splice 306
  3573. +#define __NR_sync_file_range 307
  3574. +#define __NR_tee 308
  3575. +#define __NR_vmsplice 309
  3576. +#define __NR_move_pages 310
  3577. +#define __NR_sched_setaffinity 311
  3578. +#define __NR_sched_getaffinity 312
  3579. +#define __NR_kexec_load 313
  3580. +#define __NR_getcpu 314
  3581. +#define __NR_epoll_pwait 315
  3582. +#define __NR_utimensat 316
  3583. +#define __NR_signalfd 317
  3584. +#define __NR_timerfd_create 318
  3585. +#define __NR_eventfd 319
  3586. +#define __NR_fallocate 320
  3587. +#define __NR_timerfd_settime 321
  3588. +#define __NR_timerfd_gettime 322
  3589. +#define __NR_signalfd4 323
  3590. +#define __NR_eventfd2 324
  3591. +#define __NR_epoll_create1 325
  3592. +#define __NR_dup3 326
  3593. +#define __NR_pipe2 327
  3594. +#define __NR_inotify_init1 328
  3595. +
  3596. +#ifdef __KERNEL__
  3597. +
  3598. +#define NR_syscalls 329
  3599. +
  3600. +#define __ARCH_WANT_IPC_PARSE_VERSION
  3601. +#define __ARCH_WANT_OLD_READDIR
  3602. +#define __ARCH_WANT_OLD_STAT
  3603. +#define __ARCH_WANT_STAT64
  3604. +#define __ARCH_WANT_SYS_ALARM
  3605. +#define __ARCH_WANT_SYS_GETHOSTNAME
  3606. +#define __ARCH_WANT_SYS_PAUSE
  3607. +#define __ARCH_WANT_SYS_SGETMASK
  3608. +#define __ARCH_WANT_SYS_SIGNAL
  3609. +#define __ARCH_WANT_SYS_TIME
  3610. +#define __ARCH_WANT_SYS_UTIME
  3611. +#define __ARCH_WANT_SYS_WAITPID
  3612. +#define __ARCH_WANT_SYS_SOCKETCALL
  3613. +#define __ARCH_WANT_SYS_FADVISE64
  3614. +#define __ARCH_WANT_SYS_GETPGRP
  3615. +#define __ARCH_WANT_SYS_LLSEEK
  3616. +#define __ARCH_WANT_SYS_NICE
  3617. +#define __ARCH_WANT_SYS_OLD_GETRLIMIT
  3618. +#define __ARCH_WANT_SYS_OLDUMOUNT
  3619. +#define __ARCH_WANT_SYS_SIGPENDING
  3620. +#define __ARCH_WANT_SYS_SIGPROCMASK
  3621. +#define __ARCH_WANT_SYS_RT_SIGACTION
  3622. +
  3623. +/*
  3624. + * "Conditional" syscalls
  3625. + *
  3626. + * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
  3627. + * but it doesn't work on all toolchains, so we just do it by hand
  3628. + */
  3629. +//#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
  3630. +#define cond_syscall(x) long x(void) __attribute__((weak,alias("sys_ni_syscall")))
  3631. +#endif /* __KERNEL__ */
  3632. +
  3633. +#endif /* _ASM_UBICOM32_UNISTD_H */
  3634. --- /dev/null
  3635. +++ b/arch/ubicom32/include/asm/user.h
  3636. @@ -0,0 +1,82 @@
  3637. +/*
  3638. + * arch/ubicom32/include/asm/user.h
  3639. + * Ubicom32 architecture core file definitions.
  3640. + *
  3641. + * (C) Copyright 2009, Ubicom, Inc.
  3642. + *
  3643. + * This file is part of the Ubicom32 Linux Kernel Port.
  3644. + *
  3645. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  3646. + * it and/or modify it under the terms of the GNU General Public License
  3647. + * as published by the Free Software Foundation, either version 2 of the
  3648. + * License, or (at your option) any later version.
  3649. + *
  3650. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  3651. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  3652. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  3653. + * the GNU General Public License for more details.
  3654. + *
  3655. + * You should have received a copy of the GNU General Public License
  3656. + * along with the Ubicom32 Linux Kernel Port. If not,
  3657. + * see <http://www.gnu.org/licenses/>.
  3658. + *
  3659. + * Ubicom32 implementation derived from (with many thanks):
  3660. + * arch/m68knommu
  3661. + * arch/blackfin
  3662. + * arch/parisc
  3663. + */
  3664. +#ifndef _ASM_UBICOM32_USER_H
  3665. +#define _ASM_UBICOM32_USER_H
  3666. +
  3667. +#include <asm/ptrace.h>
  3668. +#include <asm/page.h>
  3669. +/*
  3670. + * Adapted from <asm-powerpc/user.h>
  3671. + *
  3672. + * Core file format: The core file is written in such a way that gdb
  3673. + * can understand it and provide useful information to the user (under
  3674. + * linux we use the `trad-core' bfd, NOT the osf-core). The file contents
  3675. + * are as follows:
  3676. + *
  3677. + * upage: 1 page consisting of a user struct that tells gdb
  3678. + * what is present in the file. Directly after this is a
  3679. + * copy of the task_struct, which is currently not used by gdb,
  3680. + * but it may come in handy at some point. All of the registers
  3681. + * are stored as part of the upage. The upage should always be
  3682. + * only one page long.
  3683. + * data: The data segment follows next. We use current->end_text to
  3684. + * current->brk to pick up all of the user variables, plus any memory
  3685. + * that may have been sbrk'ed. No attempt is made to determine if a
  3686. + * page is demand-zero or if a page is totally unused, we just cover
  3687. + * the entire range. All of the addresses are rounded in such a way
  3688. + * that an integral number of pages is written.
  3689. + * stack: We need the stack information in order to get a meaningful
  3690. + * backtrace. We need to write the data from usp to
  3691. + * current->start_stack, so we round each of these in order to be able
  3692. + * to write an integer number of pages.
  3693. + */
  3694. +
  3695. +struct user_ubicom32fp_struct {
  3696. +};
  3697. +
  3698. +struct user {
  3699. + struct pt_regs regs; /* entire machine state */
  3700. + size_t u_tsize; /* text size (pages) */
  3701. + size_t u_dsize; /* data size (pages) */
  3702. + size_t u_ssize; /* stack size (pages) */
  3703. + unsigned long start_code; /* text starting address */
  3704. + unsigned long start_data; /* data starting address */
  3705. + unsigned long start_stack; /* stack starting address */
  3706. + long int signal; /* signal causing core dump */
  3707. + unsigned long u_ar0; /* help gdb find registers */
  3708. + unsigned long magic; /* identifies a core file */
  3709. + char u_comm[32]; /* user command name */
  3710. +};
  3711. +
  3712. +#define NBPG PAGE_SIZE
  3713. +#define UPAGES 1
  3714. +#define HOST_TEXT_START_ADDR (u.start_code)
  3715. +#define HOST_DATA_START_ADDR (u.start_data)
  3716. +#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG)
  3717. +
  3718. +#endif /* _ASM_UBICOM32_USER_H */
  3719. --- /dev/null
  3720. +++ b/arch/ubicom32/include/asm/xor.h
  3721. @@ -0,0 +1,33 @@
  3722. +/*
  3723. + * arch/ubicom32/include/asm/xor.h
  3724. + * Generic xor.h definitions for Ubicom32 architecture.
  3725. + *
  3726. + * (C) Copyright 2009, Ubicom, Inc.
  3727. + *
  3728. + * This file is part of the Ubicom32 Linux Kernel Port.
  3729. + *
  3730. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  3731. + * it and/or modify it under the terms of the GNU General Public License
  3732. + * as published by the Free Software Foundation, either version 2 of the
  3733. + * License, or (at your option) any later version.
  3734. + *
  3735. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  3736. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  3737. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  3738. + * the GNU General Public License for more details.
  3739. + *
  3740. + * You should have received a copy of the GNU General Public License
  3741. + * along with the Ubicom32 Linux Kernel Port. If not,
  3742. + * see <http://www.gnu.org/licenses/>.
  3743. + *
  3744. + * Ubicom32 implementation derived from (with many thanks):
  3745. + * arch/m68knommu
  3746. + * arch/blackfin
  3747. + * arch/parisc
  3748. + */
  3749. +#ifndef _ASM_UBICOM32_XOR_H
  3750. +#define _ASM_UBICOM32_XOR_H
  3751. +
  3752. +#include <asm-generic/xor.h>
  3753. +
  3754. +#endif /* _ASM_UBICOM32_XOR_H */
  3755. --- /dev/null
  3756. +++ b/arch/ubicom32/Kconfig
  3757. @@ -0,0 +1,455 @@
  3758. +#
  3759. +# For a description of the syntax of this configuration file,
  3760. +# see Documentation/kbuild/kconfig-language.txt.
  3761. +#
  3762. +
  3763. +mainmenu "uClinux/ubicom32 (w/o MMU) Kernel Configuration"
  3764. +
  3765. +config RAMBASE
  3766. + hex
  3767. + default "0x40000000"
  3768. + help
  3769. + Define the address that RAM starts at.
  3770. +
  3771. +config UBICOM32
  3772. + bool
  3773. + select HAVE_OPROFILE
  3774. + default y
  3775. +
  3776. +config RAMKERNEL
  3777. + bool
  3778. + default y
  3779. +
  3780. +config CPU_BIG_ENDIAN
  3781. + bool
  3782. + default y
  3783. +
  3784. +config FORCE_MAX_ZONEORDER
  3785. + int
  3786. + default "14"
  3787. +
  3788. +config HAVE_CLK
  3789. + bool
  3790. + default y
  3791. +
  3792. +config MMU
  3793. + bool
  3794. + default n
  3795. +
  3796. +config FPU
  3797. + bool
  3798. + default n
  3799. +
  3800. +config ZONE_DMA
  3801. + bool
  3802. + default y
  3803. +
  3804. +config RWSEM_GENERIC_SPINLOCK
  3805. + bool
  3806. + default y
  3807. +
  3808. +config RWSEM_XCHGADD_ALGORITHM
  3809. + bool
  3810. + default n
  3811. +
  3812. +config ARCH_HAS_ILOG2_U32
  3813. + bool
  3814. + default n
  3815. +
  3816. +config ARCH_HAS_ILOG2_U64
  3817. + bool
  3818. + default n
  3819. +
  3820. +config GENERIC_FIND_NEXT_BIT
  3821. + bool
  3822. + default y
  3823. +
  3824. +config GENERIC_GPIO
  3825. + bool
  3826. + default y
  3827. +
  3828. +config GPIOLIB
  3829. + bool
  3830. + default y
  3831. +
  3832. +config GENERIC_HWEIGHT
  3833. + bool
  3834. + default y
  3835. +
  3836. +config GENERIC_HARDIRQS
  3837. + bool
  3838. + default y
  3839. +
  3840. +config STACKTRACE_SUPPORT
  3841. + bool
  3842. + default y
  3843. +
  3844. +config LOCKDEP_SUPPORT
  3845. + bool
  3846. + default y
  3847. +
  3848. +config GENERIC_CALIBRATE_DELAY
  3849. + bool
  3850. + default y
  3851. +
  3852. +config GENERIC_TIME
  3853. + bool
  3854. + default y
  3855. +
  3856. +config TIME_LOW_RES
  3857. + bool
  3858. + default y
  3859. +
  3860. +config GENERIC_CLOCKEVENTS
  3861. + bool
  3862. + default y
  3863. +
  3864. +config GENERIC_CLOCKEVENTS_BROADCAST
  3865. + bool
  3866. + depends on GENERIC_CLOCKEVENTS
  3867. + default y if SMP && !LOCAL_TIMERS
  3868. +
  3869. +config NO_IOPORT
  3870. + def_bool y
  3871. +
  3872. +config ARCH_SUPPORTS_AOUT
  3873. + def_bool y
  3874. +
  3875. +config IRQ_PER_CPU
  3876. + bool
  3877. + default y
  3878. +
  3879. +config SCHED_NO_NO_OMIT_FRAME_POINTER
  3880. + bool
  3881. + default y
  3882. +
  3883. +menu "Processor type and features"
  3884. +
  3885. +config BRD_32MB
  3886. + bool
  3887. + depends on IP5160EVAL
  3888. + help
  3889. + Board has 32MB of RAM on it. It is a hidden option used to select default for size of RAM
  3890. + default n
  3891. +
  3892. +config BRD_64MB
  3893. + bool
  3894. + depends on IP7145DPF || IP7160RGW || IP7160BRINGUP || IP7160DPF || IP5170DPF || IP5160DEV
  3895. + help
  3896. + Board has 64MB of RAM on it. It is a hidden option used to select default for size of RAM
  3897. + default n
  3898. +
  3899. +config BRD_128MB
  3900. + bool
  3901. + depends on IP7500MODULE || IP7500AV || IP7500MEDIA
  3902. + help
  3903. + Board has 128MB of RAM on it. It is a hidden option used to select default for size of RAM
  3904. + default n
  3905. +
  3906. +comment "Processor type will be selected by Board"
  3907. +
  3908. +config UBICOM32_V3
  3909. + bool
  3910. + help
  3911. + Ubicom IP5xxx series processor support.
  3912. +
  3913. +config UBICOM32_V4
  3914. + bool
  3915. + help
  3916. + Ubicom IP7xxx series processor support.
  3917. +
  3918. +comment "Board"
  3919. +choice
  3920. + prompt "Board type"
  3921. + help
  3922. + Select your board.
  3923. +
  3924. +config NOBOARD
  3925. + bool "No board selected"
  3926. + help
  3927. + Default. Don't select any board specific config. Will not build unless you change!
  3928. +
  3929. +# Add your boards here
  3930. +source "arch/ubicom32/mach-ip5k/Kconfig"
  3931. +source "arch/ubicom32/mach-ip7k/Kconfig"
  3932. +
  3933. +endchoice
  3934. +
  3935. +comment "Kernel Options"
  3936. +config SMP
  3937. + bool "Symmetric multi-processing support"
  3938. + select USE_GENERIC_SMP_HELPERS
  3939. + default n
  3940. + help
  3941. + Enables multithreading support. Enabling SMP support increases
  3942. + the size of system data structures. SMP support can have either
  3943. + positive or negative impact on performance depending on workloads.
  3944. +
  3945. + If you do not know what to do here, say N.
  3946. +
  3947. +config NR_CPUS
  3948. + int "Number of configured CPUs"
  3949. + range 2 32
  3950. + default 2
  3951. + depends on SMP
  3952. + help
  3953. + Upper bound on the number of CPUs. Space is reserved
  3954. + at compile time for this many CPUs.
  3955. +
  3956. +config LOCAL_TIMERS
  3957. + bool "Use local timer interrupts"
  3958. + depends on SMP
  3959. + default y
  3960. + help
  3961. + Enable support for local timers on SMP platforms, rather then the
  3962. + legacy IPI broadcast method. Local timers allows the system
  3963. + accounting to be spread across the timer interval, preventing a
  3964. + "thundering herd" at every timer tick. A physical timer is allocated
  3965. + per cpu.
  3966. +
  3967. +config TIMER_EXTRA_ALLOC
  3968. + int "Number of additional physical timer events to create"
  3969. + depends on GENERIC_CLOCKEVENTS
  3970. + default 0
  3971. + help
  3972. + The Ubicom32 processor has a number of event timers that can be wrapped
  3973. + in Linux clock event structures (assuming that the timers are not being
  3974. + used for another purpose). Based on the value of LOCAL_TIMERS, either
  3975. + 2 timers will be used or a timer will be used for every CPU. This value
  3976. + allows the programmer to select additional timers over that amount.
  3977. +
  3978. +config IRQSTACKS
  3979. + bool "Create separate stacks for interrupt handling"
  3980. + default n
  3981. + help
  3982. + Selecting this causes interrupts to be created on a separate
  3983. + stack instead of nesting the interrupts on the kernel stack.
  3984. +
  3985. +config IRQSTACKS_USEOCM
  3986. + bool "Use OCM for interrupt stacks"
  3987. + default n
  3988. + depends on IRQSTACKS
  3989. + help
  3990. + Selecting this cause the interrupt stacks to be placed in OCM
  3991. + reducing cache misses at the expense of using the OCM for servicing
  3992. + interrupts.
  3993. +
  3994. +menu "OCM Instruction Heap"
  3995. +
  3996. +config OCM_MODULES_RESERVATION
  3997. + int "OCM Instruction heap reservation. 0-192 kB"
  3998. + range 0 192
  3999. + default "0"
  4000. + help
  4001. + The minimum amount of OCM memory to reserve for kernel loadable module
  4002. + code. If you are not using this memory it cannot be used for anything
  4003. + else. Leave it as 0 if you have prebuilt modules that are compiled with
  4004. + OCM support.
  4005. +
  4006. +config OCM_MODULES_MAY_CONSUME_REMAINING_CODESPACE
  4007. + bool "Give all unused ocm code space to the ocm instruction heap."
  4008. + default n
  4009. + help
  4010. + Allow the OCM instruction heap allocation to consume any remaining
  4011. + unused OCM code space. The result of this is that you will not have
  4012. + and deterministic results, but you will not have any waste either.
  4013. +
  4014. +config OCM_MODULES_FALLBACK_TO_DDR
  4015. + bool "Loadable Modules requiring OCM may fallback to use DDR."
  4016. + default n
  4017. + help
  4018. + If a module cannot get the OCM code it requires allow DDR to
  4019. + be used instead.
  4020. +endmenu
  4021. +
  4022. +config HZ
  4023. + int "Frequency of 'jiffies' (for polling)"
  4024. + default 1000
  4025. + help
  4026. + 100 is common for embedded systems, but 1000 allows
  4027. + you to do more drivers without actually having
  4028. + interrupts working properly.
  4029. +
  4030. +comment "RAM configuration"
  4031. +
  4032. +if BRD_32MB
  4033. +
  4034. +config RAMSIZE
  4035. + hex "Size of RAM (in bytes)"
  4036. + range 0x00000000 0x02000000
  4037. + default "0x02000000"
  4038. + help
  4039. + Define the size of the system RAM. If you select 0 then the
  4040. + kernel will try to probe the RAM size at runtime. This is not
  4041. + supported on all CPU types.
  4042. +
  4043. +endif
  4044. +
  4045. +if BRD_64MB
  4046. +
  4047. +config RAMSIZE
  4048. + hex "Size of RAM (in bytes)"
  4049. + range 0x00000000 0x04000000
  4050. + default "0x04000000"
  4051. + help
  4052. + Define the size of the system RAM. If you select 0 then the
  4053. + kernel will try to probe the RAM size at runtime. This is not
  4054. + supported on all CPU types.
  4055. +
  4056. +endif
  4057. +
  4058. +if BRD_128MB
  4059. +
  4060. +config RAMSIZE
  4061. + hex "Size of RAM (in bytes)"
  4062. + range 0x00000000 0x08000000
  4063. + default "0x08000000"
  4064. + help
  4065. + Define the size of the system RAM. If you select 0 then the
  4066. + kernel will try to probe the RAM size at runtime. This is not
  4067. + supported on all CPU types.
  4068. +
  4069. +endif
  4070. +
  4071. +config KERNELBASE
  4072. + hex "Address of the base of kernel code"
  4073. + default "0x40400000"
  4074. + help
  4075. + For the time being we are going to start the Kernel at a 4 meg offset.
  4076. +
  4077. +comment "Build options"
  4078. +config LINKER_RELAXATION
  4079. + bool "Linker Relaxation"
  4080. + default y
  4081. + help
  4082. + Turns on linker relaxation that will produce smaller
  4083. + faster code. Increases link time.
  4084. +
  4085. +comment "Driver options"
  4086. +menu "PCI Bus"
  4087. +config PCI
  4088. + bool "PCI bus"
  4089. + default true
  4090. + help
  4091. + Enable/Disable PCI bus
  4092. + source "drivers/pci/Kconfig"
  4093. +
  4094. +
  4095. +config PCI_DEV0_IDSEL
  4096. + hex "slot 0 address"
  4097. + depends on PCI
  4098. + default "0x01000000"
  4099. + help
  4100. + Slot 0 address. This address should correspond to the address line
  4101. + which the IDSEL bit for this slot is connected to.
  4102. +
  4103. +config PCI_DEV1_IDSEL
  4104. + hex "slot 1 address"
  4105. + depends on PCI
  4106. + default "0x02000000"
  4107. + help
  4108. + Slot 1 address. This address should correspond to the address line
  4109. + which the IDSEL bit for this slot is connected to.
  4110. +endmenu
  4111. +# End PCI
  4112. +
  4113. +menu "Input devices"
  4114. +config UBICOM_INPUT
  4115. + bool "Ubicom polled GPIO input driver"
  4116. + select INPUT
  4117. + select INPUT_POLLDEV
  4118. + help
  4119. + Polling input driver, much like the GPIO input driver, except that it doesn't
  4120. + rely on interrupts. It will report events via the input subsystem.
  4121. + default n
  4122. +
  4123. +config UBICOM_INPUT_I2C
  4124. + bool "Ubicom polled GPIO input driver over I2C"
  4125. + select INPUT
  4126. + select INPUT_POLLDEV
  4127. + help
  4128. + Polling input driver, much like the PCA953x driver, it can support a variety of
  4129. + different I2C I/O expanders. This device polls the I2C I/O expander for events
  4130. + and reports them via the input subsystem.
  4131. + default n
  4132. +endmenu
  4133. +# Input devices
  4134. +
  4135. +menu "Misc devices"
  4136. +config UBICOM_HID
  4137. + bool "Ubicom HID driver"
  4138. + select INPUT
  4139. + select INPUT_POLLDEV
  4140. + select LCD_CLASS_DEVICE
  4141. + help
  4142. + Driver for HID chip found on some Ubicom reference designs. This chip handles
  4143. + PWM, button input, and IR remote control. It registers as an input device and
  4144. + a backlight device.
  4145. + default n
  4146. +endmenu
  4147. +# Misc devices
  4148. +
  4149. +config CMDLINE_BOOL
  4150. + bool "Built-in kernel command line"
  4151. + default n
  4152. + help
  4153. + Allow for specifying boot arguments to the kernel at
  4154. + build time. On some systems (e.g. embedded ones), it is
  4155. + necessary or convenient to provide some or all of the
  4156. + kernel boot arguments with the kernel itself (that is,
  4157. + to not rely on the boot loader to provide them.)
  4158. +
  4159. + To compile command line arguments into the kernel,
  4160. + set this option to 'Y', then fill in the
  4161. + the boot arguments in CONFIG_CMDLINE.
  4162. +
  4163. + Systems with fully functional boot loaders (i.e. non-embedded)
  4164. + should leave this option set to 'N'.
  4165. +
  4166. +config CMDLINE
  4167. + string "Built-in kernel command string"
  4168. + depends on CMDLINE_BOOL
  4169. + default ""
  4170. + help
  4171. + Enter arguments here that should be compiled into the kernel
  4172. + image and used at boot time. If the boot loader provides a
  4173. + command line at boot time, it is appended to this string to
  4174. + form the full kernel command line, when the system boots.
  4175. +
  4176. + However, you can use the CONFIG_CMDLINE_OVERRIDE option to
  4177. + change this behavior.
  4178. +
  4179. + In most cases, the command line (whether built-in or provided
  4180. + by the boot loader) should specify the device for the root
  4181. + file system.
  4182. +
  4183. +config CMDLINE_OVERRIDE
  4184. + bool "Built-in command line overrides boot loader arguments"
  4185. + default n
  4186. + depends on CMDLINE_BOOL
  4187. + help
  4188. + Set this option to 'Y' to have the kernel ignore the boot loader
  4189. + command line, and use ONLY the built-in command line.
  4190. +
  4191. + This is used to work around broken boot loaders. This should
  4192. + be set to 'N' under normal conditions.
  4193. +
  4194. +endmenu
  4195. +# End Processor type and features
  4196. +
  4197. +source "arch/ubicom32/Kconfig.debug"
  4198. +
  4199. +menu "Executable file formats"
  4200. +source "fs/Kconfig.binfmt"
  4201. +endmenu
  4202. +
  4203. +source "init/Kconfig"
  4204. +source "kernel/Kconfig.preempt"
  4205. +source "kernel/time/Kconfig"
  4206. +source "mm/Kconfig"
  4207. +source "net/Kconfig"
  4208. +source "drivers/Kconfig"
  4209. +source "fs/Kconfig"
  4210. +source "security/Kconfig"
  4211. +source "crypto/Kconfig"
  4212. +source "lib/Kconfig"
  4213. --- /dev/null
  4214. +++ b/arch/ubicom32/Kconfig.debug
  4215. @@ -0,0 +1,117 @@
  4216. +menu "Kernel hacking"
  4217. +
  4218. +config TRACE_IRQFLAGS_SUPPORT
  4219. + def_bool y
  4220. +
  4221. +config PROTECT_KERNEL
  4222. + default y
  4223. + bool 'Enable Kernel range register Protection'
  4224. + help
  4225. + Adds code to enable/disable range registers to protect static
  4226. + kernel code/data from userspace. Currently the ranges covered
  4227. + do no protect kernel loadable modules or dynamically allocated
  4228. + kernel data.
  4229. +
  4230. +config NO_KERNEL_MSG
  4231. + bool "Suppress Kernel BUG Messages"
  4232. + help
  4233. + Do not output any debug BUG messages within the kernel.
  4234. +
  4235. +config EARLY_PRINTK
  4236. + bool "Use the driver that you selected as console also for early printk (to debug kernel bootup)."
  4237. + default n
  4238. + help
  4239. + If you want to use the serdes driver (console=ttyUS0) for
  4240. + early printk, you must also supply an additional kernel boot
  4241. + parameter like this:
  4242. +
  4243. + serdes=ioportaddr,irq,clockrate,baud
  4244. +
  4245. + For an IP7160RGW eval board, you could use this:
  4246. +
  4247. + serdes=0x2004000,61,250000000,57600
  4248. +
  4249. + which will let you see early printk output at 57600 baud.
  4250. +
  4251. +config STOP_ON_TRAP
  4252. + bool "Enable stopping at the LDSR for all traps"
  4253. + default n
  4254. + help
  4255. + Cause the LDSR to stop all threads whenever a trap is about to be serviced
  4256. +
  4257. +config STOP_ON_BUG
  4258. + bool "Enable stopping on failed BUG_ON()"
  4259. + default n
  4260. + help
  4261. + Cause all BUG_ON failures to stop all threads
  4262. +
  4263. +config DEBUG_IRQMEASURE
  4264. + bool "Enable IRQ handler measurements"
  4265. + default n
  4266. + help
  4267. + When enabled each IRQ's min/avg/max times will be printed. If the handler
  4268. + re-enables interrupt, the times will show the full time including to service
  4269. + nested interrupts. See /proc/irq_measurements.
  4270. +
  4271. +config DEBUG_PCIMEASURE
  4272. + bool "Enable PCI transaction measurements"
  4273. + default n
  4274. + help
  4275. + When enabled the system will measure the min/avg/max timer for each PCI transactions.
  4276. + See /proc/pci_measurements.
  4277. +
  4278. +config ACCESS_OK_CHECKS_ENABLED
  4279. + bool "Enable user space access checks"
  4280. + default n
  4281. + help
  4282. + Enabling this check causes the kernel to verify that addresses passed
  4283. + to the kernel by the user space code are within the processes
  4284. + address space. On a no-mmu system, this is done by examining the
  4285. + processes memory data structures (adversly affecting performance) but
  4286. + ensuring that a process does not ask the kernel to violate another
  4287. + processes address space. Sadly, the kernel uses access_ok() for
  4288. + address that are in the kernel which results in a large volume of
  4289. + false positives.
  4290. +
  4291. +choice
  4292. + prompt "Unaligned Access Support"
  4293. + default UNALIGNED_ACCESS_ENABLED
  4294. + help
  4295. + Kernel / Userspace unaligned access handling.
  4296. +
  4297. +config UNALIGNED_ACCESS_ENABLED
  4298. + bool "Kernel and Userspace"
  4299. + help
  4300. +
  4301. +config UNALIGNED_ACCESS_USERSPACE_ONLY
  4302. + bool "Userspace Only"
  4303. + help
  4304. +
  4305. +config UNALIGNED_ACCESS_DISABLED
  4306. + bool "Disabled"
  4307. + help
  4308. +
  4309. +endchoice
  4310. +
  4311. +config DEBUG_STACKOVERFLOW
  4312. + bool "Check for stack overflows"
  4313. + default n
  4314. + depends on DEBUG_KERNEL
  4315. + help
  4316. + This option will cause messages to be printed if free kernel stack space
  4317. + drops below a certain limit (THREAD_SIZE /8).
  4318. +
  4319. +config DEBUG_STACK_USAGE
  4320. + bool "Stack utilization instrumentation"
  4321. + default n
  4322. + depends on DEBUG_KERNEL
  4323. + help
  4324. + Enables the display of the minimum amount of free kernel stack which each
  4325. + task has ever had available in the sysrq-T and sysrq-P debug output.
  4326. +
  4327. + This option will slow down process creation somewhat.
  4328. +
  4329. +source "lib/Kconfig.debug"
  4330. +
  4331. +endmenu
  4332. +
  4333. --- /dev/null
  4334. +++ b/arch/ubicom32/Makefile
  4335. @@ -0,0 +1,103 @@
  4336. +#
  4337. +# arch/ubicom32/Makefile
  4338. +# <TODO: Replace with short file description>
  4339. +#
  4340. +# (C) Copyright 2009, Ubicom, Inc.
  4341. +#
  4342. +# This file is part of the Ubicom32 Linux Kernel Port.
  4343. +#
  4344. +# The Ubicom32 Linux Kernel Port is free software: you can redistribute
  4345. +# it and/or modify it under the terms of the GNU General Public License
  4346. +# as published by the Free Software Foundation, either version 2 of the
  4347. +# License, or (at your option) any later version.
  4348. +#
  4349. +# The Ubicom32 Linux Kernel Port is distributed in the hope that it
  4350. +# will be useful, but WITHOUT ANY WARRANTY; without even the implied
  4351. +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  4352. +# the GNU General Public License for more details.
  4353. +#
  4354. +# You should have received a copy of the GNU General Public License
  4355. +# along with the Ubicom32 Linux Kernel Port. If not,
  4356. +# see <http://www.gnu.org/licenses/>.
  4357. +#
  4358. +# Ubicom32 implementation derived from (with many thanks):
  4359. +# arch/m68knommu
  4360. +# arch/blackfin
  4361. +# arch/parisc
  4362. +#
  4363. +
  4364. +KBUILD_DEFCONFIG :=
  4365. +
  4366. +# setup the machine name and machine dependent settings
  4367. +machine-$(CONFIG_UBICOM32_V3) := ip5k
  4368. +machine-$(CONFIG_UBICOM32_V4) := ip7k
  4369. +MACHINE := $(machine-y)
  4370. +export MACHINE
  4371. +
  4372. +model-$(CONFIG_RAMKERNEL) := ram
  4373. +model-$(CONFIG_ROMKERNEL) := rom
  4374. +MODEL := $(model-y)
  4375. +export MODEL
  4376. +
  4377. +CPUCLASS := $(cpuclass-y)
  4378. +
  4379. +export CPUCLASS
  4380. +
  4381. +#
  4382. +# We want the core kernel built using the fastcall ABI but modules need
  4383. +# to be built using the slower calling convention because they could be
  4384. +# loaded out of range for fast calls.
  4385. +#
  4386. +CFLAGS_KERNEL += -mfastcall
  4387. +CFLAGS_MODULE += -mno-fastcall
  4388. +
  4389. +#
  4390. +# Some CFLAG additions based on specific CPU type.
  4391. +#
  4392. +cflags-$(CONFIG_UBICOM32_V3) := -march=ubicom32v3 -mno-fdpic -DIP5000
  4393. +cflags-$(CONFIG_UBICOM32_V4) := -march=ubicom32v4 -mno-fdpic -DIP7000
  4394. +
  4395. +ldflags-$(CONFIG_LINKER_RELAXATION) := --relax
  4396. +LDFLAGS_vmlinux := $(ldflags-y)
  4397. +
  4398. +GCCLIBDIR := $(dir $(shell $(CC) $(cflags-y) -print-libgcc-file-name))
  4399. +
  4400. +KBUILD_CFLAGS += $(cflags-y) -ffunction-sections
  4401. +KBUILD_AFLAGS += $(cflags-y)
  4402. +
  4403. +KBUILD_CFLAGS += -D__linux__ -Dlinux
  4404. +KBUILD_CFLAGS += -DUTS_SYSNAME=\"uClinux\"
  4405. +
  4406. +# include any machine specific directory
  4407. +ifneq ($(machine-y),)
  4408. +core-y += arch/$(ARCH)/mach-$(MACHINE)/
  4409. +endif
  4410. +
  4411. +head-y := arch/$(ARCH)/kernel/head.o
  4412. +
  4413. +core-y += arch/$(ARCH)/kernel/ \
  4414. + arch/$(ARCH)/mm/ \
  4415. + arch/$(ARCH)/crypto/ \
  4416. + arch/$(ARCH)/mach-common/
  4417. +
  4418. +drivers-$(CONFIG_OPROFILE) += arch/ubicom32/oprofile/
  4419. +
  4420. +libs-y += arch/$(ARCH)/lib/
  4421. +
  4422. +archclean:
  4423. +
  4424. +# make sure developer has selected a valid board
  4425. +ifeq ($(CONFIG_NOBOARD),y)
  4426. +# $(error have to select a valid board file $(CONFIG_NOBOARD), please run kernel config again)
  4427. +_all: config_board_error
  4428. +endif
  4429. +
  4430. +config_board_error:
  4431. + @echo "*************************************************"
  4432. + @echo "You have not selected a proper board."
  4433. + @echo "Please run menuconfig (or config) against your"
  4434. + @echo "kernel and choose your board under Processor"
  4435. + @echo "options"
  4436. + @echo "*************************************************"
  4437. + @exit 1
  4438. +
  4439. --- /dev/null
  4440. +++ b/arch/ubicom32/kernel/asm-offsets.c
  4441. @@ -0,0 +1,162 @@
  4442. +/*
  4443. + * arch/ubicom32/kernel/asm-offsets.c
  4444. + * Ubicom32 architecture definitions needed by assembly language modules.
  4445. + *
  4446. + * (C) Copyright 2009, Ubicom, Inc.
  4447. + *
  4448. + * This file is part of the Ubicom32 Linux Kernel Port.
  4449. + *
  4450. + * The Ubicom32 Linux Kernel Port is free software: you can redistribute
  4451. + * it and/or modify it under the terms of the GNU General Public License
  4452. + * as published by the Free Software Foundation, either version 2 of the
  4453. + * License, or (at your option) any later version.
  4454. + *
  4455. + * The Ubicom32 Linux Kernel Port is distributed in the hope that it
  4456. + * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  4457. + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  4458. + * the GNU General Public License for more details.
  4459. + *
  4460. + * You should have received a copy of the GNU General Public License
  4461. + * along with the Ubicom32 Linux Kernel Port. If not,
  4462. + * see <http://www.gnu.org/licenses/>.
  4463. + *
  4464. + * Ubicom32 implementation derived from (with many thanks):
  4465. + * arch/m68knommu
  4466. + * arch/blackfin
  4467. + * arch/parisc
  4468. + */
  4469. +/*
  4470. + * This program is used to generate definitions needed by
  4471. + * assembly language modules.
  4472. + *
  4473. + * We use the technique used in the OSF Mach kernel code:
  4474. + * generate asm statements containing #defines,
  4475. + * compile this file to assembler, and then extract the
  4476. + * #defines from the assembly-language output.
  4477. + */
  4478. +
  4479. +#include <linux/module.h>
  4480. +#include <linux/stddef.h>
  4481. +#include <linux/sched.h>
  4482. +#include <linux/kernel_stat.h>
  4483. +#include <linux/ptrace.h>
  4484. +#include <linux/hardirq.h>
  4485. +#include <asm/bootinfo.h>
  4486. +#include <asm/irq.h>
  4487. +#include <asm/thread_info.h>
  4488. +
  4489. +#define DEFINE(sym, val) \
  4490. + asm volatile("\n->" #sym " %0 " #val : : "i" (val))
  4491. +
  4492. +#define BLANK() asm volatile("\n->" : : )
  4493. +
  4494. +int main(void)
  4495. +{
  4496. + /* offsets into the task struct */
  4497. + DEFINE(TASK_STATE, offsetof(struct task_struct, state));
  4498. + DEFINE(TASK_FLAGS, offsetof(struct task_struct, flags));
  4499. + DEFINE(TASK_PTRACE, offsetof(struct task_struct, ptrace));
  4500. + DEFINE(TASK_BLOCKED, offsetof(struct task_struct, blocked));
  4501. + DEFINE(TASK_THREAD, offsetof(struct task_struct, thread));
  4502. + DEFINE(TASK_THREAD_INFO, offsetof(struct task_struct, stack));
  4503. + DEFINE(TASK_MM, offsetof(struct task_struct, mm));
  4504. + DEFINE(TASK_ACTIVE_MM, offsetof(struct task_struct, active_mm));
  4505. +
  4506. + /* offsets into the kernel_stat struct */
  4507. + DEFINE(STAT_IRQ, offsetof(struct kernel_stat, irqs));
  4508. +
  4509. + /* offsets into the irq_cpustat_t struct */
  4510. + DEFINE(CPUSTAT_SOFTIRQ_PENDING, offsetof(irq_cpustat_t, __softirq_pending));
  4511. +
  4512. + /* offsets into the thread struct */
  4513. + DEFINE(THREAD_D10, offsetof(struct thread_struct, d10));
  4514. + DEFINE(THREAD_D11, offsetof(struct thread_struct, d11));
  4515. + DEFINE(THREAD_D12, offsetof(struct thread_struct, d12));
  4516. + DEFINE(THREAD_D13, offsetof(struct thread_struct, d13));
  4517. + DEFINE(THREAD_A1, offsetof(struct thread_struct, a1));
  4518. + DEFINE(THREAD_A2, offsetof(struct thread_struct, a2));
  4519. + DEFINE(THREAD_A5, offsetof(struct thread_struct, a5));
  4520. + DEFINE(THREAD_A6, offsetof(struct thread_struct, a6));
  4521. + DEFINE(THREAD_SP, offsetof(struct thread_struct, sp));
  4522. +
  4523. + /* offsets into the pt_regs */
  4524. + DEFINE(PT_D0, offsetof(struct pt_regs, dn[0]));
  4525. + DEFINE(PT_D1, offsetof(struct pt_regs, dn[1]));
  4526. + DEFINE(PT_D2, offsetof(struct pt_regs, dn[2]));
  4527. + DEFINE(PT_D3, offsetof(struct pt_regs, dn[3]));
  4528. + DEFINE(PT_D4, offsetof(struct pt_regs, dn[4]));
  4529. + DEFINE(PT_D5, offsetof(struct pt_regs, dn[5]));
  4530. + DEFINE(PT_D6, offsetof(struct pt_regs, dn[6]));
  4531. + DEFINE(PT_D7, offsetof(struct pt_regs, dn[7]));
  4532. + DEFINE(PT_D8, offsetof(struct pt_regs, dn[8]));
  4533. + DEFINE(PT_D9, offsetof(struct pt_regs, dn[9]));
  4534. + DEFINE(PT_D10, offsetof(struct pt_regs, dn[10]));
  4535. + DEFINE(PT_D11, offsetof(struct pt_regs, dn[11]));
  4536. + DEFINE(PT_D12, offsetof(struct pt_regs, dn[12]));
  4537. + DEFINE(PT_D13, offsetof(struct pt_regs, dn[13]));
  4538. + DEFINE(PT_D14, offsetof(struct pt_regs, dn[14]));
  4539. + DEFINE(PT_D15, offsetof(struct pt_regs, dn[15]));
  4540. + DEFINE(PT_A0, offsetof(struct pt_regs, an[0]));
  4541. + DEFINE(PT_A1, offsetof(struct pt_regs, an[1]));
  4542. + DEFINE(PT_A2, offsetof(struct pt_regs, an[2]));
  4543. + DEFINE(PT_A3, offsetof(struct pt_regs, an[3]));
  4544. + DEFINE(PT_A4, offsetof(struct pt_regs, an[4]));
  4545. + DEFINE(PT_A5, offsetof(struct pt_regs, an[5]));
  4546. + DEFINE(PT_A6, offsetof(struct pt_regs, an[6]));
  4547. + DEFINE(PT_A7, offsetof(struct pt_regs, an[7]));
  4548. + DEFINE(PT_SP, offsetof(struct pt_regs, an[7]));
  4549. +
  4550. + DEFINE(PT_ACC0HI, offsetof(struct pt_regs, acc0[0]));
  4551. + DEFINE(PT_ACC0LO, offsetof(struct pt_regs, acc0[1]));
  4552. + DEFINE(PT_MAC_RC16, offsetof(struct pt_regs, mac_rc16));
  4553. +
  4554. + DEFINE(PT_ACC1HI, offsetof(struct pt_regs, acc1[0]));
  4555. + DEFINE(PT_ACC1LO, offsetof(struct pt_regs, acc1[1]));
  4556. +
  4557. + DEFINE(PT_SOURCE3, offsetof(struct pt_regs, source3));
  4558. + DEFINE(PT_INST_CNT, offsetof(struct pt_regs, inst_cnt));
  4559. + DEFINE(PT_CSR, offsetof(struct pt_regs, csr));
  4560. + DEFINE(PT_DUMMY_UNUSED, offsetof(struct pt_regs, dummy_unused));
  4561. +
  4562. + DEFINE(PT_INT_MASK0, offsetof(struct pt_regs, int_mask0));
  4563. + DEFINE(PT_INT_MASK1, offsetof(struct pt_regs, int_mask1));
  4564. +
  4565. + DEFINE(PT_PC, offsetof(struct pt_regs, pc));
  4566. +
  4567. + DEFINE(PT_TRAP_CAUSE, offsetof(struct pt_regs, trap_cause));
  4568. +
  4569. + DEFINE(PT_SIZE, sizeof(struct pt_regs));
  4570. +
  4571. + DEFINE(PT_FRAME_TYPE, offsetof(struct pt_regs, frame_type));
  4572. +
  4573. + DEFINE(PT_ORIGINAL_D0, offsetof(struct pt_regs, original_dn_0));
  4574. + DEFINE(PT_PREVIOUS_PC, offsetof(struct pt_regs, previous_pc));
  4575. +
  4576. + /* offsets into the kernel_stat struct */
  4577. + DEFINE(STAT_IRQ, offsetof(struct kernel_stat, irqs));
  4578. +
  4579. + /* signal defines */
  4580. + DEFINE(SIGSEGV, SIGSEGV);
  4581. + //DEFINE(SEGV_MAPERR, SEGV_MAPERR);
  4582. + DEFINE(SIGTRAP, SIGTRAP);
  4583. + //DEFINE(TRAP_TRACE, TRAP_TRACE);
  4584. +
  4585. + DEFINE(PT_PTRACED, PT_PTRACED);
  4586. + DEFINE(PT_DTRACE, PT_DTRACE);
  4587. +
  4588. + DEFINE(ASM_THREAD_SIZE, THREAD_SIZE);
  4589. +
  4590. + /* Offsets in thread_info structure */
  4591. + DEFINE(TI_TASK, offsetof(struct thread_info, task));
  4592. + DEFINE(TI_EXECDOMAIN, offsetof(struct thread_info, exec_domain));
  4593. + DEFINE(TI_FLAGS, offsetof(struct thread_info, flags));
  4594. + DEFINE(TI_PREEMPTCOUNT, offsetof(struct thread_info, preempt_count));
  4595. + DEFINE(TI_CPU, offsetof(struct thread_info, cpu));
  4596. + DEFINE(TI_INTR_NESTING, offsetof(struct thread_info, interrupt_nesting));
  4597. + DEFINE(ASM_TIF_NEED_RESCHED, TIF_NEED_RESCHED);
  4598. + DEFINE(ASM_TIF_SYSCALL_TRACE, TIF_SYSCALL_TRACE);
  4599. + DEFINE(ASM_TIF_SIGPENDING, TIF_SIGPENDING);
  4600. +
  4601. + DEFINE(ASM_RAM_END, (CONFIG_RAMBASE + CONFIG_RAMSIZE));
  4602. + return 0;
  4603. +}
  4604. --- /dev/null
  4605. +++ b/arch/ubicom32/kernel/Makefile
  4606. @@ -0,0 +1,64 @@
  4607. +#
  4608. +# arch/ubicom32/kernel/Makefile
  4609. +# Main Makefile for the Ubicom32 arch directory.
  4610. +#
  4611. +# (C) Copyright 2009, Ubicom, Inc.
  4612. +#
  4613. +# This file is part of the Ubicom32 Linux Kernel Port.
  4614. +#
  4615. +# The Ubicom32 Linux Kernel Port is free software: you can redistribute
  4616. +# it and/or modify it under the terms of the GNU General Public License
  4617. +# as published by the Free Software Foundation, either version 2 of the
  4618. +# License, or (at your option) any later version.
  4619. +#
  4620. +# The Ubicom32 Linux Kernel Port is distributed in the hope that it
  4621. +# will be useful, but WITHOUT ANY WARRANTY; without even the implied
  4622. +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
  4623. +# the GNU General Public License for more details.
  4624. +#
  4625. +# You should have received a copy of the GNU General Public License
  4626. +# along with the Ubicom32 Linux Kernel Port. If not,
  4627. +# see <http://www.gnu.org/licenses/>.
  4628. +#
  4629. +# Ubicom32 implementation derived from (with many thanks):
  4630. +# arch/m68knommu
  4631. +# arch/blackfin
  4632. +# arch/parisc
  4633. +#
  4634. +
  4635. +extra-y := head.o vmlinux.lds
  4636. +
  4637. +obj-y += \
  4638. + devtree.o \
  4639. + dma.o \
  4640. + flat.o \
  4641. + init_task.o \
  4642. + irq.o \
  4643. + ldsr.o \
  4644. + os_node.o \
  4645. + process.o \
  4646. + processor.o \
  4647. + ptrace.o \
  4648. + setup.o \
  4649. + signal.o \
  4650. + stacktrace.o \
  4651. + sys_ubicom32.o \
  4652. + syscalltable.o \
  4653. + thread.o \
  4654. + time.o \
  4655. + traps.o \
  4656. + ubicom32_context_switch.o \
  4657. + ubicom32_ksyms.o \
  4658. + ubicom32_syscall.o \
  4659. + unaligned_trap.o
  4660. +
  4661. +obj-$(CONFIG_MODULES) += module.o
  4662. +obj-$(CONFIG_COMEMPCI) += comempci.o
  4663. +obj-$(CONFIG_SMP) += smp.o topology.o
  4664. +obj-$(CONFIG_ACCESS_OK_CHECKS_ENABLED) += uaccess.o
  4665. +obj-$(CONFIG_GENERIC_CLOCKEVENTS) += timer_device.o
  4666. +obj-$(CONFIG_GENERIC_CLOCKEVENTS_BROADCAST) += timer_broadcast.o
  4667. +
  4668. +ifndef CONFIG_GENERIC_CLOCKEVENTS
  4669. +obj-y += timer_tick.o
  4670. +endif
  4671. --- /dev/null
  4672. +++ b/arch/ubicom32/mach-ip5k/Kconfig
  4673. @@ -0,0 +1,32 @@
  4674. +
  4675. +config IP5170DPF
  4676. + bool "IP5170DPF"
  4677. + select UBICOM32_V3
  4678. + select I2C
  4679. + select I2C_GPIO
  4680. + select FB
  4681. + select FB_UBICOM32
  4682. + select BACKLIGHT_LCD_SUPPORT
  4683. + select BACKLIGHT_CLASS_DEVICE
  4684. + select UBICOM_HID
  4685. + select NEW_LEDS
  4686. + select LEDS_CLASS
  4687. + select LEDS_GPIO
  4688. + select BRD_64MB
  4689. + help
  4690. + IP5170 Digital Picture Frame board, 8005-1113, IP5K-BEV-0011-13 v1.3
  4691. +
  4692. +config IP5160DEV
  4693. + bool "IP5160Dev_Ver1Dot1"
  4694. + select UBICOM32_V3
  4695. + select BRD_64MB
  4696. + help
  4697. + Ubicom StreamEngine 5000 Development Board, IP5K-BDV-0004-11 v1.1
  4698. +
  4699. +config IP5160EVAL
  4700. + bool "IP5160RGWEval_Ver2Rev2"
  4701. + select UBICOM32_V3
  4702. + select BRD_32MB
  4703. + help
  4704. + Ubicom StreamEngine 5000 RGW Evaluation Board, IP5K-RGW-0004-11 v2.2
  4705. +
  4706. --- /dev/null
  4707. +++ b/arch/ubicom32/mach-ip7k/Kconfig
  4708. @@ -0,0 +1,132 @@
  4709. +config IP7145DPF
  4710. + bool "IP7145DPF"
  4711. + select UBICOM32_V4
  4712. + select UBICOM_INPUT
  4713. + select UBICOM_INPUT_I2C
  4714. + select RTC_CLASS
  4715. + select RTC_DRV_S35390A
  4716. + select I2C
  4717. + select I2C_GPIO
  4718. + select GPIO_PCA953X
  4719. + select FB
  4720. + select FB_UBICOM32
  4721. + select BACKLIGHT_LCD_SUPPORT
  4722. + select LCD_CLASS_DEVICE
  4723. + select LCD_UBICOM32
  4724. + select BACKLIGHT_CLASS_DEVICE
  4725. + select BACKLIGHT_UBICOM32
  4726. + select SND_UBI32
  4727. + select MMC_UBICOM32
  4728. + select MMC
  4729. + select MMC_BLOCK
  4730. + select BRD_64MB
  4731. + help
  4732. + IP7145 Digital Picture Frame reference design, supports:
  4733. + 8007-0410 v1.0
  4734. +
  4735. +config IP7160RGW
  4736. + bool "IP7160RGW"
  4737. + select UBICOM32_V4
  4738. + select UBICOM_INPUT
  4739. + select NEW_LEDS
  4740. + select LEDS_CLASS
  4741. + select LEDS_GPIO
  4742. + select BRD_64MB
  4743. + select SPI
  4744. + select SPI_UBICOM32_GPIO
  4745. + select VLAN_8021Q
  4746. + select UBICOM_SWITCH
  4747. + select UBICOM_SWITCH_BCM539X
  4748. + help
  4749. + Ubicom IP7160 RGW Eval, supports:
  4750. + 8007-0110 v1.0
  4751. + 8007-0111 v1.1
  4752. + 8007-0112 v1.2
  4753. +
  4754. +config IP7160BRINGUP
  4755. + bool "IP7160BRINGUP"
  4756. + select UBICOM32_V4
  4757. + select NEW_LEDS
  4758. + select LEDS_CLASS
  4759. + select LEDS_GPIO
  4760. + select BRD_64MB
  4761. + help
  4762. + Ubicom IP7160 Bringup, supports:
  4763. + 8007-0010 v1.0
  4764. +
  4765. +config IP7160DPF
  4766. + bool "IP7160DPF"
  4767. + select UBICOM32_V4
  4768. + select I2C
  4769. + select I2C_GPIO
  4770. + select FB
  4771. + select FB_UBICOM32
  4772. + select BACKLIGHT_LCD_SUPPORT
  4773. + select BACKLIGHT_CLASS_DEVICE
  4774. + select SND_UBI32
  4775. + select SND_UBI32_AUDIO_CS4350
  4776. + select UBICOM_HID
  4777. + select BRD_64MB
  4778. + help
  4779. + IP7160 Digital Picture Frame board, supports:
  4780. + 8007-0211 Rev 1.1
  4781. +
  4782. +config IP7500MODULE
  4783. + bool "IP7500MODULE"
  4784. + select UBICOM32_V4
  4785. + select BRD_128MB
  4786. + help
  4787. + Ubicom IP7500 CPU Module board, supports:
  4788. + 8007-0510 v1.0
  4789. + 8007-0510A v1.0
  4790. +
  4791. + Please see ip7500module.c for more details.
  4792. +
  4793. +config IP7500AV
  4794. + bool "IP7500AV"
  4795. + select UBICOM32_V4
  4796. + select BRD_128MB
  4797. + select I2C
  4798. + select I2C_GPIO
  4799. + select SND_UBI32
  4800. + select SND_UBI32_AUDIO_CS4384
  4801. + select FB
  4802. + select FB_UBICOM32
  4803. + help
  4804. + Ubicom IP7500 Audio Video board, supports:
  4805. + 8007-0810 v1.0
  4806. +
  4807. + With Ubicom IP7500 CPU Module board:
  4808. + 8007-0510 v1.0 -or-
  4809. + 8007-0510A v1.0
  4810. +
  4811. + Please see ip7500av.c for more details.
  4812. +
  4813. +config IP7500MEDIA
  4814. + bool "IP7500MEDIA"
  4815. + select UBICOM32_V4
  4816. + select UBICOM_INPUT_I2C
  4817. + select RTC_CLASS
  4818. + select RTC_DRV_S35390A
  4819. + select I2C
  4820. + select I2C_GPIO
  4821. + select GPIO_PCA953X
  4822. + select FB
  4823. + select FB_UBICOM32
  4824. + select BACKLIGHT_LCD_SUPPORT
  4825. + select LCD_CLASS_DEVICE
  4826. + select LCD_UBICOM32
  4827. + select BACKLIGHT_CLASS_DEVICE
  4828. + select BACKLIGHT_UBICOM32
  4829. + select SND_UBI32
  4830. + select SND_UBI32_AUDIO_CS4350
  4831. + select MMC_UBICOM32
  4832. + select MMC
  4833. + select MMC_BLOCK
  4834. + select BRD_128MB
  4835. + help
  4836. + IP7500 Media Board w/ IP7500 CPU Module board, supports:
  4837. + 8007-0610 v1.0 w/ 8007-0510 v1.0
  4838. +
  4839. + Please see ip7500media.c for more details.
  4840. +
  4841. --- a/fs/Kconfig.binfmt
  4842. +++ b/fs/Kconfig.binfmt
  4843. @@ -30,7 +30,7 @@ config COMPAT_BINFMT_ELF
  4844. config BINFMT_ELF_FDPIC
  4845. bool "Kernel support for FDPIC ELF binaries"
  4846. default y
  4847. - depends on (FRV || BLACKFIN || (SUPERH32 && !MMU))
  4848. + depends on (FRV || BLACKFIN || (SUPERH32 && !MMU) || UBICOM32)
  4849. help
  4850. ELF FDPIC binaries are based on ELF, but allow the individual load
  4851. segments of a binary to be located in memory independently of each