hpm_csr_regs.h 230 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512
  1. /*
  2. * Copyright (c) 2021-2023 HPMicro
  3. *
  4. * SPDX-License-Identifier: BSD-3-Clause
  5. *
  6. */
  7. #ifndef HPM_CSR_H
  8. #define HPM_CSR_H
  9. /* STANDARD CRS address definition */
  10. #define CSR_USTATUS (0x0)
  11. #define CSR_UIE (0x4)
  12. #define CSR_UTVEC (0x5)
  13. #define CSR_USCRATCH (0x40)
  14. #define CSR_UEPC (0x41)
  15. #define CSR_UCAUSE (0x42)
  16. #define CSR_UTVAL (0x43)
  17. #define CSR_UIP (0x44)
  18. #define CSR_SSTATUS (0x100)
  19. #define CSR_SEDELEG (0x102)
  20. #define CSR_SIDELEG (0x103)
  21. #define CSR_SIE (0x104)
  22. #define CSR_STVEC (0x105)
  23. #define CSR_SSCRATCH (0x140)
  24. #define CSR_SEPC (0x141)
  25. #define CSR_SCAUSE (0x142)
  26. #define CSR_STVAL (0x143)
  27. #define CSR_SIP (0x144)
  28. #define CSR_SATP (0x180)
  29. #define CSR_MSTATUS (0x300)
  30. #define CSR_MISA (0x301)
  31. #define CSR_MEDELEG (0x302)
  32. #define CSR_MIDELEG (0x303)
  33. #define CSR_MIE (0x304)
  34. #define CSR_MTVEC (0x305)
  35. #define CSR_MCOUNTEREN (0x306)
  36. #define CSR_MHPMEVENT3 (0x323)
  37. #define CSR_MHPMEVENT4 (0x324)
  38. #define CSR_MHPMEVENT5 (0x325)
  39. #define CSR_MHPMEVENT6 (0x326)
  40. #define CSR_MSCRATCH (0x340)
  41. #define CSR_MEPC (0x341)
  42. #define CSR_MCAUSE (0x342)
  43. #define CSR_MTVAL (0x343)
  44. #define CSR_MIP (0x344)
  45. #define CSR_PMPCFG0 (0x3A0)
  46. #define CSR_PMPCFG1 (0x3A1)
  47. #define CSR_PMPCFG2 (0x3A2)
  48. #define CSR_PMPCFG3 (0x3A3)
  49. #define CSR_PMPADDR0 (0x3B0)
  50. #define CSR_PMPADDR1 (0x3B1)
  51. #define CSR_PMPADDR2 (0x3B2)
  52. #define CSR_PMPADDR3 (0x3B3)
  53. #define CSR_PMPADDR4 (0x3B4)
  54. #define CSR_PMPADDR5 (0x3B5)
  55. #define CSR_PMPADDR6 (0x3B6)
  56. #define CSR_PMPADDR7 (0x3B7)
  57. #define CSR_PMPADDR8 (0x3B8)
  58. #define CSR_PMPADDR9 (0x3B9)
  59. #define CSR_PMPADDR10 (0x3BA)
  60. #define CSR_PMPADDR11 (0x3BB)
  61. #define CSR_PMPADDR12 (0x3BC)
  62. #define CSR_PMPADDR13 (0x3BD)
  63. #define CSR_PMPADDR14 (0x3BE)
  64. #define CSR_PMPADDR15 (0x3BF)
  65. #define CSR_TSELECT (0x7A0)
  66. #define CSR_TDATA1 (0x7A1)
  67. #define CSR_MCONTROL (0x7A1)
  68. #define CSR_ICOUNT (0x7A1)
  69. #define CSR_ITRIGGER (0x7A1)
  70. #define CSR_ETRIGGER (0x7A1)
  71. #define CSR_TDATA2 (0x7A2)
  72. #define CSR_TDATA3 (0x7A3)
  73. #define CSR_TEXTRA (0x7A3)
  74. #define CSR_TINFO (0x7A4)
  75. #define CSR_TCONTROL (0x7A5)
  76. #define CSR_MCONTEXT (0x7A8)
  77. #define CSR_SCONTEXT (0x7AA)
  78. #define CSR_DCSR (0x7B0)
  79. #define CSR_DPC (0x7B1)
  80. #define CSR_DSCRATCH0 (0x7B2)
  81. #define CSR_DSCRATCH1 (0x7B3)
  82. #define CSR_MCYCLE (0xB00)
  83. #define CSR_MINSTRET (0xB02)
  84. #define CSR_MHPMCOUNTER3 (0xB03)
  85. #define CSR_MHPMCOUNTER4 (0xB04)
  86. #define CSR_MHPMCOUNTER5 (0xB05)
  87. #define CSR_MHPMCOUNTER6 (0xB06)
  88. #define CSR_MCYCLEH (0xB80)
  89. #define CSR_MINSTRETH (0xB82)
  90. #define CSR_MHPMCOUNTER3H (0xB83)
  91. #define CSR_MHPMCOUNTER4H (0xB84)
  92. #define CSR_MHPMCOUNTER5H (0xB85)
  93. #define CSR_MHPMCOUNTER6H (0xB86)
  94. #define CSR_PMACFG0 (0xBC0)
  95. #define CSR_PMACFG1 (0xBC1)
  96. #define CSR_PMACFG2 (0xBC2)
  97. #define CSR_PMACFG3 (0xBC3)
  98. #define CSR_PMAADDR0 (0xBD0)
  99. #define CSR_PMAADDR1 (0xBD1)
  100. #define CSR_PMAADDR2 (0xBD2)
  101. #define CSR_PMAADDR3 (0xBD3)
  102. #define CSR_PMAADDR4 (0xBD4)
  103. #define CSR_PMAADDR5 (0xBD5)
  104. #define CSR_PMAADDR6 (0xBD6)
  105. #define CSR_PMAADDR7 (0xBD7)
  106. #define CSR_PMAADDR8 (0xBD8)
  107. #define CSR_PMAADDR9 (0xBD9)
  108. #define CSR_PMAADDR10 (0xBDA)
  109. #define CSR_PMAADDR11 (0xBDB)
  110. #define CSR_PMAADDR12 (0xBDC)
  111. #define CSR_PMAADDR13 (0xBDD)
  112. #define CSR_PMAADDR14 (0xBDE)
  113. #define CSR_PMAADDR15 (0xBDF)
  114. #define CSR_CYCLE (0xC00)
  115. #define CSR_CYCLEH (0xC80)
  116. #define CSR_MVENDORID (0xF11)
  117. #define CSR_MARCHID (0xF12)
  118. #define CSR_MIMPID (0xF13)
  119. #define CSR_MHARTID (0xF14)
  120. /* NON-STANDARD CRS address definition */
  121. #define CSR_SCOUNTEREN (0x106)
  122. #define CSR_MCOUNTINHIBIT (0x320)
  123. #define CSR_MILMB (0x7C0)
  124. #define CSR_MDLMB (0x7C1)
  125. #define CSR_MECC_CODE (0x7C2)
  126. #define CSR_MNVEC (0x7C3)
  127. #define CSR_MXSTATUS (0x7C4)
  128. #define CSR_MPFT_CTL (0x7C5)
  129. #define CSR_MHSP_CTL (0x7C6)
  130. #define CSR_MSP_BOUND (0x7C7)
  131. #define CSR_MSP_BASE (0x7C8)
  132. #define CSR_MDCAUSE (0x7C9)
  133. #define CSR_MCACHE_CTL (0x7CA)
  134. #define CSR_MCCTLBEGINADDR (0x7CB)
  135. #define CSR_MCCTLCOMMAND (0x7CC)
  136. #define CSR_MCCTLDATA (0x7CD)
  137. #define CSR_MCOUNTERWEN (0x7CE)
  138. #define CSR_MCOUNTERINTEN (0x7CF)
  139. #define CSR_MMISC_CTL (0x7D0)
  140. #define CSR_MCOUNTERMASK_M (0x7D1)
  141. #define CSR_MCOUNTERMASK_S (0x7D2)
  142. #define CSR_MCOUNTERMASK_U (0x7D3)
  143. #define CSR_MCOUNTEROVF (0x7D4)
  144. #define CSR_MSLIDELEG (0x7D5)
  145. #define CSR_MCLK_CTL (0x7DF)
  146. #define CSR_DEXC2DBG (0x7E0)
  147. #define CSR_DDCAUSE (0x7E1)
  148. #define CSR_UITB (0x800)
  149. #define CSR_UCODE (0x801)
  150. #define CSR_UDCAUSE (0x809)
  151. #define CSR_UCCTLBEGINADDR (0x80B)
  152. #define CSR_UCCTLCOMMAND (0x80C)
  153. #define CSR_SLIE (0x9C4)
  154. #define CSR_SLIP (0x9C5)
  155. #define CSR_SDCAUSE (0x9C9)
  156. #define CSR_SCCTLDATA (0x9CD)
  157. #define CSR_SCOUNTERINTEN (0x9CF)
  158. #define CSR_SCOUNTERMASK_M (0x9D1)
  159. #define CSR_SCOUNTERMASK_S (0x9D2)
  160. #define CSR_SCOUNTERMASK_U (0x9D3)
  161. #define CSR_SCOUNTEROVF (0x9D4)
  162. #define CSR_SCOUNTINHIBIT (0x9E0)
  163. #define CSR_SHPMEVENT3 (0x9E3)
  164. #define CSR_SHPMEVENT4 (0x9E4)
  165. #define CSR_SHPMEVENT5 (0x9E5)
  166. #define CSR_SHPMEVENT6 (0x9E6)
  167. #define CSR_MICM_CFG (0xFC0)
  168. #define CSR_MDCM_CFG (0xFC1)
  169. #define CSR_MMSC_CFG (0xFC2)
  170. #define CSR_MMSC_CFG2 (0xFC3)
  171. /* STANDARD CRS register bitfiled definitions */
  172. /* Bitfield definition for register: USTATUS */
  173. /*
  174. * UPIE (RW)
  175. *
  176. * UPIE holds the value of the UIE bit prior to a trap.
  177. */
  178. #define CSR_USTATUS_UPIE_MASK (0x10U)
  179. #define CSR_USTATUS_UPIE_SHIFT (4U)
  180. #define CSR_USTATUS_UPIE_SET(x) (((uint32_t)(x) << CSR_USTATUS_UPIE_SHIFT) & CSR_USTATUS_UPIE_MASK)
  181. #define CSR_USTATUS_UPIE_GET(x) (((uint32_t)(x) & CSR_USTATUS_UPIE_MASK) >> CSR_USTATUS_UPIE_SHIFT)
  182. /*
  183. * UIE (RW)
  184. *
  185. * U mode interrupt enable bit.
  186. * 0:Disabled
  187. * 1:Enabled
  188. */
  189. #define CSR_USTATUS_UIE_MASK (0x1U)
  190. #define CSR_USTATUS_UIE_SHIFT (0U)
  191. #define CSR_USTATUS_UIE_SET(x) (((uint32_t)(x) << CSR_USTATUS_UIE_SHIFT) & CSR_USTATUS_UIE_MASK)
  192. #define CSR_USTATUS_UIE_GET(x) (((uint32_t)(x) & CSR_USTATUS_UIE_MASK) >> CSR_USTATUS_UIE_SHIFT)
  193. /* Bitfield definition for register: UIE */
  194. /*
  195. * UEIE (RW)
  196. *
  197. * U mode external interrupt enable bit
  198. * 0:Disabled
  199. * 1:Enabled
  200. */
  201. #define CSR_UIE_UEIE_MASK (0x100U)
  202. #define CSR_UIE_UEIE_SHIFT (8U)
  203. #define CSR_UIE_UEIE_SET(x) (((uint32_t)(x) << CSR_UIE_UEIE_SHIFT) & CSR_UIE_UEIE_MASK)
  204. #define CSR_UIE_UEIE_GET(x) (((uint32_t)(x) & CSR_UIE_UEIE_MASK) >> CSR_UIE_UEIE_SHIFT)
  205. /*
  206. * UTIE (RW)
  207. *
  208. * U mode timer interrupt enable bit.
  209. * 0:Disabled
  210. * 1:Enabled
  211. */
  212. #define CSR_UIE_UTIE_MASK (0x10U)
  213. #define CSR_UIE_UTIE_SHIFT (4U)
  214. #define CSR_UIE_UTIE_SET(x) (((uint32_t)(x) << CSR_UIE_UTIE_SHIFT) & CSR_UIE_UTIE_MASK)
  215. #define CSR_UIE_UTIE_GET(x) (((uint32_t)(x) & CSR_UIE_UTIE_MASK) >> CSR_UIE_UTIE_SHIFT)
  216. /*
  217. * USIE (RW)
  218. *
  219. * U mode software interrupt enable bit.
  220. * 0:Disabled
  221. * 1:Enabled
  222. */
  223. #define CSR_UIE_USIE_MASK (0x1U)
  224. #define CSR_UIE_USIE_SHIFT (0U)
  225. #define CSR_UIE_USIE_SET(x) (((uint32_t)(x) << CSR_UIE_USIE_SHIFT) & CSR_UIE_USIE_MASK)
  226. #define CSR_UIE_USIE_GET(x) (((uint32_t)(x) & CSR_UIE_USIE_MASK) >> CSR_UIE_USIE_SHIFT)
  227. /* Bitfield definition for register: UTVEC */
  228. /*
  229. * BASE_31_2 (RW)
  230. *
  231. * Base address for interrupt and exception handlers. See description above for alignment requirements when PLIC is in the vector mode.
  232. */
  233. #define CSR_UTVEC_BASE_31_2_MASK (0xFFFFFFFCUL)
  234. #define CSR_UTVEC_BASE_31_2_SHIFT (2U)
  235. #define CSR_UTVEC_BASE_31_2_SET(x) (((uint32_t)(x) << CSR_UTVEC_BASE_31_2_SHIFT) & CSR_UTVEC_BASE_31_2_MASK)
  236. #define CSR_UTVEC_BASE_31_2_GET(x) (((uint32_t)(x) & CSR_UTVEC_BASE_31_2_MASK) >> CSR_UTVEC_BASE_31_2_SHIFT)
  237. /* Bitfield definition for register: USCRATCH */
  238. /*
  239. * USCRATCH (RW)
  240. *
  241. * Scratch register storage.
  242. */
  243. #define CSR_USCRATCH_USCRATCH_MASK (0xFFFFFFFFUL)
  244. #define CSR_USCRATCH_USCRATCH_SHIFT (0U)
  245. #define CSR_USCRATCH_USCRATCH_SET(x) (((uint32_t)(x) << CSR_USCRATCH_USCRATCH_SHIFT) & CSR_USCRATCH_USCRATCH_MASK)
  246. #define CSR_USCRATCH_USCRATCH_GET(x) (((uint32_t)(x) & CSR_USCRATCH_USCRATCH_MASK) >> CSR_USCRATCH_USCRATCH_SHIFT)
  247. /* Bitfield definition for register: UEPC */
  248. /*
  249. * EPC (RW)
  250. *
  251. * Exception program counter.
  252. */
  253. #define CSR_UEPC_EPC_MASK (0xFFFFFFFEUL)
  254. #define CSR_UEPC_EPC_SHIFT (1U)
  255. #define CSR_UEPC_EPC_SET(x) (((uint32_t)(x) << CSR_UEPC_EPC_SHIFT) & CSR_UEPC_EPC_MASK)
  256. #define CSR_UEPC_EPC_GET(x) (((uint32_t)(x) & CSR_UEPC_EPC_MASK) >> CSR_UEPC_EPC_SHIFT)
  257. /* Bitfield definition for register: UCAUSE */
  258. /*
  259. * INTERRUPT (RW)
  260. *
  261. * Interrupt.
  262. */
  263. #define CSR_UCAUSE_INTERRUPT_MASK (0x80000000UL)
  264. #define CSR_UCAUSE_INTERRUPT_SHIFT (31U)
  265. #define CSR_UCAUSE_INTERRUPT_SET(x) (((uint32_t)(x) << CSR_UCAUSE_INTERRUPT_SHIFT) & CSR_UCAUSE_INTERRUPT_MASK)
  266. #define CSR_UCAUSE_INTERRUPT_GET(x) (((uint32_t)(x) & CSR_UCAUSE_INTERRUPT_MASK) >> CSR_UCAUSE_INTERRUPT_SHIFT)
  267. /*
  268. * EXCEPTION_CODE (RW)
  269. *
  270. * Exception Code.
  271. * When interrupt is 1:
  272. * 0:User software interrupt
  273. * 4:User timer interrupt
  274. * 8:User external interrupt
  275. * When interrupt is 0:
  276. * 0:Instruction address misaligned
  277. * 1:Instruction access fault
  278. * 2:Illegal instruction
  279. * 3:Breakpoint
  280. * 4:Load address misaligned
  281. * 5:Load access fault
  282. * 6:Store/AMO address misaligned
  283. * 7:Store/AMO access fault
  284. * 8:Environment call from U-mode
  285. * 9-11:Reserved
  286. * 12:Instruction page fault
  287. * 13:Load page fault
  288. * 14:Reserved
  289. * 15:Store/AMO page fault
  290. * 32:Stack overflow exception
  291. * 33:Stack underflow exception
  292. * 40-47:Reserved
  293. */
  294. #define CSR_UCAUSE_EXCEPTION_CODE_MASK (0x3FFU)
  295. #define CSR_UCAUSE_EXCEPTION_CODE_SHIFT (0U)
  296. #define CSR_UCAUSE_EXCEPTION_CODE_SET(x) (((uint32_t)(x) << CSR_UCAUSE_EXCEPTION_CODE_SHIFT) & CSR_UCAUSE_EXCEPTION_CODE_MASK)
  297. #define CSR_UCAUSE_EXCEPTION_CODE_GET(x) (((uint32_t)(x) & CSR_UCAUSE_EXCEPTION_CODE_MASK) >> CSR_UCAUSE_EXCEPTION_CODE_SHIFT)
  298. /* Bitfield definition for register: UTVAL */
  299. /*
  300. * UTVAL (RW)
  301. *
  302. * Exception-specific information for software trap handling.
  303. */
  304. #define CSR_UTVAL_UTVAL_MASK (0xFFFFFFFFUL)
  305. #define CSR_UTVAL_UTVAL_SHIFT (0U)
  306. #define CSR_UTVAL_UTVAL_SET(x) (((uint32_t)(x) << CSR_UTVAL_UTVAL_SHIFT) & CSR_UTVAL_UTVAL_MASK)
  307. #define CSR_UTVAL_UTVAL_GET(x) (((uint32_t)(x) & CSR_UTVAL_UTVAL_MASK) >> CSR_UTVAL_UTVAL_SHIFT)
  308. /* Bitfield definition for register: UIP */
  309. /*
  310. * UEIP (RW)
  311. *
  312. * U mode external interrupt pending bit.
  313. * 0:Not pending
  314. * 1:Pending
  315. */
  316. #define CSR_UIP_UEIP_MASK (0x100U)
  317. #define CSR_UIP_UEIP_SHIFT (8U)
  318. #define CSR_UIP_UEIP_SET(x) (((uint32_t)(x) << CSR_UIP_UEIP_SHIFT) & CSR_UIP_UEIP_MASK)
  319. #define CSR_UIP_UEIP_GET(x) (((uint32_t)(x) & CSR_UIP_UEIP_MASK) >> CSR_UIP_UEIP_SHIFT)
  320. /*
  321. * UTIP (RW)
  322. *
  323. * U mode timer interrupt pending bit.
  324. * 0:Not pending
  325. * 1:Pending
  326. */
  327. #define CSR_UIP_UTIP_MASK (0x10U)
  328. #define CSR_UIP_UTIP_SHIFT (4U)
  329. #define CSR_UIP_UTIP_SET(x) (((uint32_t)(x) << CSR_UIP_UTIP_SHIFT) & CSR_UIP_UTIP_MASK)
  330. #define CSR_UIP_UTIP_GET(x) (((uint32_t)(x) & CSR_UIP_UTIP_MASK) >> CSR_UIP_UTIP_SHIFT)
  331. /*
  332. * USIP (RW)
  333. *
  334. * U mode software interrupt pending bit.
  335. * 0:Not pending
  336. * 1:Pending
  337. */
  338. #define CSR_UIP_USIP_MASK (0x1U)
  339. #define CSR_UIP_USIP_SHIFT (0U)
  340. #define CSR_UIP_USIP_SET(x) (((uint32_t)(x) << CSR_UIP_USIP_SHIFT) & CSR_UIP_USIP_MASK)
  341. #define CSR_UIP_USIP_GET(x) (((uint32_t)(x) & CSR_UIP_USIP_MASK) >> CSR_UIP_USIP_SHIFT)
  342. /* Bitfield definition for register: SSTATUS */
  343. /*
  344. * SD (RO)
  345. *
  346. * SD summarizes whether either the FS field or XS field is dirty.
  347. */
  348. #define CSR_SSTATUS_SD_MASK (0x80000000UL)
  349. #define CSR_SSTATUS_SD_SHIFT (31U)
  350. #define CSR_SSTATUS_SD_GET(x) (((uint32_t)(x) & CSR_SSTATUS_SD_MASK) >> CSR_SSTATUS_SD_SHIFT)
  351. /*
  352. * MXR (RW)
  353. *
  354. * MXR controls whether execute-only pages are readable. It has no effect when page-based virtual memory is not in effect.
  355. * 0:Execute-only pages are not readable
  356. * 1:Execute-only pages are readable
  357. */
  358. #define CSR_SSTATUS_MXR_MASK (0x80000UL)
  359. #define CSR_SSTATUS_MXR_SHIFT (19U)
  360. #define CSR_SSTATUS_MXR_SET(x) (((uint32_t)(x) << CSR_SSTATUS_MXR_SHIFT) & CSR_SSTATUS_MXR_MASK)
  361. #define CSR_SSTATUS_MXR_GET(x) (((uint32_t)(x) & CSR_SSTATUS_MXR_MASK) >> CSR_SSTATUS_MXR_SHIFT)
  362. /*
  363. * SUM (RW)
  364. *
  365. * SUM controls whether a S-mode load/store instruction to a user accessible page is allowed or not when page translation is enabled. It is in effect in two scenarios: (a) M-mode with MPRV=1 and MPP=S, and (b) in S-mode. It has no effect when page-based virtual memory is not in effect. A page is user accessible when the U bit of the corresponding PTE entry is 1.
  366. * 0:Not Allowed
  367. * 1:Allowed
  368. */
  369. #define CSR_SSTATUS_SUM_MASK (0x40000UL)
  370. #define CSR_SSTATUS_SUM_SHIFT (18U)
  371. #define CSR_SSTATUS_SUM_SET(x) (((uint32_t)(x) << CSR_SSTATUS_SUM_SHIFT) & CSR_SSTATUS_SUM_MASK)
  372. #define CSR_SSTATUS_SUM_GET(x) (((uint32_t)(x) & CSR_SSTATUS_SUM_MASK) >> CSR_SSTATUS_SUM_SHIFT)
  373. /*
  374. * XS (RO)
  375. *
  376. * XS holds the status of the architectural states (ACE registers) of ACE instructions. The value of this field is zero if ACE extension is not configured.
  377. * This field is primarily managed by software. The processor hardware assists the state managements in two regards:
  378. * Illegal instruction exceptions are triggeredwhen XS is Off.
  379. * XS is updated to the Dirty state with the execution of ACE instructions when XS is not Off.
  380. * Changing the setting of this field has no effect on the contents of ACE states. In particular, setting XS to Off does not destroy the states, nor does setting XS to Initial clear the contents.
  381. * The same copy of XS bits are shared by both mstatus and sstatus. Normally the supervisor mode privileged software would use the XS bits to manage deferred context switches of ACE states. Machine mode software should be more conservative in managing context switches using XS bits
  382. * 0:Off
  383. * 1:Initial
  384. * 2:Clean
  385. * 3:Dirty
  386. */
  387. #define CSR_SSTATUS_XS_MASK (0x18000UL)
  388. #define CSR_SSTATUS_XS_SHIFT (15U)
  389. #define CSR_SSTATUS_XS_GET(x) (((uint32_t)(x) & CSR_SSTATUS_XS_MASK) >> CSR_SSTATUS_XS_SHIFT)
  390. /*
  391. * FS (RW)
  392. *
  393. * FS holds the status of the architectural states of the floating-point unit, including the fcsr CSR and f0 – f31 floating-point data registers. The value of this field is zero and read-only if the processor does not have FPU.
  394. * This field is primarily managed by software. The processor hardware assists the state managements in two regards:
  395. * Attempts to access fcsr or any f register raise an illegal-instruction exception when FS is Off.
  396. * Otherwise, FS is updated to the Dirty state by any instruction that updates fcsr or any f register.
  397. * Changing the setting of this field has no effect on the contents of the floating-point register states. In particular, setting FS to Off does not destroy the states, nor does setting FS to Initial clear the contents.
  398. * The same copy of FS bits are shared by both mstatus and sstatus. Normally the supervisor mode privileged software would use the FS bits to manage deferred context switches of FPU states. Machine mode software should be more conservative in managing context switches using FS bits.
  399. * 0:Off
  400. * 1:Initial
  401. * 2:Clean
  402. * 3:Dirty
  403. */
  404. #define CSR_SSTATUS_FS_MASK (0x6000U)
  405. #define CSR_SSTATUS_FS_SHIFT (13U)
  406. #define CSR_SSTATUS_FS_SET(x) (((uint32_t)(x) << CSR_SSTATUS_FS_SHIFT) & CSR_SSTATUS_FS_MASK)
  407. #define CSR_SSTATUS_FS_GET(x) (((uint32_t)(x) & CSR_SSTATUS_FS_MASK) >> CSR_SSTATUS_FS_SHIFT)
  408. /*
  409. * SPP (RW)
  410. *
  411. * SPP holds the privilege mode prior to a trap. Encoding is 1 for S-mode and 0 for U-mode.
  412. */
  413. #define CSR_SSTATUS_SPP_MASK (0x100U)
  414. #define CSR_SSTATUS_SPP_SHIFT (8U)
  415. #define CSR_SSTATUS_SPP_SET(x) (((uint32_t)(x) << CSR_SSTATUS_SPP_SHIFT) & CSR_SSTATUS_SPP_MASK)
  416. #define CSR_SSTATUS_SPP_GET(x) (((uint32_t)(x) & CSR_SSTATUS_SPP_MASK) >> CSR_SSTATUS_SPP_SHIFT)
  417. /*
  418. * SPIE (RW)
  419. *
  420. * SPIE holds the value of the SIE bit prior to a trap.
  421. */
  422. #define CSR_SSTATUS_SPIE_MASK (0x20U)
  423. #define CSR_SSTATUS_SPIE_SHIFT (5U)
  424. #define CSR_SSTATUS_SPIE_SET(x) (((uint32_t)(x) << CSR_SSTATUS_SPIE_SHIFT) & CSR_SSTATUS_SPIE_MASK)
  425. #define CSR_SSTATUS_SPIE_GET(x) (((uint32_t)(x) & CSR_SSTATUS_SPIE_MASK) >> CSR_SSTATUS_SPIE_SHIFT)
  426. /*
  427. * UPIE (RW)
  428. *
  429. * UPIE holds the value of the UIE bit prior to a trap.
  430. */
  431. #define CSR_SSTATUS_UPIE_MASK (0x10U)
  432. #define CSR_SSTATUS_UPIE_SHIFT (4U)
  433. #define CSR_SSTATUS_UPIE_SET(x) (((uint32_t)(x) << CSR_SSTATUS_UPIE_SHIFT) & CSR_SSTATUS_UPIE_MASK)
  434. #define CSR_SSTATUS_UPIE_GET(x) (((uint32_t)(x) & CSR_SSTATUS_UPIE_MASK) >> CSR_SSTATUS_UPIE_SHIFT)
  435. /*
  436. * SIE (RW)
  437. *
  438. * S mode interrupt enable bit
  439. * 0 Disabled
  440. * 1 Enabled
  441. */
  442. #define CSR_SSTATUS_SIE_MASK (0x2U)
  443. #define CSR_SSTATUS_SIE_SHIFT (1U)
  444. #define CSR_SSTATUS_SIE_SET(x) (((uint32_t)(x) << CSR_SSTATUS_SIE_SHIFT) & CSR_SSTATUS_SIE_MASK)
  445. #define CSR_SSTATUS_SIE_GET(x) (((uint32_t)(x) & CSR_SSTATUS_SIE_MASK) >> CSR_SSTATUS_SIE_SHIFT)
  446. /*
  447. * UIE (RW)
  448. *
  449. * U mode interrupt enable bit.
  450. * 0 Disabled
  451. * 1 Enabled
  452. */
  453. #define CSR_SSTATUS_UIE_MASK (0x1U)
  454. #define CSR_SSTATUS_UIE_SHIFT (0U)
  455. #define CSR_SSTATUS_UIE_SET(x) (((uint32_t)(x) << CSR_SSTATUS_UIE_SHIFT) & CSR_SSTATUS_UIE_MASK)
  456. #define CSR_SSTATUS_UIE_GET(x) (((uint32_t)(x) & CSR_SSTATUS_UIE_MASK) >> CSR_SSTATUS_UIE_SHIFT)
  457. /* Bitfield definition for register: SEDELEG */
  458. /*
  459. * SPF (RW)
  460. *
  461. * SPF indicates whether a Store/AMO Page Fault exception will be delegated to U-mode
  462. * 0:Do not redirect
  463. * 1:Redirect
  464. */
  465. #define CSR_SEDELEG_SPF_MASK (0x8000U)
  466. #define CSR_SEDELEG_SPF_SHIFT (15U)
  467. #define CSR_SEDELEG_SPF_SET(x) (((uint32_t)(x) << CSR_SEDELEG_SPF_SHIFT) & CSR_SEDELEG_SPF_MASK)
  468. #define CSR_SEDELEG_SPF_GET(x) (((uint32_t)(x) & CSR_SEDELEG_SPF_MASK) >> CSR_SEDELEG_SPF_SHIFT)
  469. /*
  470. * LPF (RW)
  471. *
  472. * LPF indicates whether a Load Page Fault exception will be delegated to U-mode
  473. * 0:Do not redirect
  474. * 1:Redirect
  475. */
  476. #define CSR_SEDELEG_LPF_MASK (0x2000U)
  477. #define CSR_SEDELEG_LPF_SHIFT (13U)
  478. #define CSR_SEDELEG_LPF_SET(x) (((uint32_t)(x) << CSR_SEDELEG_LPF_SHIFT) & CSR_SEDELEG_LPF_MASK)
  479. #define CSR_SEDELEG_LPF_GET(x) (((uint32_t)(x) & CSR_SEDELEG_LPF_MASK) >> CSR_SEDELEG_LPF_SHIFT)
  480. /*
  481. * IPF (RW)
  482. *
  483. * IPF indicates whether an Instruction Page Fault exception will be delegated to U-mode
  484. * 0:Do not redirect
  485. * 1:Redirect
  486. */
  487. #define CSR_SEDELEG_IPF_MASK (0x1000U)
  488. #define CSR_SEDELEG_IPF_SHIFT (12U)
  489. #define CSR_SEDELEG_IPF_SET(x) (((uint32_t)(x) << CSR_SEDELEG_IPF_SHIFT) & CSR_SEDELEG_IPF_MASK)
  490. #define CSR_SEDELEG_IPF_GET(x) (((uint32_t)(x) & CSR_SEDELEG_IPF_MASK) >> CSR_SEDELEG_IPF_SHIFT)
  491. /*
  492. * UEC (RW)
  493. *
  494. * UEC indicates whether an exception triggered by environment call from U-mode will be delegated to U-mode
  495. * 0:Do not redirect
  496. * 1:Redirect
  497. */
  498. #define CSR_SEDELEG_UEC_MASK (0x100U)
  499. #define CSR_SEDELEG_UEC_SHIFT (8U)
  500. #define CSR_SEDELEG_UEC_SET(x) (((uint32_t)(x) << CSR_SEDELEG_UEC_SHIFT) & CSR_SEDELEG_UEC_MASK)
  501. #define CSR_SEDELEG_UEC_GET(x) (((uint32_t)(x) & CSR_SEDELEG_UEC_MASK) >> CSR_SEDELEG_UEC_SHIFT)
  502. /*
  503. * SAF (RW)
  504. *
  505. * SAF indicates whether a Store/AMO Access Fault exception will be delegated to U-mode
  506. * 0:Do not redirect
  507. * 1:Redirect
  508. */
  509. #define CSR_SEDELEG_SAF_MASK (0x80U)
  510. #define CSR_SEDELEG_SAF_SHIFT (7U)
  511. #define CSR_SEDELEG_SAF_SET(x) (((uint32_t)(x) << CSR_SEDELEG_SAF_SHIFT) & CSR_SEDELEG_SAF_MASK)
  512. #define CSR_SEDELEG_SAF_GET(x) (((uint32_t)(x) & CSR_SEDELEG_SAF_MASK) >> CSR_SEDELEG_SAF_SHIFT)
  513. /*
  514. * SAM (RW)
  515. *
  516. * SAM indicates whether a Store/AMO Address Misaligned exception will be delegated to U-mode
  517. * 0:Do not redirect
  518. * 1:Redirect
  519. */
  520. #define CSR_SEDELEG_SAM_MASK (0x40U)
  521. #define CSR_SEDELEG_SAM_SHIFT (6U)
  522. #define CSR_SEDELEG_SAM_SET(x) (((uint32_t)(x) << CSR_SEDELEG_SAM_SHIFT) & CSR_SEDELEG_SAM_MASK)
  523. #define CSR_SEDELEG_SAM_GET(x) (((uint32_t)(x) & CSR_SEDELEG_SAM_MASK) >> CSR_SEDELEG_SAM_SHIFT)
  524. /*
  525. * LAF (RW)
  526. *
  527. * LAF indicates whether a Load Access Fault exception will be delegated to U-mode
  528. * 0:Do not redirect
  529. * 1:Redirect
  530. */
  531. #define CSR_SEDELEG_LAF_MASK (0x20U)
  532. #define CSR_SEDELEG_LAF_SHIFT (5U)
  533. #define CSR_SEDELEG_LAF_SET(x) (((uint32_t)(x) << CSR_SEDELEG_LAF_SHIFT) & CSR_SEDELEG_LAF_MASK)
  534. #define CSR_SEDELEG_LAF_GET(x) (((uint32_t)(x) & CSR_SEDELEG_LAF_MASK) >> CSR_SEDELEG_LAF_SHIFT)
  535. /*
  536. * LAM (RW)
  537. *
  538. * LAM indicates whether a Load Address Misaligned exception will be delegated to U-mode
  539. * 0:Do not redirect
  540. * 1:Redirect
  541. */
  542. #define CSR_SEDELEG_LAM_MASK (0x10U)
  543. #define CSR_SEDELEG_LAM_SHIFT (4U)
  544. #define CSR_SEDELEG_LAM_SET(x) (((uint32_t)(x) << CSR_SEDELEG_LAM_SHIFT) & CSR_SEDELEG_LAM_MASK)
  545. #define CSR_SEDELEG_LAM_GET(x) (((uint32_t)(x) & CSR_SEDELEG_LAM_MASK) >> CSR_SEDELEG_LAM_SHIFT)
  546. /*
  547. * B (RW)
  548. *
  549. * B indicates whether an exception triggered by breakpoint will be delegated to U-mode
  550. * 0:Do not redirect
  551. * 1:Redirect
  552. */
  553. #define CSR_SEDELEG_B_MASK (0x8U)
  554. #define CSR_SEDELEG_B_SHIFT (3U)
  555. #define CSR_SEDELEG_B_SET(x) (((uint32_t)(x) << CSR_SEDELEG_B_SHIFT) & CSR_SEDELEG_B_MASK)
  556. #define CSR_SEDELEG_B_GET(x) (((uint32_t)(x) & CSR_SEDELEG_B_MASK) >> CSR_SEDELEG_B_SHIFT)
  557. /*
  558. * II (RW)
  559. *
  560. * II indicates whether an Illegal Instruction exception will be delegated to U-mode
  561. * 0:Do not redirect
  562. * 1:Redirect
  563. */
  564. #define CSR_SEDELEG_II_MASK (0x4U)
  565. #define CSR_SEDELEG_II_SHIFT (2U)
  566. #define CSR_SEDELEG_II_SET(x) (((uint32_t)(x) << CSR_SEDELEG_II_SHIFT) & CSR_SEDELEG_II_MASK)
  567. #define CSR_SEDELEG_II_GET(x) (((uint32_t)(x) & CSR_SEDELEG_II_MASK) >> CSR_SEDELEG_II_SHIFT)
  568. /*
  569. * IAF (RW)
  570. *
  571. * IAF indicates whether an Instruction Access Fault exception will be delegated to U-mode
  572. * 0:Do not redirect
  573. * 1:Redirect
  574. */
  575. #define CSR_SEDELEG_IAF_MASK (0x2U)
  576. #define CSR_SEDELEG_IAF_SHIFT (1U)
  577. #define CSR_SEDELEG_IAF_SET(x) (((uint32_t)(x) << CSR_SEDELEG_IAF_SHIFT) & CSR_SEDELEG_IAF_MASK)
  578. #define CSR_SEDELEG_IAF_GET(x) (((uint32_t)(x) & CSR_SEDELEG_IAF_MASK) >> CSR_SEDELEG_IAF_SHIFT)
  579. /*
  580. * IAM (RW)
  581. *
  582. * IAM indicates whether an Instruction Address Misaligned exception will be delegated to U-mode..
  583. * 0:Do not redirect
  584. * 1:Redirect
  585. */
  586. #define CSR_SEDELEG_IAM_MASK (0x1U)
  587. #define CSR_SEDELEG_IAM_SHIFT (0U)
  588. #define CSR_SEDELEG_IAM_SET(x) (((uint32_t)(x) << CSR_SEDELEG_IAM_SHIFT) & CSR_SEDELEG_IAM_MASK)
  589. #define CSR_SEDELEG_IAM_GET(x) (((uint32_t)(x) & CSR_SEDELEG_IAM_MASK) >> CSR_SEDELEG_IAM_SHIFT)
  590. /* Bitfield definition for register: SIDELEG */
  591. /*
  592. * UEI (RW)
  593. *
  594. * UEI indicates whether an U-mode external interrupt will be delegated to S-mode
  595. * 0:Do not redirect
  596. * 1:Redirect
  597. */
  598. #define CSR_SIDELEG_UEI_MASK (0x100U)
  599. #define CSR_SIDELEG_UEI_SHIFT (8U)
  600. #define CSR_SIDELEG_UEI_SET(x) (((uint32_t)(x) << CSR_SIDELEG_UEI_SHIFT) & CSR_SIDELEG_UEI_MASK)
  601. #define CSR_SIDELEG_UEI_GET(x) (((uint32_t)(x) & CSR_SIDELEG_UEI_MASK) >> CSR_SIDELEG_UEI_SHIFT)
  602. /*
  603. * UTI (RW)
  604. *
  605. * UTI indicates whether an U-mode timer interrupt will be delegated to S-mode
  606. * 0:Do not redirect
  607. * 1:Redirect
  608. */
  609. #define CSR_SIDELEG_UTI_MASK (0x10U)
  610. #define CSR_SIDELEG_UTI_SHIFT (4U)
  611. #define CSR_SIDELEG_UTI_SET(x) (((uint32_t)(x) << CSR_SIDELEG_UTI_SHIFT) & CSR_SIDELEG_UTI_MASK)
  612. #define CSR_SIDELEG_UTI_GET(x) (((uint32_t)(x) & CSR_SIDELEG_UTI_MASK) >> CSR_SIDELEG_UTI_SHIFT)
  613. /*
  614. * USI (RW)
  615. *
  616. * USI indicates whether an U-mode software interrupt will be delegated to S-mode.
  617. * 0:Do not redirect
  618. * 1:Redirect
  619. */
  620. #define CSR_SIDELEG_USI_MASK (0x1U)
  621. #define CSR_SIDELEG_USI_SHIFT (0U)
  622. #define CSR_SIDELEG_USI_SET(x) (((uint32_t)(x) << CSR_SIDELEG_USI_SHIFT) & CSR_SIDELEG_USI_MASK)
  623. #define CSR_SIDELEG_USI_GET(x) (((uint32_t)(x) & CSR_SIDELEG_USI_MASK) >> CSR_SIDELEG_USI_SHIFT)
  624. /* Bitfield definition for register: SIE */
  625. /*
  626. * SEIE (RW)
  627. *
  628. * S mode external interrupt enable bit
  629. * 0:Disabled
  630. * 1:Enabled
  631. */
  632. #define CSR_SIE_SEIE_MASK (0x200U)
  633. #define CSR_SIE_SEIE_SHIFT (9U)
  634. #define CSR_SIE_SEIE_SET(x) (((uint32_t)(x) << CSR_SIE_SEIE_SHIFT) & CSR_SIE_SEIE_MASK)
  635. #define CSR_SIE_SEIE_GET(x) (((uint32_t)(x) & CSR_SIE_SEIE_MASK) >> CSR_SIE_SEIE_SHIFT)
  636. /*
  637. * UEIE (RW)
  638. *
  639. * U mode external interrupt enable bit
  640. * 0:Disabled
  641. * 1:Enabled
  642. */
  643. #define CSR_SIE_UEIE_MASK (0x100U)
  644. #define CSR_SIE_UEIE_SHIFT (8U)
  645. #define CSR_SIE_UEIE_SET(x) (((uint32_t)(x) << CSR_SIE_UEIE_SHIFT) & CSR_SIE_UEIE_MASK)
  646. #define CSR_SIE_UEIE_GET(x) (((uint32_t)(x) & CSR_SIE_UEIE_MASK) >> CSR_SIE_UEIE_SHIFT)
  647. /*
  648. * STIE (RW)
  649. *
  650. * S mode timer interrupt enable bit.
  651. * 0:Disabled
  652. * 1:Enabled
  653. */
  654. #define CSR_SIE_STIE_MASK (0x20U)
  655. #define CSR_SIE_STIE_SHIFT (5U)
  656. #define CSR_SIE_STIE_SET(x) (((uint32_t)(x) << CSR_SIE_STIE_SHIFT) & CSR_SIE_STIE_MASK)
  657. #define CSR_SIE_STIE_GET(x) (((uint32_t)(x) & CSR_SIE_STIE_MASK) >> CSR_SIE_STIE_SHIFT)
  658. /*
  659. * UTIE (RW)
  660. *
  661. * U mode timer interrupt enable bit
  662. * 0:Disabled
  663. * 1:Enabled
  664. */
  665. #define CSR_SIE_UTIE_MASK (0x10U)
  666. #define CSR_SIE_UTIE_SHIFT (4U)
  667. #define CSR_SIE_UTIE_SET(x) (((uint32_t)(x) << CSR_SIE_UTIE_SHIFT) & CSR_SIE_UTIE_MASK)
  668. #define CSR_SIE_UTIE_GET(x) (((uint32_t)(x) & CSR_SIE_UTIE_MASK) >> CSR_SIE_UTIE_SHIFT)
  669. /*
  670. * SSIE (RW)
  671. *
  672. * S mode software interrupt enable bit.
  673. * 0:Disabled
  674. * 1:Enabled
  675. */
  676. #define CSR_SIE_SSIE_MASK (0x2U)
  677. #define CSR_SIE_SSIE_SHIFT (1U)
  678. #define CSR_SIE_SSIE_SET(x) (((uint32_t)(x) << CSR_SIE_SSIE_SHIFT) & CSR_SIE_SSIE_MASK)
  679. #define CSR_SIE_SSIE_GET(x) (((uint32_t)(x) & CSR_SIE_SSIE_MASK) >> CSR_SIE_SSIE_SHIFT)
  680. /*
  681. * USIE (RW)
  682. *
  683. * U mode software interrupt enable bit.
  684. * 0:Disabled
  685. * 1:Enabled
  686. */
  687. #define CSR_SIE_USIE_MASK (0x1U)
  688. #define CSR_SIE_USIE_SHIFT (0U)
  689. #define CSR_SIE_USIE_SET(x) (((uint32_t)(x) << CSR_SIE_USIE_SHIFT) & CSR_SIE_USIE_MASK)
  690. #define CSR_SIE_USIE_GET(x) (((uint32_t)(x) & CSR_SIE_USIE_MASK) >> CSR_SIE_USIE_SHIFT)
  691. /* Bitfield definition for register: STVEC */
  692. /*
  693. * BASE_31_2 (RW)
  694. *
  695. * Base address for interrupt and exception handlers. See description above for alignment requirements when PLIC is in the vector mode.
  696. */
  697. #define CSR_STVEC_BASE_31_2_MASK (0xFFFFFFFCUL)
  698. #define CSR_STVEC_BASE_31_2_SHIFT (2U)
  699. #define CSR_STVEC_BASE_31_2_SET(x) (((uint32_t)(x) << CSR_STVEC_BASE_31_2_SHIFT) & CSR_STVEC_BASE_31_2_MASK)
  700. #define CSR_STVEC_BASE_31_2_GET(x) (((uint32_t)(x) & CSR_STVEC_BASE_31_2_MASK) >> CSR_STVEC_BASE_31_2_SHIFT)
  701. /* Bitfield definition for register: SSCRATCH */
  702. /*
  703. * SSCRATCH (RW)
  704. *
  705. * Scratch register storage.
  706. */
  707. #define CSR_SSCRATCH_SSCRATCH_MASK (0xFFFFFFFFUL)
  708. #define CSR_SSCRATCH_SSCRATCH_SHIFT (0U)
  709. #define CSR_SSCRATCH_SSCRATCH_SET(x) (((uint32_t)(x) << CSR_SSCRATCH_SSCRATCH_SHIFT) & CSR_SSCRATCH_SSCRATCH_MASK)
  710. #define CSR_SSCRATCH_SSCRATCH_GET(x) (((uint32_t)(x) & CSR_SSCRATCH_SSCRATCH_MASK) >> CSR_SSCRATCH_SSCRATCH_SHIFT)
  711. /* Bitfield definition for register: SEPC */
  712. /*
  713. * EPC (RW)
  714. *
  715. * Exception program counter.
  716. */
  717. #define CSR_SEPC_EPC_MASK (0xFFFFFFFEUL)
  718. #define CSR_SEPC_EPC_SHIFT (1U)
  719. #define CSR_SEPC_EPC_SET(x) (((uint32_t)(x) << CSR_SEPC_EPC_SHIFT) & CSR_SEPC_EPC_MASK)
  720. #define CSR_SEPC_EPC_GET(x) (((uint32_t)(x) & CSR_SEPC_EPC_MASK) >> CSR_SEPC_EPC_SHIFT)
  721. /* Bitfield definition for register: SCAUSE */
  722. /*
  723. * INTERRUPT (RW)
  724. *
  725. * Interrupt.
  726. */
  727. #define CSR_SCAUSE_INTERRUPT_MASK (0x80000000UL)
  728. #define CSR_SCAUSE_INTERRUPT_SHIFT (31U)
  729. #define CSR_SCAUSE_INTERRUPT_SET(x) (((uint32_t)(x) << CSR_SCAUSE_INTERRUPT_SHIFT) & CSR_SCAUSE_INTERRUPT_MASK)
  730. #define CSR_SCAUSE_INTERRUPT_GET(x) (((uint32_t)(x) & CSR_SCAUSE_INTERRUPT_MASK) >> CSR_SCAUSE_INTERRUPT_SHIFT)
  731. /*
  732. * EXCEPTION_CODE (RW)
  733. *
  734. * Exception Code.
  735. * When interrupt is 1:
  736. * 0:User software interrupt
  737. * 1:Supervisor software interrupt
  738. * 4:User timer interrupt
  739. * 5:Supervisor timer interrupt
  740. * 8:User external interrupt
  741. * 9:Supervisor external interrupt
  742. * 256+16:Slave port ECC error interrupt (S-mode)
  743. * 256+17:Bus write transaction error interrupt (S-mode)
  744. * 256+18:Performance monitor overflow interrupt(S-mode)
  745. * When interrupt is 0:
  746. * 0:Instruction address misaligned
  747. * 1:Instruction access fault
  748. * 2:Illegal instruction
  749. * 3:Breakpoint
  750. * 4:Load address misaligned
  751. * 5:Load access fault
  752. * 6:Store/AMO address misaligned
  753. * 7:Store/AMO access fault
  754. * 8:Environment call from U-mode
  755. * 9:Environment call from S-mode
  756. * 11:10:Reserved
  757. * 12:Instruction page fault
  758. * 13:Load page fault
  759. * 14:Reserved
  760. * 15:Store/AMO page fault
  761. * 32:Stack overflow exception
  762. * 33:Stack underflow exception
  763. * 40-47:Reserved
  764. */
  765. #define CSR_SCAUSE_EXCEPTION_CODE_MASK (0x3FFU)
  766. #define CSR_SCAUSE_EXCEPTION_CODE_SHIFT (0U)
  767. #define CSR_SCAUSE_EXCEPTION_CODE_SET(x) (((uint32_t)(x) << CSR_SCAUSE_EXCEPTION_CODE_SHIFT) & CSR_SCAUSE_EXCEPTION_CODE_MASK)
  768. #define CSR_SCAUSE_EXCEPTION_CODE_GET(x) (((uint32_t)(x) & CSR_SCAUSE_EXCEPTION_CODE_MASK) >> CSR_SCAUSE_EXCEPTION_CODE_SHIFT)
  769. /* Bitfield definition for register: STVAL */
  770. /*
  771. * STVAL (RW)
  772. *
  773. * Exception-specific information for software trap handling.
  774. */
  775. #define CSR_STVAL_STVAL_MASK (0xFFFFFFFFUL)
  776. #define CSR_STVAL_STVAL_SHIFT (0U)
  777. #define CSR_STVAL_STVAL_SET(x) (((uint32_t)(x) << CSR_STVAL_STVAL_SHIFT) & CSR_STVAL_STVAL_MASK)
  778. #define CSR_STVAL_STVAL_GET(x) (((uint32_t)(x) & CSR_STVAL_STVAL_MASK) >> CSR_STVAL_STVAL_SHIFT)
  779. /* Bitfield definition for register: SIP */
  780. /*
  781. * SEIP (RO)
  782. *
  783. * S mode external interrupt pending bit.
  784. * 0:Not pending
  785. * 1:Pending
  786. */
  787. #define CSR_SIP_SEIP_MASK (0x200U)
  788. #define CSR_SIP_SEIP_SHIFT (9U)
  789. #define CSR_SIP_SEIP_GET(x) (((uint32_t)(x) & CSR_SIP_SEIP_MASK) >> CSR_SIP_SEIP_SHIFT)
  790. /*
  791. * UEIP (RW)
  792. *
  793. * U mode external interrupt pending bit.
  794. * 0:Not pending
  795. * 1:Pending
  796. */
  797. #define CSR_SIP_UEIP_MASK (0x100U)
  798. #define CSR_SIP_UEIP_SHIFT (8U)
  799. #define CSR_SIP_UEIP_SET(x) (((uint32_t)(x) << CSR_SIP_UEIP_SHIFT) & CSR_SIP_UEIP_MASK)
  800. #define CSR_SIP_UEIP_GET(x) (((uint32_t)(x) & CSR_SIP_UEIP_MASK) >> CSR_SIP_UEIP_SHIFT)
  801. /*
  802. * STIP (RO)
  803. *
  804. * S mode timer interrupt pending bit.
  805. * 0:Not pending
  806. * 1:Pending
  807. */
  808. #define CSR_SIP_STIP_MASK (0x20U)
  809. #define CSR_SIP_STIP_SHIFT (5U)
  810. #define CSR_SIP_STIP_GET(x) (((uint32_t)(x) & CSR_SIP_STIP_MASK) >> CSR_SIP_STIP_SHIFT)
  811. /*
  812. * UTIP (RO)
  813. *
  814. * U mode timer interrupt pending bit
  815. * 0:Not pending
  816. * 1:Pending
  817. */
  818. #define CSR_SIP_UTIP_MASK (0x10U)
  819. #define CSR_SIP_UTIP_SHIFT (4U)
  820. #define CSR_SIP_UTIP_GET(x) (((uint32_t)(x) & CSR_SIP_UTIP_MASK) >> CSR_SIP_UTIP_SHIFT)
  821. /*
  822. * SSIP (RW)
  823. *
  824. * S mode software interrupt pending bit.
  825. * 0:Not pending
  826. * 1:Pending
  827. */
  828. #define CSR_SIP_SSIP_MASK (0x2U)
  829. #define CSR_SIP_SSIP_SHIFT (1U)
  830. #define CSR_SIP_SSIP_SET(x) (((uint32_t)(x) << CSR_SIP_SSIP_SHIFT) & CSR_SIP_SSIP_MASK)
  831. #define CSR_SIP_SSIP_GET(x) (((uint32_t)(x) & CSR_SIP_SSIP_MASK) >> CSR_SIP_SSIP_SHIFT)
  832. /*
  833. * USIP (RW)
  834. *
  835. * U mode software interrupt pending bit.
  836. * 0:Not pending
  837. * 1:Pending
  838. */
  839. #define CSR_SIP_USIP_MASK (0x1U)
  840. #define CSR_SIP_USIP_SHIFT (0U)
  841. #define CSR_SIP_USIP_SET(x) (((uint32_t)(x) << CSR_SIP_USIP_SHIFT) & CSR_SIP_USIP_MASK)
  842. #define CSR_SIP_USIP_GET(x) (((uint32_t)(x) & CSR_SIP_USIP_MASK) >> CSR_SIP_USIP_SHIFT)
  843. /* Bitfield definition for register: SATP */
  844. /*
  845. * MODE (RW)
  846. *
  847. * MODE holds the page translation mode. When MODE is Bare, virtual addresses are equal to physical addresses in S-mode. When MMU is
  848. * not supported in the product, this CSR will be
  849. * hardwired to 0.
  850. * 0:No page translation
  851. * 1:Page-based 32-bit virtual addressing
  852. */
  853. #define CSR_SATP_MODE_MASK (0x80000000UL)
  854. #define CSR_SATP_MODE_SHIFT (31U)
  855. #define CSR_SATP_MODE_SET(x) (((uint32_t)(x) << CSR_SATP_MODE_SHIFT) & CSR_SATP_MODE_MASK)
  856. #define CSR_SATP_MODE_GET(x) (((uint32_t)(x) & CSR_SATP_MODE_MASK) >> CSR_SATP_MODE_SHIFT)
  857. /*
  858. * ASID (RW)
  859. *
  860. * ASID holds the address space identifier.
  861. */
  862. #define CSR_SATP_ASID_MASK (0x7FC00000UL)
  863. #define CSR_SATP_ASID_SHIFT (22U)
  864. #define CSR_SATP_ASID_SET(x) (((uint32_t)(x) << CSR_SATP_ASID_SHIFT) & CSR_SATP_ASID_MASK)
  865. #define CSR_SATP_ASID_GET(x) (((uint32_t)(x) & CSR_SATP_ASID_MASK) >> CSR_SATP_ASID_SHIFT)
  866. /*
  867. * PPN (RW)
  868. *
  869. * PPN holds the physical page number of the root page table.
  870. */
  871. #define CSR_SATP_PPN_MASK (0x3FFFFFUL)
  872. #define CSR_SATP_PPN_SHIFT (0U)
  873. #define CSR_SATP_PPN_SET(x) (((uint32_t)(x) << CSR_SATP_PPN_SHIFT) & CSR_SATP_PPN_MASK)
  874. #define CSR_SATP_PPN_GET(x) (((uint32_t)(x) & CSR_SATP_PPN_MASK) >> CSR_SATP_PPN_SHIFT)
  875. /* Bitfield definition for register: MSTATUS */
  876. /*
  877. * SD (RO)
  878. *
  879. * SD summarizes whether either the FS field or XS field is dirty.
  880. */
  881. #define CSR_MSTATUS_SD_MASK (0x80000000UL)
  882. #define CSR_MSTATUS_SD_SHIFT (31U)
  883. #define CSR_MSTATUS_SD_GET(x) (((uint32_t)(x) & CSR_MSTATUS_SD_MASK) >> CSR_MSTATUS_SD_SHIFT)
  884. /*
  885. * TSR (RW)
  886. *
  887. * TSR controls whether executing SRET instructions in S-mode will raise illegal instruction exceptions. It is hardwired to 0 when S-mode is not supported.
  888. * 0: Normal execution
  889. * 1: Raising exceptions
  890. */
  891. #define CSR_MSTATUS_TSR_MASK (0x400000UL)
  892. #define CSR_MSTATUS_TSR_SHIFT (22U)
  893. #define CSR_MSTATUS_TSR_SET(x) (((uint32_t)(x) << CSR_MSTATUS_TSR_SHIFT) & CSR_MSTATUS_TSR_MASK)
  894. #define CSR_MSTATUS_TSR_GET(x) (((uint32_t)(x) & CSR_MSTATUS_TSR_MASK) >> CSR_MSTATUS_TSR_SHIFT)
  895. /*
  896. * TW (RW)
  897. *
  898. * TW controls whether executing WFI instructions in S-mode will raise illegal instruction exceptions. It is hardwired to 0 when S-mode is not supported.
  899. * 0: Normal execution
  900. * 1: Raising exceptions
  901. */
  902. #define CSR_MSTATUS_TW_MASK (0x200000UL)
  903. #define CSR_MSTATUS_TW_SHIFT (21U)
  904. #define CSR_MSTATUS_TW_SET(x) (((uint32_t)(x) << CSR_MSTATUS_TW_SHIFT) & CSR_MSTATUS_TW_MASK)
  905. #define CSR_MSTATUS_TW_GET(x) (((uint32_t)(x) & CSR_MSTATUS_TW_MASK) >> CSR_MSTATUS_TW_SHIFT)
  906. /*
  907. * TVM (RW)
  908. *
  909. * TVM controls whether performing certain virtual memory operations in S-mode will raise illegal instruction exceptions. The operations include accessing the satp register and executing the SFENCE.VMA instruction. It is hardwired to 0 when S-mode is not supported.
  910. * 0:Normal execution
  911. * 1:Raising exceptions
  912. */
  913. #define CSR_MSTATUS_TVM_MASK (0x100000UL)
  914. #define CSR_MSTATUS_TVM_SHIFT (20U)
  915. #define CSR_MSTATUS_TVM_SET(x) (((uint32_t)(x) << CSR_MSTATUS_TVM_SHIFT) & CSR_MSTATUS_TVM_MASK)
  916. #define CSR_MSTATUS_TVM_GET(x) (((uint32_t)(x) & CSR_MSTATUS_TVM_MASK) >> CSR_MSTATUS_TVM_SHIFT)
  917. /*
  918. * MXR (RW)
  919. *
  920. * MXR controls whether execute-only pages are readable. It has no effect when page-based virtual memory is not in effect
  921. * 0:Execute-only pages are not readable
  922. * 1:Execute-only pages are readable
  923. */
  924. #define CSR_MSTATUS_MXR_MASK (0x80000UL)
  925. #define CSR_MSTATUS_MXR_SHIFT (19U)
  926. #define CSR_MSTATUS_MXR_SET(x) (((uint32_t)(x) << CSR_MSTATUS_MXR_SHIFT) & CSR_MSTATUS_MXR_MASK)
  927. #define CSR_MSTATUS_MXR_GET(x) (((uint32_t)(x) & CSR_MSTATUS_MXR_MASK) >> CSR_MSTATUS_MXR_SHIFT)
  928. /*
  929. * SUM (RW)
  930. *
  931. * SUM controls whether a S-mode load/store instruction to a user accessible page is allowed or not when page translation is enabled. It is in effect in two scenarios: (a) M-mode with MPRV=1 and MPP=S, and (b) in S-mode. It has no effect when page-based virtual memory is not in effect. A page is user accessible when the U bit of the corresponding PTE entry is 1. It is hardwired to 0 when S-mode is not supported.
  932. * 0:Not Allowed
  933. * 1:Allowed
  934. */
  935. #define CSR_MSTATUS_SUM_MASK (0x40000UL)
  936. #define CSR_MSTATUS_SUM_SHIFT (18U)
  937. #define CSR_MSTATUS_SUM_SET(x) (((uint32_t)(x) << CSR_MSTATUS_SUM_SHIFT) & CSR_MSTATUS_SUM_MASK)
  938. #define CSR_MSTATUS_SUM_GET(x) (((uint32_t)(x) & CSR_MSTATUS_SUM_MASK) >> CSR_MSTATUS_SUM_SHIFT)
  939. /*
  940. * MPRV (RW)
  941. *
  942. * When the MPRV bit is set, the memory access privilege for load and store are specified by the MPP field. When U-mode is not available, this field is hardwired to 0.
  943. */
  944. #define CSR_MSTATUS_MPRV_MASK (0x20000UL)
  945. #define CSR_MSTATUS_MPRV_SHIFT (17U)
  946. #define CSR_MSTATUS_MPRV_SET(x) (((uint32_t)(x) << CSR_MSTATUS_MPRV_SHIFT) & CSR_MSTATUS_MPRV_MASK)
  947. #define CSR_MSTATUS_MPRV_GET(x) (((uint32_t)(x) & CSR_MSTATUS_MPRV_MASK) >> CSR_MSTATUS_MPRV_SHIFT)
  948. /*
  949. * XS (RO)
  950. *
  951. * XS holds the status of the architectural states (ACE registers) of ACE instructions. The value of this field is zero if ACE extension is not configured. This field is primarily managed by software. The processor hardware assists the state managements in two regards:
  952. * Illegal instruction exceptions are triggered when XS is Off.
  953. * XS is updated to the Dirty state with the execution of ACE instructions when XS is not Off. Changing the setting of this field has no effect on the contents of ACE states. In particular, setting XS to Off does not destroy the states, nor does setting XS to Initial clear the contents.
  954. * 0:Off
  955. * 1:Initial
  956. * 2:Clean
  957. * 3:Dirty
  958. */
  959. #define CSR_MSTATUS_XS_MASK (0x18000UL)
  960. #define CSR_MSTATUS_XS_SHIFT (15U)
  961. #define CSR_MSTATUS_XS_GET(x) (((uint32_t)(x) & CSR_MSTATUS_XS_MASK) >> CSR_MSTATUS_XS_SHIFT)
  962. /*
  963. * FS (RW)
  964. *
  965. * FS holds the status of the architectural states of the floating-point unit, including the fcsr CSR and f0 – f31 floating-point data registers. The value of this field is zero and read-only if the processor does not have FPU. This field is primarily managed by software. The processor hardware assists the state
  966. * managements in two regards:
  967. * Attempts to access fcsr or any f register raise an illegal-instruction exception when FS is Off.
  968. * FS is updated to the Dirty state with the execution of any instruction that updates fcsr or any f register when FS is Initial or Clean. Changing the setting of this field has no effect on the contents of the floating-point register states. In particular, setting FS to Off does not destroy the states, nor does setting FS to Initial clear the contents.
  969. * 0:Off
  970. * 1:Initial
  971. * 2:Clean
  972. * 3:Dirty
  973. */
  974. #define CSR_MSTATUS_FS_MASK (0x6000U)
  975. #define CSR_MSTATUS_FS_SHIFT (13U)
  976. #define CSR_MSTATUS_FS_SET(x) (((uint32_t)(x) << CSR_MSTATUS_FS_SHIFT) & CSR_MSTATUS_FS_MASK)
  977. #define CSR_MSTATUS_FS_GET(x) (((uint32_t)(x) & CSR_MSTATUS_FS_MASK) >> CSR_MSTATUS_FS_SHIFT)
  978. /*
  979. * MPP (RW)
  980. *
  981. * MPP holds the privilege mode prior to a trap. Encoding for privilege mode is described in Table5. When U-mode is not available, this field is hardwired to 3.
  982. */
  983. #define CSR_MSTATUS_MPP_MASK (0x1800U)
  984. #define CSR_MSTATUS_MPP_SHIFT (11U)
  985. #define CSR_MSTATUS_MPP_SET(x) (((uint32_t)(x) << CSR_MSTATUS_MPP_SHIFT) & CSR_MSTATUS_MPP_MASK)
  986. #define CSR_MSTATUS_MPP_GET(x) (((uint32_t)(x) & CSR_MSTATUS_MPP_MASK) >> CSR_MSTATUS_MPP_SHIFT)
  987. /*
  988. * SPP (RW)
  989. *
  990. * SPP holds the privilege mode prior to a trap. Encoding is 1 for S-mode and 0 for U-mode.
  991. */
  992. #define CSR_MSTATUS_SPP_MASK (0x100U)
  993. #define CSR_MSTATUS_SPP_SHIFT (8U)
  994. #define CSR_MSTATUS_SPP_SET(x) (((uint32_t)(x) << CSR_MSTATUS_SPP_SHIFT) & CSR_MSTATUS_SPP_MASK)
  995. #define CSR_MSTATUS_SPP_GET(x) (((uint32_t)(x) & CSR_MSTATUS_SPP_MASK) >> CSR_MSTATUS_SPP_SHIFT)
  996. /*
  997. * MPIE (RW)
  998. *
  999. * MPIE holds the value of the MIE bit prior to a trap.
  1000. */
  1001. #define CSR_MSTATUS_MPIE_MASK (0x80U)
  1002. #define CSR_MSTATUS_MPIE_SHIFT (7U)
  1003. #define CSR_MSTATUS_MPIE_SET(x) (((uint32_t)(x) << CSR_MSTATUS_MPIE_SHIFT) & CSR_MSTATUS_MPIE_MASK)
  1004. #define CSR_MSTATUS_MPIE_GET(x) (((uint32_t)(x) & CSR_MSTATUS_MPIE_MASK) >> CSR_MSTATUS_MPIE_SHIFT)
  1005. /*
  1006. * SPIE (RW)
  1007. *
  1008. * SPIE holds the value of the SIE bit prior to a trap.
  1009. */
  1010. #define CSR_MSTATUS_SPIE_MASK (0x20U)
  1011. #define CSR_MSTATUS_SPIE_SHIFT (5U)
  1012. #define CSR_MSTATUS_SPIE_SET(x) (((uint32_t)(x) << CSR_MSTATUS_SPIE_SHIFT) & CSR_MSTATUS_SPIE_MASK)
  1013. #define CSR_MSTATUS_SPIE_GET(x) (((uint32_t)(x) & CSR_MSTATUS_SPIE_MASK) >> CSR_MSTATUS_SPIE_SHIFT)
  1014. /*
  1015. * UPIE (RW)
  1016. *
  1017. * UPIE holds the value of the UIE bit prior to a trap.
  1018. */
  1019. #define CSR_MSTATUS_UPIE_MASK (0x10U)
  1020. #define CSR_MSTATUS_UPIE_SHIFT (4U)
  1021. #define CSR_MSTATUS_UPIE_SET(x) (((uint32_t)(x) << CSR_MSTATUS_UPIE_SHIFT) & CSR_MSTATUS_UPIE_MASK)
  1022. #define CSR_MSTATUS_UPIE_GET(x) (((uint32_t)(x) & CSR_MSTATUS_UPIE_MASK) >> CSR_MSTATUS_UPIE_SHIFT)
  1023. /*
  1024. * MIE (RW)
  1025. *
  1026. * M mode interrupt enable bit.
  1027. * 0: Disabled
  1028. * 1: Enabled
  1029. */
  1030. #define CSR_MSTATUS_MIE_MASK (0x8U)
  1031. #define CSR_MSTATUS_MIE_SHIFT (3U)
  1032. #define CSR_MSTATUS_MIE_SET(x) (((uint32_t)(x) << CSR_MSTATUS_MIE_SHIFT) & CSR_MSTATUS_MIE_MASK)
  1033. #define CSR_MSTATUS_MIE_GET(x) (((uint32_t)(x) & CSR_MSTATUS_MIE_MASK) >> CSR_MSTATUS_MIE_SHIFT)
  1034. /*
  1035. * SIE (RW)
  1036. *
  1037. * S mode interrupt enable bit.
  1038. * 0: Disabled
  1039. * 1: Enabled
  1040. */
  1041. #define CSR_MSTATUS_SIE_MASK (0x2U)
  1042. #define CSR_MSTATUS_SIE_SHIFT (1U)
  1043. #define CSR_MSTATUS_SIE_SET(x) (((uint32_t)(x) << CSR_MSTATUS_SIE_SHIFT) & CSR_MSTATUS_SIE_MASK)
  1044. #define CSR_MSTATUS_SIE_GET(x) (((uint32_t)(x) & CSR_MSTATUS_SIE_MASK) >> CSR_MSTATUS_SIE_SHIFT)
  1045. /*
  1046. * UIE (RW)
  1047. *
  1048. * U mode interrupt enable bit.
  1049. * 0: Disabled
  1050. * 1: Enabled
  1051. */
  1052. #define CSR_MSTATUS_UIE_MASK (0x1U)
  1053. #define CSR_MSTATUS_UIE_SHIFT (0U)
  1054. #define CSR_MSTATUS_UIE_SET(x) (((uint32_t)(x) << CSR_MSTATUS_UIE_SHIFT) & CSR_MSTATUS_UIE_MASK)
  1055. #define CSR_MSTATUS_UIE_GET(x) (((uint32_t)(x) & CSR_MSTATUS_UIE_MASK) >> CSR_MSTATUS_UIE_SHIFT)
  1056. /* Bitfield definition for register: MISA */
  1057. /*
  1058. * BASE (RO)
  1059. *
  1060. * The general-purpose register width of the native base integer ISA.
  1061. * 0:Reserved
  1062. * 1:32
  1063. * 2:64
  1064. * 3:128
  1065. */
  1066. #define CSR_MISA_BASE_MASK (0xC0000000UL)
  1067. #define CSR_MISA_BASE_SHIFT (30U)
  1068. #define CSR_MISA_BASE_GET(x) (((uint32_t)(x) & CSR_MISA_BASE_MASK) >> CSR_MISA_BASE_SHIFT)
  1069. /*
  1070. * Z (RO)
  1071. *
  1072. * Reserved
  1073. */
  1074. #define CSR_MISA_Z_MASK (0x2000000UL)
  1075. #define CSR_MISA_Z_SHIFT (25U)
  1076. #define CSR_MISA_Z_GET(x) (((uint32_t)(x) & CSR_MISA_Z_MASK) >> CSR_MISA_Z_SHIFT)
  1077. /*
  1078. * Y (RO)
  1079. *
  1080. * Reserved
  1081. */
  1082. #define CSR_MISA_Y_MASK (0x1000000UL)
  1083. #define CSR_MISA_Y_SHIFT (24U)
  1084. #define CSR_MISA_Y_GET(x) (((uint32_t)(x) & CSR_MISA_Y_MASK) >> CSR_MISA_Y_SHIFT)
  1085. /*
  1086. * X (RO)
  1087. *
  1088. * Non-standard extensions present
  1089. */
  1090. #define CSR_MISA_X_MASK (0x800000UL)
  1091. #define CSR_MISA_X_SHIFT (23U)
  1092. #define CSR_MISA_X_GET(x) (((uint32_t)(x) & CSR_MISA_X_MASK) >> CSR_MISA_X_SHIFT)
  1093. /*
  1094. * W (RO)
  1095. *
  1096. * Reserved
  1097. */
  1098. #define CSR_MISA_W_MASK (0x400000UL)
  1099. #define CSR_MISA_W_SHIFT (22U)
  1100. #define CSR_MISA_W_GET(x) (((uint32_t)(x) & CSR_MISA_W_MASK) >> CSR_MISA_W_SHIFT)
  1101. /*
  1102. * V (RO)
  1103. *
  1104. * Tentatively reserved for Vector extension
  1105. */
  1106. #define CSR_MISA_V_MASK (0x200000UL)
  1107. #define CSR_MISA_V_SHIFT (21U)
  1108. #define CSR_MISA_V_GET(x) (((uint32_t)(x) & CSR_MISA_V_MASK) >> CSR_MISA_V_SHIFT)
  1109. /*
  1110. * U (RO)
  1111. *
  1112. * User mode implemented
  1113. * 0:Machine
  1114. * 1:Machine + User / Machine + Supervisor + User
  1115. */
  1116. #define CSR_MISA_U_MASK (0x100000UL)
  1117. #define CSR_MISA_U_SHIFT (20U)
  1118. #define CSR_MISA_U_GET(x) (((uint32_t)(x) & CSR_MISA_U_MASK) >> CSR_MISA_U_SHIFT)
  1119. /*
  1120. * T (RO)
  1121. *
  1122. * Tentatively reserved for Transactional Memory extension
  1123. */
  1124. #define CSR_MISA_T_MASK (0x80000UL)
  1125. #define CSR_MISA_T_SHIFT (19U)
  1126. #define CSR_MISA_T_GET(x) (((uint32_t)(x) & CSR_MISA_T_MASK) >> CSR_MISA_T_SHIFT)
  1127. /*
  1128. * S (RO)
  1129. *
  1130. * Supervisor mode implemented
  1131. * 0:Machine / Machine + User
  1132. * 1:Machine + Supervisor + User
  1133. */
  1134. #define CSR_MISA_S_MASK (0x40000UL)
  1135. #define CSR_MISA_S_SHIFT (18U)
  1136. #define CSR_MISA_S_GET(x) (((uint32_t)(x) & CSR_MISA_S_MASK) >> CSR_MISA_S_SHIFT)
  1137. /*
  1138. * R (RO)
  1139. *
  1140. * Reserved
  1141. */
  1142. #define CSR_MISA_R_MASK (0x20000UL)
  1143. #define CSR_MISA_R_SHIFT (17U)
  1144. #define CSR_MISA_R_GET(x) (((uint32_t)(x) & CSR_MISA_R_MASK) >> CSR_MISA_R_SHIFT)
  1145. /*
  1146. * Q (RO)
  1147. *
  1148. * Quad-precision floating-point extension
  1149. */
  1150. #define CSR_MISA_Q_MASK (0x10000UL)
  1151. #define CSR_MISA_Q_SHIFT (16U)
  1152. #define CSR_MISA_Q_GET(x) (((uint32_t)(x) & CSR_MISA_Q_MASK) >> CSR_MISA_Q_SHIFT)
  1153. /*
  1154. * P (RO)
  1155. *
  1156. * Tentatively reserved for Packed-SIMD extension
  1157. */
  1158. #define CSR_MISA_P_MASK (0x8000U)
  1159. #define CSR_MISA_P_SHIFT (15U)
  1160. #define CSR_MISA_P_GET(x) (((uint32_t)(x) & CSR_MISA_P_MASK) >> CSR_MISA_P_SHIFT)
  1161. /*
  1162. * O (RO)
  1163. *
  1164. * Reserved
  1165. */
  1166. #define CSR_MISA_O_MASK (0x4000U)
  1167. #define CSR_MISA_O_SHIFT (14U)
  1168. #define CSR_MISA_O_GET(x) (((uint32_t)(x) & CSR_MISA_O_MASK) >> CSR_MISA_O_SHIFT)
  1169. /*
  1170. * N (RO)
  1171. *
  1172. * User-level interrupts supported
  1173. * 0:no
  1174. * 1:yes
  1175. */
  1176. #define CSR_MISA_N_MASK (0x2000U)
  1177. #define CSR_MISA_N_SHIFT (13U)
  1178. #define CSR_MISA_N_GET(x) (((uint32_t)(x) & CSR_MISA_N_MASK) >> CSR_MISA_N_SHIFT)
  1179. /*
  1180. * M (RO)
  1181. *
  1182. * Integer Multiply/Divide extension
  1183. */
  1184. #define CSR_MISA_M_MASK (0x1000U)
  1185. #define CSR_MISA_M_SHIFT (12U)
  1186. #define CSR_MISA_M_GET(x) (((uint32_t)(x) & CSR_MISA_M_MASK) >> CSR_MISA_M_SHIFT)
  1187. /*
  1188. * L (RO)
  1189. *
  1190. * Tentatively reserved for Decimal Floating-Point extension
  1191. */
  1192. #define CSR_MISA_L_MASK (0x800U)
  1193. #define CSR_MISA_L_SHIFT (11U)
  1194. #define CSR_MISA_L_GET(x) (((uint32_t)(x) & CSR_MISA_L_MASK) >> CSR_MISA_L_SHIFT)
  1195. /*
  1196. * K (RO)
  1197. *
  1198. * Reserved
  1199. */
  1200. #define CSR_MISA_K_MASK (0x400U)
  1201. #define CSR_MISA_K_SHIFT (10U)
  1202. #define CSR_MISA_K_GET(x) (((uint32_t)(x) & CSR_MISA_K_MASK) >> CSR_MISA_K_SHIFT)
  1203. /*
  1204. * J (RO)
  1205. *
  1206. * Tentatively reserved for Dynamically Translated Languages extension
  1207. */
  1208. #define CSR_MISA_J_MASK (0x200U)
  1209. #define CSR_MISA_J_SHIFT (9U)
  1210. #define CSR_MISA_J_GET(x) (((uint32_t)(x) & CSR_MISA_J_MASK) >> CSR_MISA_J_SHIFT)
  1211. /*
  1212. * I (RO)
  1213. *
  1214. * RV32I/64I/128I base ISA
  1215. */
  1216. #define CSR_MISA_I_MASK (0x100U)
  1217. #define CSR_MISA_I_SHIFT (8U)
  1218. #define CSR_MISA_I_GET(x) (((uint32_t)(x) & CSR_MISA_I_MASK) >> CSR_MISA_I_SHIFT)
  1219. /*
  1220. * H (RO)
  1221. *
  1222. * Reserved
  1223. */
  1224. #define CSR_MISA_H_MASK (0x80U)
  1225. #define CSR_MISA_H_SHIFT (7U)
  1226. #define CSR_MISA_H_GET(x) (((uint32_t)(x) & CSR_MISA_H_MASK) >> CSR_MISA_H_SHIFT)
  1227. /*
  1228. * G (RO)
  1229. *
  1230. * Additional standard extensions present
  1231. */
  1232. #define CSR_MISA_G_MASK (0x40U)
  1233. #define CSR_MISA_G_SHIFT (6U)
  1234. #define CSR_MISA_G_GET(x) (((uint32_t)(x) & CSR_MISA_G_MASK) >> CSR_MISA_G_SHIFT)
  1235. /*
  1236. * F (RO)
  1237. *
  1238. * Single-precision floating-point extension
  1239. * 0:none
  1240. * 1:double+single precision / single precision
  1241. */
  1242. #define CSR_MISA_F_MASK (0x20U)
  1243. #define CSR_MISA_F_SHIFT (5U)
  1244. #define CSR_MISA_F_GET(x) (((uint32_t)(x) & CSR_MISA_F_MASK) >> CSR_MISA_F_SHIFT)
  1245. /*
  1246. * E (RO)
  1247. *
  1248. * RV32E base ISA
  1249. */
  1250. #define CSR_MISA_E_MASK (0x10U)
  1251. #define CSR_MISA_E_SHIFT (4U)
  1252. #define CSR_MISA_E_GET(x) (((uint32_t)(x) & CSR_MISA_E_MASK) >> CSR_MISA_E_SHIFT)
  1253. /*
  1254. * D (RO)
  1255. *
  1256. * Double-precision floating-point extension
  1257. * 0:single precision / none
  1258. * 1:double+single precision
  1259. */
  1260. #define CSR_MISA_D_MASK (0x8U)
  1261. #define CSR_MISA_D_SHIFT (3U)
  1262. #define CSR_MISA_D_GET(x) (((uint32_t)(x) & CSR_MISA_D_MASK) >> CSR_MISA_D_SHIFT)
  1263. /*
  1264. * C (RO)
  1265. *
  1266. * Compressed extension
  1267. */
  1268. #define CSR_MISA_C_MASK (0x4U)
  1269. #define CSR_MISA_C_SHIFT (2U)
  1270. #define CSR_MISA_C_GET(x) (((uint32_t)(x) & CSR_MISA_C_MASK) >> CSR_MISA_C_SHIFT)
  1271. /*
  1272. * B (RO)
  1273. *
  1274. * Tentatively reserved for Bit operations extension
  1275. */
  1276. #define CSR_MISA_B_MASK (0x2U)
  1277. #define CSR_MISA_B_SHIFT (1U)
  1278. #define CSR_MISA_B_GET(x) (((uint32_t)(x) & CSR_MISA_B_MASK) >> CSR_MISA_B_SHIFT)
  1279. /*
  1280. * A (RO)
  1281. *
  1282. * Atomic extension
  1283. * 0:no
  1284. * 1:yes
  1285. */
  1286. #define CSR_MISA_A_MASK (0x1U)
  1287. #define CSR_MISA_A_SHIFT (0U)
  1288. #define CSR_MISA_A_GET(x) (((uint32_t)(x) & CSR_MISA_A_MASK) >> CSR_MISA_A_SHIFT)
  1289. /* Bitfield definition for register: MEDELEG */
  1290. /*
  1291. * SPF (RW)
  1292. *
  1293. * SPF indicates whether a Store/AMO Page Fault exception will be delegated to S-mode.
  1294. * 0:Not delegate
  1295. * 1:delegate
  1296. */
  1297. #define CSR_MEDELEG_SPF_MASK (0x8000U)
  1298. #define CSR_MEDELEG_SPF_SHIFT (15U)
  1299. #define CSR_MEDELEG_SPF_SET(x) (((uint32_t)(x) << CSR_MEDELEG_SPF_SHIFT) & CSR_MEDELEG_SPF_MASK)
  1300. #define CSR_MEDELEG_SPF_GET(x) (((uint32_t)(x) & CSR_MEDELEG_SPF_MASK) >> CSR_MEDELEG_SPF_SHIFT)
  1301. /*
  1302. * LPF (RW)
  1303. *
  1304. * LPF indicates whether a Load Page Fault exception will be delegated to S-mode.
  1305. * 0:Not delegate
  1306. * 1:delegate
  1307. */
  1308. #define CSR_MEDELEG_LPF_MASK (0x2000U)
  1309. #define CSR_MEDELEG_LPF_SHIFT (13U)
  1310. #define CSR_MEDELEG_LPF_SET(x) (((uint32_t)(x) << CSR_MEDELEG_LPF_SHIFT) & CSR_MEDELEG_LPF_MASK)
  1311. #define CSR_MEDELEG_LPF_GET(x) (((uint32_t)(x) & CSR_MEDELEG_LPF_MASK) >> CSR_MEDELEG_LPF_SHIFT)
  1312. /*
  1313. * IPF (RW)
  1314. *
  1315. * IPF indicates whether an Instruction Page Fault exception will be delegated to S-mode.
  1316. * 0:Not delegate
  1317. * 1:delegate
  1318. */
  1319. #define CSR_MEDELEG_IPF_MASK (0x1000U)
  1320. #define CSR_MEDELEG_IPF_SHIFT (12U)
  1321. #define CSR_MEDELEG_IPF_SET(x) (((uint32_t)(x) << CSR_MEDELEG_IPF_SHIFT) & CSR_MEDELEG_IPF_MASK)
  1322. #define CSR_MEDELEG_IPF_GET(x) (((uint32_t)(x) & CSR_MEDELEG_IPF_MASK) >> CSR_MEDELEG_IPF_SHIFT)
  1323. /*
  1324. * SEC (RW)
  1325. *
  1326. * SEC indicates whether an exception triggered by environment call from S-mode will be delegated to S-mode.
  1327. * 0:Not delegate
  1328. * 1:delegate
  1329. */
  1330. #define CSR_MEDELEG_SEC_MASK (0x200U)
  1331. #define CSR_MEDELEG_SEC_SHIFT (9U)
  1332. #define CSR_MEDELEG_SEC_SET(x) (((uint32_t)(x) << CSR_MEDELEG_SEC_SHIFT) & CSR_MEDELEG_SEC_MASK)
  1333. #define CSR_MEDELEG_SEC_GET(x) (((uint32_t)(x) & CSR_MEDELEG_SEC_MASK) >> CSR_MEDELEG_SEC_SHIFT)
  1334. /*
  1335. * UEC (RW)
  1336. *
  1337. * UEC indicates whether an exception triggered by environment call from U-mode will be delegated to S-mode.
  1338. * 0:Not delegate
  1339. * 1:delegate
  1340. */
  1341. #define CSR_MEDELEG_UEC_MASK (0x100U)
  1342. #define CSR_MEDELEG_UEC_SHIFT (8U)
  1343. #define CSR_MEDELEG_UEC_SET(x) (((uint32_t)(x) << CSR_MEDELEG_UEC_SHIFT) & CSR_MEDELEG_UEC_MASK)
  1344. #define CSR_MEDELEG_UEC_GET(x) (((uint32_t)(x) & CSR_MEDELEG_UEC_MASK) >> CSR_MEDELEG_UEC_SHIFT)
  1345. /*
  1346. * SAF (RW)
  1347. *
  1348. * SAF indicates whether a Store/AMO Access Fault exception will be delegated to S-mode.
  1349. * 0:Not delegate
  1350. * 1:delegate
  1351. */
  1352. #define CSR_MEDELEG_SAF_MASK (0x80U)
  1353. #define CSR_MEDELEG_SAF_SHIFT (7U)
  1354. #define CSR_MEDELEG_SAF_SET(x) (((uint32_t)(x) << CSR_MEDELEG_SAF_SHIFT) & CSR_MEDELEG_SAF_MASK)
  1355. #define CSR_MEDELEG_SAF_GET(x) (((uint32_t)(x) & CSR_MEDELEG_SAF_MASK) >> CSR_MEDELEG_SAF_SHIFT)
  1356. /*
  1357. * SAM (RW)
  1358. *
  1359. * SAM indicates whether a Store/AMO Address Misaligned exception will be delegated to S-mode
  1360. * 0:Not delegate
  1361. * 1:delegate
  1362. */
  1363. #define CSR_MEDELEG_SAM_MASK (0x40U)
  1364. #define CSR_MEDELEG_SAM_SHIFT (6U)
  1365. #define CSR_MEDELEG_SAM_SET(x) (((uint32_t)(x) << CSR_MEDELEG_SAM_SHIFT) & CSR_MEDELEG_SAM_MASK)
  1366. #define CSR_MEDELEG_SAM_GET(x) (((uint32_t)(x) & CSR_MEDELEG_SAM_MASK) >> CSR_MEDELEG_SAM_SHIFT)
  1367. /*
  1368. * LAF (RW)
  1369. *
  1370. * LAF indicates whether a Load Access Fault exception will be delegated to S-mode.
  1371. * 0:Not delegate
  1372. * 1:delegate
  1373. */
  1374. #define CSR_MEDELEG_LAF_MASK (0x20U)
  1375. #define CSR_MEDELEG_LAF_SHIFT (5U)
  1376. #define CSR_MEDELEG_LAF_SET(x) (((uint32_t)(x) << CSR_MEDELEG_LAF_SHIFT) & CSR_MEDELEG_LAF_MASK)
  1377. #define CSR_MEDELEG_LAF_GET(x) (((uint32_t)(x) & CSR_MEDELEG_LAF_MASK) >> CSR_MEDELEG_LAF_SHIFT)
  1378. /*
  1379. * LAM (RW)
  1380. *
  1381. * LAM indicates whether a Load Address Misaligned exception will be delegated to S-mode.
  1382. * 0:Not delegate
  1383. * 1:delegate
  1384. */
  1385. #define CSR_MEDELEG_LAM_MASK (0x10U)
  1386. #define CSR_MEDELEG_LAM_SHIFT (4U)
  1387. #define CSR_MEDELEG_LAM_SET(x) (((uint32_t)(x) << CSR_MEDELEG_LAM_SHIFT) & CSR_MEDELEG_LAM_MASK)
  1388. #define CSR_MEDELEG_LAM_GET(x) (((uint32_t)(x) & CSR_MEDELEG_LAM_MASK) >> CSR_MEDELEG_LAM_SHIFT)
  1389. /*
  1390. * II (RW)
  1391. *
  1392. * II indicates whether an Illegal Instruction exception will be delegated to S-mode.
  1393. * 0:Not delegate
  1394. * 1:delegate
  1395. */
  1396. #define CSR_MEDELEG_II_MASK (0x4U)
  1397. #define CSR_MEDELEG_II_SHIFT (2U)
  1398. #define CSR_MEDELEG_II_SET(x) (((uint32_t)(x) << CSR_MEDELEG_II_SHIFT) & CSR_MEDELEG_II_MASK)
  1399. #define CSR_MEDELEG_II_GET(x) (((uint32_t)(x) & CSR_MEDELEG_II_MASK) >> CSR_MEDELEG_II_SHIFT)
  1400. /*
  1401. * IAF (RW)
  1402. *
  1403. * IAF indicates whether an Instruction Access Fault exception will be delegated to S-mode.
  1404. * 0:Not delegate
  1405. * 1:delegate
  1406. */
  1407. #define CSR_MEDELEG_IAF_MASK (0x2U)
  1408. #define CSR_MEDELEG_IAF_SHIFT (1U)
  1409. #define CSR_MEDELEG_IAF_SET(x) (((uint32_t)(x) << CSR_MEDELEG_IAF_SHIFT) & CSR_MEDELEG_IAF_MASK)
  1410. #define CSR_MEDELEG_IAF_GET(x) (((uint32_t)(x) & CSR_MEDELEG_IAF_MASK) >> CSR_MEDELEG_IAF_SHIFT)
  1411. /*
  1412. * IAM (RW)
  1413. *
  1414. * IAM indicates whether an Instruction Address Misaligned exception will be delegated to S-Mode
  1415. * 0:Not delegate
  1416. * 1:delegate
  1417. */
  1418. #define CSR_MEDELEG_IAM_MASK (0x1U)
  1419. #define CSR_MEDELEG_IAM_SHIFT (0U)
  1420. #define CSR_MEDELEG_IAM_SET(x) (((uint32_t)(x) << CSR_MEDELEG_IAM_SHIFT) & CSR_MEDELEG_IAM_MASK)
  1421. #define CSR_MEDELEG_IAM_GET(x) (((uint32_t)(x) & CSR_MEDELEG_IAM_MASK) >> CSR_MEDELEG_IAM_SHIFT)
  1422. /* Bitfield definition for register: MIDELEG */
  1423. /*
  1424. * SEI (RW)
  1425. *
  1426. * SEI indicates whether an S-mode external interrupt will be delegated to S-mode.
  1427. * 0:Not delegate
  1428. * 1:delegate
  1429. */
  1430. #define CSR_MIDELEG_SEI_MASK (0x200U)
  1431. #define CSR_MIDELEG_SEI_SHIFT (9U)
  1432. #define CSR_MIDELEG_SEI_SET(x) (((uint32_t)(x) << CSR_MIDELEG_SEI_SHIFT) & CSR_MIDELEG_SEI_MASK)
  1433. #define CSR_MIDELEG_SEI_GET(x) (((uint32_t)(x) & CSR_MIDELEG_SEI_MASK) >> CSR_MIDELEG_SEI_SHIFT)
  1434. /*
  1435. * UEI (RW)
  1436. *
  1437. * UEI indicates whether an U-mode external interrupt will be delegated to S-mode.
  1438. * 0:Not delegate
  1439. * 1:delegate
  1440. */
  1441. #define CSR_MIDELEG_UEI_MASK (0x100U)
  1442. #define CSR_MIDELEG_UEI_SHIFT (8U)
  1443. #define CSR_MIDELEG_UEI_SET(x) (((uint32_t)(x) << CSR_MIDELEG_UEI_SHIFT) & CSR_MIDELEG_UEI_MASK)
  1444. #define CSR_MIDELEG_UEI_GET(x) (((uint32_t)(x) & CSR_MIDELEG_UEI_MASK) >> CSR_MIDELEG_UEI_SHIFT)
  1445. /*
  1446. * STI (RW)
  1447. *
  1448. * STI indicates whether an S-mode timer interrupt will be delegated to S-mode.
  1449. * 0:Not delegate
  1450. * 1:delegate
  1451. */
  1452. #define CSR_MIDELEG_STI_MASK (0x20U)
  1453. #define CSR_MIDELEG_STI_SHIFT (5U)
  1454. #define CSR_MIDELEG_STI_SET(x) (((uint32_t)(x) << CSR_MIDELEG_STI_SHIFT) & CSR_MIDELEG_STI_MASK)
  1455. #define CSR_MIDELEG_STI_GET(x) (((uint32_t)(x) & CSR_MIDELEG_STI_MASK) >> CSR_MIDELEG_STI_SHIFT)
  1456. /*
  1457. * UTI (RW)
  1458. *
  1459. * UTI indicates whether an U-mode timer interrupt will be delegated to S-mode.
  1460. * 0:Not delegate
  1461. * 1:delegate
  1462. */
  1463. #define CSR_MIDELEG_UTI_MASK (0x10U)
  1464. #define CSR_MIDELEG_UTI_SHIFT (4U)
  1465. #define CSR_MIDELEG_UTI_SET(x) (((uint32_t)(x) << CSR_MIDELEG_UTI_SHIFT) & CSR_MIDELEG_UTI_MASK)
  1466. #define CSR_MIDELEG_UTI_GET(x) (((uint32_t)(x) & CSR_MIDELEG_UTI_MASK) >> CSR_MIDELEG_UTI_SHIFT)
  1467. /*
  1468. * SSI (RW)
  1469. *
  1470. * SSI indicates whether an S-mode software interrupt will be delegated to S-mode.
  1471. * 0:Not delegate
  1472. * 1:delegate
  1473. */
  1474. #define CSR_MIDELEG_SSI_MASK (0x2U)
  1475. #define CSR_MIDELEG_SSI_SHIFT (1U)
  1476. #define CSR_MIDELEG_SSI_SET(x) (((uint32_t)(x) << CSR_MIDELEG_SSI_SHIFT) & CSR_MIDELEG_SSI_MASK)
  1477. #define CSR_MIDELEG_SSI_GET(x) (((uint32_t)(x) & CSR_MIDELEG_SSI_MASK) >> CSR_MIDELEG_SSI_SHIFT)
  1478. /*
  1479. * USI (RW)
  1480. *
  1481. * USI indicates whether an U-mode software interrupt will be delegated to S-mode.
  1482. * 0:Not delegate
  1483. * 1:delegate
  1484. */
  1485. #define CSR_MIDELEG_USI_MASK (0x1U)
  1486. #define CSR_MIDELEG_USI_SHIFT (0U)
  1487. #define CSR_MIDELEG_USI_SET(x) (((uint32_t)(x) << CSR_MIDELEG_USI_SHIFT) & CSR_MIDELEG_USI_MASK)
  1488. #define CSR_MIDELEG_USI_GET(x) (((uint32_t)(x) & CSR_MIDELEG_USI_MASK) >> CSR_MIDELEG_USI_SHIFT)
  1489. /* Bitfield definition for register: MIE */
  1490. /*
  1491. * PMOVI (RW)
  1492. *
  1493. * Performance monitor overflow local interrupt enable bit
  1494. * 0:Disabled
  1495. * 1:Enabled
  1496. */
  1497. #define CSR_MIE_PMOVI_MASK (0x40000UL)
  1498. #define CSR_MIE_PMOVI_SHIFT (18U)
  1499. #define CSR_MIE_PMOVI_SET(x) (((uint32_t)(x) << CSR_MIE_PMOVI_SHIFT) & CSR_MIE_PMOVI_MASK)
  1500. #define CSR_MIE_PMOVI_GET(x) (((uint32_t)(x) & CSR_MIE_PMOVI_MASK) >> CSR_MIE_PMOVI_SHIFT)
  1501. /*
  1502. * BWEI (RW)
  1503. *
  1504. * Bus read/write transaction error local interrupt enable bit. The processor may receive bus errors on load/store instructions or cache writebacks.
  1505. * 0:Disabled
  1506. * 1:Enabled
  1507. */
  1508. #define CSR_MIE_BWEI_MASK (0x20000UL)
  1509. #define CSR_MIE_BWEI_SHIFT (17U)
  1510. #define CSR_MIE_BWEI_SET(x) (((uint32_t)(x) << CSR_MIE_BWEI_SHIFT) & CSR_MIE_BWEI_MASK)
  1511. #define CSR_MIE_BWEI_GET(x) (((uint32_t)(x) & CSR_MIE_BWEI_MASK) >> CSR_MIE_BWEI_SHIFT)
  1512. /*
  1513. * IMECCI (RW)
  1514. *
  1515. * Imprecise ECC error local interrupt enable bit. The processor may receive imprecise ECC errors on slave port accesses or cache writebacks.
  1516. * 0:Disabled
  1517. * 1:Enabled
  1518. */
  1519. #define CSR_MIE_IMECCI_MASK (0x10000UL)
  1520. #define CSR_MIE_IMECCI_SHIFT (16U)
  1521. #define CSR_MIE_IMECCI_SET(x) (((uint32_t)(x) << CSR_MIE_IMECCI_SHIFT) & CSR_MIE_IMECCI_MASK)
  1522. #define CSR_MIE_IMECCI_GET(x) (((uint32_t)(x) & CSR_MIE_IMECCI_MASK) >> CSR_MIE_IMECCI_SHIFT)
  1523. /*
  1524. * MEIE (RW)
  1525. *
  1526. * M mode external interrupt enable bit
  1527. * 0:Disabled
  1528. * 1:Enabled
  1529. */
  1530. #define CSR_MIE_MEIE_MASK (0x800U)
  1531. #define CSR_MIE_MEIE_SHIFT (11U)
  1532. #define CSR_MIE_MEIE_SET(x) (((uint32_t)(x) << CSR_MIE_MEIE_SHIFT) & CSR_MIE_MEIE_MASK)
  1533. #define CSR_MIE_MEIE_GET(x) (((uint32_t)(x) & CSR_MIE_MEIE_MASK) >> CSR_MIE_MEIE_SHIFT)
  1534. /*
  1535. * SEIE (RW)
  1536. *
  1537. * S mode external interrupt enable bit
  1538. * 0:Disabled
  1539. * 1:Enabled
  1540. */
  1541. #define CSR_MIE_SEIE_MASK (0x200U)
  1542. #define CSR_MIE_SEIE_SHIFT (9U)
  1543. #define CSR_MIE_SEIE_SET(x) (((uint32_t)(x) << CSR_MIE_SEIE_SHIFT) & CSR_MIE_SEIE_MASK)
  1544. #define CSR_MIE_SEIE_GET(x) (((uint32_t)(x) & CSR_MIE_SEIE_MASK) >> CSR_MIE_SEIE_SHIFT)
  1545. /*
  1546. * UEIE (RW)
  1547. *
  1548. * U mode external interrupt enable bit
  1549. * 0:Disabled
  1550. * 1:Enabled
  1551. */
  1552. #define CSR_MIE_UEIE_MASK (0x100U)
  1553. #define CSR_MIE_UEIE_SHIFT (8U)
  1554. #define CSR_MIE_UEIE_SET(x) (((uint32_t)(x) << CSR_MIE_UEIE_SHIFT) & CSR_MIE_UEIE_MASK)
  1555. #define CSR_MIE_UEIE_GET(x) (((uint32_t)(x) & CSR_MIE_UEIE_MASK) >> CSR_MIE_UEIE_SHIFT)
  1556. /*
  1557. * MTIE (RW)
  1558. *
  1559. * M mode timer interrupt enable bit.
  1560. * 0:Disabled
  1561. * 1:Enabled
  1562. */
  1563. #define CSR_MIE_MTIE_MASK (0x80U)
  1564. #define CSR_MIE_MTIE_SHIFT (7U)
  1565. #define CSR_MIE_MTIE_SET(x) (((uint32_t)(x) << CSR_MIE_MTIE_SHIFT) & CSR_MIE_MTIE_MASK)
  1566. #define CSR_MIE_MTIE_GET(x) (((uint32_t)(x) & CSR_MIE_MTIE_MASK) >> CSR_MIE_MTIE_SHIFT)
  1567. /*
  1568. * STIE (RW)
  1569. *
  1570. * S mode timer interrupt enable bit.
  1571. * 0:Disabled
  1572. * 1:Enabled
  1573. */
  1574. #define CSR_MIE_STIE_MASK (0x20U)
  1575. #define CSR_MIE_STIE_SHIFT (5U)
  1576. #define CSR_MIE_STIE_SET(x) (((uint32_t)(x) << CSR_MIE_STIE_SHIFT) & CSR_MIE_STIE_MASK)
  1577. #define CSR_MIE_STIE_GET(x) (((uint32_t)(x) & CSR_MIE_STIE_MASK) >> CSR_MIE_STIE_SHIFT)
  1578. /*
  1579. * UTIE (RW)
  1580. *
  1581. * U mode timer interrupt enable bit.
  1582. * 0:Disabled
  1583. * 1:Enabled
  1584. */
  1585. #define CSR_MIE_UTIE_MASK (0x10U)
  1586. #define CSR_MIE_UTIE_SHIFT (4U)
  1587. #define CSR_MIE_UTIE_SET(x) (((uint32_t)(x) << CSR_MIE_UTIE_SHIFT) & CSR_MIE_UTIE_MASK)
  1588. #define CSR_MIE_UTIE_GET(x) (((uint32_t)(x) & CSR_MIE_UTIE_MASK) >> CSR_MIE_UTIE_SHIFT)
  1589. /*
  1590. * MSIE (RW)
  1591. *
  1592. * M mode software interrupt enable bit
  1593. * 0:Disabled
  1594. * 1:Enabled
  1595. */
  1596. #define CSR_MIE_MSIE_MASK (0x8U)
  1597. #define CSR_MIE_MSIE_SHIFT (3U)
  1598. #define CSR_MIE_MSIE_SET(x) (((uint32_t)(x) << CSR_MIE_MSIE_SHIFT) & CSR_MIE_MSIE_MASK)
  1599. #define CSR_MIE_MSIE_GET(x) (((uint32_t)(x) & CSR_MIE_MSIE_MASK) >> CSR_MIE_MSIE_SHIFT)
  1600. /*
  1601. * SSIE (RW)
  1602. *
  1603. * S mode software interrupt enable bit.
  1604. * 0:Disabled
  1605. * 1:Enabled
  1606. */
  1607. #define CSR_MIE_SSIE_MASK (0x2U)
  1608. #define CSR_MIE_SSIE_SHIFT (1U)
  1609. #define CSR_MIE_SSIE_SET(x) (((uint32_t)(x) << CSR_MIE_SSIE_SHIFT) & CSR_MIE_SSIE_MASK)
  1610. #define CSR_MIE_SSIE_GET(x) (((uint32_t)(x) & CSR_MIE_SSIE_MASK) >> CSR_MIE_SSIE_SHIFT)
  1611. /*
  1612. * USIE (RW)
  1613. *
  1614. * U mode software interrupt enable bit.
  1615. * 0:Disabled
  1616. * 1:Enabled
  1617. */
  1618. #define CSR_MIE_USIE_MASK (0x1U)
  1619. #define CSR_MIE_USIE_SHIFT (0U)
  1620. #define CSR_MIE_USIE_SET(x) (((uint32_t)(x) << CSR_MIE_USIE_SHIFT) & CSR_MIE_USIE_MASK)
  1621. #define CSR_MIE_USIE_GET(x) (((uint32_t)(x) & CSR_MIE_USIE_MASK) >> CSR_MIE_USIE_SHIFT)
  1622. /* Bitfield definition for register: MTVEC */
  1623. /*
  1624. * BASE_31_2 (RW)
  1625. *
  1626. * Base address for interrupt and exception handlers. See description above for alignment requirements when PLIC is in the vector mode
  1627. */
  1628. #define CSR_MTVEC_BASE_31_2_MASK (0xFFFFFFFCUL)
  1629. #define CSR_MTVEC_BASE_31_2_SHIFT (2U)
  1630. #define CSR_MTVEC_BASE_31_2_SET(x) (((uint32_t)(x) << CSR_MTVEC_BASE_31_2_SHIFT) & CSR_MTVEC_BASE_31_2_MASK)
  1631. #define CSR_MTVEC_BASE_31_2_GET(x) (((uint32_t)(x) & CSR_MTVEC_BASE_31_2_MASK) >> CSR_MTVEC_BASE_31_2_SHIFT)
  1632. /* Bitfield definition for register: MCOUNTEREN */
  1633. /*
  1634. * HPM6 (RW)
  1635. *
  1636. * See register description
  1637. */
  1638. #define CSR_MCOUNTEREN_HPM6_MASK (0x40U)
  1639. #define CSR_MCOUNTEREN_HPM6_SHIFT (6U)
  1640. #define CSR_MCOUNTEREN_HPM6_SET(x) (((uint32_t)(x) << CSR_MCOUNTEREN_HPM6_SHIFT) & CSR_MCOUNTEREN_HPM6_MASK)
  1641. #define CSR_MCOUNTEREN_HPM6_GET(x) (((uint32_t)(x) & CSR_MCOUNTEREN_HPM6_MASK) >> CSR_MCOUNTEREN_HPM6_SHIFT)
  1642. /*
  1643. * HPM5 (RW)
  1644. *
  1645. * See register description
  1646. */
  1647. #define CSR_MCOUNTEREN_HPM5_MASK (0x20U)
  1648. #define CSR_MCOUNTEREN_HPM5_SHIFT (5U)
  1649. #define CSR_MCOUNTEREN_HPM5_SET(x) (((uint32_t)(x) << CSR_MCOUNTEREN_HPM5_SHIFT) & CSR_MCOUNTEREN_HPM5_MASK)
  1650. #define CSR_MCOUNTEREN_HPM5_GET(x) (((uint32_t)(x) & CSR_MCOUNTEREN_HPM5_MASK) >> CSR_MCOUNTEREN_HPM5_SHIFT)
  1651. /*
  1652. * HPM4 (RW)
  1653. *
  1654. * See register description
  1655. */
  1656. #define CSR_MCOUNTEREN_HPM4_MASK (0x10U)
  1657. #define CSR_MCOUNTEREN_HPM4_SHIFT (4U)
  1658. #define CSR_MCOUNTEREN_HPM4_SET(x) (((uint32_t)(x) << CSR_MCOUNTEREN_HPM4_SHIFT) & CSR_MCOUNTEREN_HPM4_MASK)
  1659. #define CSR_MCOUNTEREN_HPM4_GET(x) (((uint32_t)(x) & CSR_MCOUNTEREN_HPM4_MASK) >> CSR_MCOUNTEREN_HPM4_SHIFT)
  1660. /*
  1661. * HPM3 (RW)
  1662. *
  1663. * See register description
  1664. */
  1665. #define CSR_MCOUNTEREN_HPM3_MASK (0x8U)
  1666. #define CSR_MCOUNTEREN_HPM3_SHIFT (3U)
  1667. #define CSR_MCOUNTEREN_HPM3_SET(x) (((uint32_t)(x) << CSR_MCOUNTEREN_HPM3_SHIFT) & CSR_MCOUNTEREN_HPM3_MASK)
  1668. #define CSR_MCOUNTEREN_HPM3_GET(x) (((uint32_t)(x) & CSR_MCOUNTEREN_HPM3_MASK) >> CSR_MCOUNTEREN_HPM3_SHIFT)
  1669. /*
  1670. * IR (RW)
  1671. *
  1672. * See register description
  1673. */
  1674. #define CSR_MCOUNTEREN_IR_MASK (0x4U)
  1675. #define CSR_MCOUNTEREN_IR_SHIFT (2U)
  1676. #define CSR_MCOUNTEREN_IR_SET(x) (((uint32_t)(x) << CSR_MCOUNTEREN_IR_SHIFT) & CSR_MCOUNTEREN_IR_MASK)
  1677. #define CSR_MCOUNTEREN_IR_GET(x) (((uint32_t)(x) & CSR_MCOUNTEREN_IR_MASK) >> CSR_MCOUNTEREN_IR_SHIFT)
  1678. /*
  1679. * TM (RW)
  1680. *
  1681. * See register description
  1682. */
  1683. #define CSR_MCOUNTEREN_TM_MASK (0x2U)
  1684. #define CSR_MCOUNTEREN_TM_SHIFT (1U)
  1685. #define CSR_MCOUNTEREN_TM_SET(x) (((uint32_t)(x) << CSR_MCOUNTEREN_TM_SHIFT) & CSR_MCOUNTEREN_TM_MASK)
  1686. #define CSR_MCOUNTEREN_TM_GET(x) (((uint32_t)(x) & CSR_MCOUNTEREN_TM_MASK) >> CSR_MCOUNTEREN_TM_SHIFT)
  1687. /*
  1688. * CY (RW)
  1689. *
  1690. * See register description
  1691. */
  1692. #define CSR_MCOUNTEREN_CY_MASK (0x1U)
  1693. #define CSR_MCOUNTEREN_CY_SHIFT (0U)
  1694. #define CSR_MCOUNTEREN_CY_SET(x) (((uint32_t)(x) << CSR_MCOUNTEREN_CY_SHIFT) & CSR_MCOUNTEREN_CY_MASK)
  1695. #define CSR_MCOUNTEREN_CY_GET(x) (((uint32_t)(x) & CSR_MCOUNTEREN_CY_MASK) >> CSR_MCOUNTEREN_CY_SHIFT)
  1696. /* Bitfield definition for register: MHPMEVENT3 */
  1697. /*
  1698. * SEL (RW)
  1699. *
  1700. * See Event Selectors table
  1701. */
  1702. #define CSR_MHPMEVENT3_SEL_MASK (0x1F0U)
  1703. #define CSR_MHPMEVENT3_SEL_SHIFT (4U)
  1704. #define CSR_MHPMEVENT3_SEL_SET(x) (((uint32_t)(x) << CSR_MHPMEVENT3_SEL_SHIFT) & CSR_MHPMEVENT3_SEL_MASK)
  1705. #define CSR_MHPMEVENT3_SEL_GET(x) (((uint32_t)(x) & CSR_MHPMEVENT3_SEL_MASK) >> CSR_MHPMEVENT3_SEL_SHIFT)
  1706. /*
  1707. * TYPE (RW)
  1708. *
  1709. * See Event Selectors table
  1710. */
  1711. #define CSR_MHPMEVENT3_TYPE_MASK (0xFU)
  1712. #define CSR_MHPMEVENT3_TYPE_SHIFT (0U)
  1713. #define CSR_MHPMEVENT3_TYPE_SET(x) (((uint32_t)(x) << CSR_MHPMEVENT3_TYPE_SHIFT) & CSR_MHPMEVENT3_TYPE_MASK)
  1714. #define CSR_MHPMEVENT3_TYPE_GET(x) (((uint32_t)(x) & CSR_MHPMEVENT3_TYPE_MASK) >> CSR_MHPMEVENT3_TYPE_SHIFT)
  1715. /* Bitfield definition for register: MHPMEVENT4 */
  1716. /*
  1717. * SEL (RW)
  1718. *
  1719. * See Event Selectors table
  1720. */
  1721. #define CSR_MHPMEVENT4_SEL_MASK (0x1F0U)
  1722. #define CSR_MHPMEVENT4_SEL_SHIFT (4U)
  1723. #define CSR_MHPMEVENT4_SEL_SET(x) (((uint32_t)(x) << CSR_MHPMEVENT4_SEL_SHIFT) & CSR_MHPMEVENT4_SEL_MASK)
  1724. #define CSR_MHPMEVENT4_SEL_GET(x) (((uint32_t)(x) & CSR_MHPMEVENT4_SEL_MASK) >> CSR_MHPMEVENT4_SEL_SHIFT)
  1725. /*
  1726. * TYPE (RW)
  1727. *
  1728. * See Event Selectors table
  1729. */
  1730. #define CSR_MHPMEVENT4_TYPE_MASK (0xFU)
  1731. #define CSR_MHPMEVENT4_TYPE_SHIFT (0U)
  1732. #define CSR_MHPMEVENT4_TYPE_SET(x) (((uint32_t)(x) << CSR_MHPMEVENT4_TYPE_SHIFT) & CSR_MHPMEVENT4_TYPE_MASK)
  1733. #define CSR_MHPMEVENT4_TYPE_GET(x) (((uint32_t)(x) & CSR_MHPMEVENT4_TYPE_MASK) >> CSR_MHPMEVENT4_TYPE_SHIFT)
  1734. /* Bitfield definition for register: MHPMEVENT5 */
  1735. /*
  1736. * SEL (RW)
  1737. *
  1738. * See Event Selectors table
  1739. */
  1740. #define CSR_MHPMEVENT5_SEL_MASK (0x1F0U)
  1741. #define CSR_MHPMEVENT5_SEL_SHIFT (4U)
  1742. #define CSR_MHPMEVENT5_SEL_SET(x) (((uint32_t)(x) << CSR_MHPMEVENT5_SEL_SHIFT) & CSR_MHPMEVENT5_SEL_MASK)
  1743. #define CSR_MHPMEVENT5_SEL_GET(x) (((uint32_t)(x) & CSR_MHPMEVENT5_SEL_MASK) >> CSR_MHPMEVENT5_SEL_SHIFT)
  1744. /*
  1745. * TYPE (RW)
  1746. *
  1747. * See Event Selectors table
  1748. */
  1749. #define CSR_MHPMEVENT5_TYPE_MASK (0xFU)
  1750. #define CSR_MHPMEVENT5_TYPE_SHIFT (0U)
  1751. #define CSR_MHPMEVENT5_TYPE_SET(x) (((uint32_t)(x) << CSR_MHPMEVENT5_TYPE_SHIFT) & CSR_MHPMEVENT5_TYPE_MASK)
  1752. #define CSR_MHPMEVENT5_TYPE_GET(x) (((uint32_t)(x) & CSR_MHPMEVENT5_TYPE_MASK) >> CSR_MHPMEVENT5_TYPE_SHIFT)
  1753. /* Bitfield definition for register: MHPMEVENT6 */
  1754. /*
  1755. * SEL (RW)
  1756. *
  1757. * See Event Selectors table
  1758. */
  1759. #define CSR_MHPMEVENT6_SEL_MASK (0x1F0U)
  1760. #define CSR_MHPMEVENT6_SEL_SHIFT (4U)
  1761. #define CSR_MHPMEVENT6_SEL_SET(x) (((uint32_t)(x) << CSR_MHPMEVENT6_SEL_SHIFT) & CSR_MHPMEVENT6_SEL_MASK)
  1762. #define CSR_MHPMEVENT6_SEL_GET(x) (((uint32_t)(x) & CSR_MHPMEVENT6_SEL_MASK) >> CSR_MHPMEVENT6_SEL_SHIFT)
  1763. /*
  1764. * TYPE (RW)
  1765. *
  1766. * See Event Selectors table
  1767. */
  1768. #define CSR_MHPMEVENT6_TYPE_MASK (0xFU)
  1769. #define CSR_MHPMEVENT6_TYPE_SHIFT (0U)
  1770. #define CSR_MHPMEVENT6_TYPE_SET(x) (((uint32_t)(x) << CSR_MHPMEVENT6_TYPE_SHIFT) & CSR_MHPMEVENT6_TYPE_MASK)
  1771. #define CSR_MHPMEVENT6_TYPE_GET(x) (((uint32_t)(x) & CSR_MHPMEVENT6_TYPE_MASK) >> CSR_MHPMEVENT6_TYPE_SHIFT)
  1772. /* Bitfield definition for register: MSCRATCH */
  1773. /*
  1774. * MSCRATCH (RW)
  1775. *
  1776. * Scratch register storage.
  1777. */
  1778. #define CSR_MSCRATCH_MSCRATCH_MASK (0xFFFFFFFFUL)
  1779. #define CSR_MSCRATCH_MSCRATCH_SHIFT (0U)
  1780. #define CSR_MSCRATCH_MSCRATCH_SET(x) (((uint32_t)(x) << CSR_MSCRATCH_MSCRATCH_SHIFT) & CSR_MSCRATCH_MSCRATCH_MASK)
  1781. #define CSR_MSCRATCH_MSCRATCH_GET(x) (((uint32_t)(x) & CSR_MSCRATCH_MSCRATCH_MASK) >> CSR_MSCRATCH_MSCRATCH_SHIFT)
  1782. /* Bitfield definition for register: MEPC */
  1783. /*
  1784. * EPC (RW)
  1785. *
  1786. * Exception program counter.
  1787. */
  1788. #define CSR_MEPC_EPC_MASK (0xFFFFFFFEUL)
  1789. #define CSR_MEPC_EPC_SHIFT (1U)
  1790. #define CSR_MEPC_EPC_SET(x) (((uint32_t)(x) << CSR_MEPC_EPC_SHIFT) & CSR_MEPC_EPC_MASK)
  1791. #define CSR_MEPC_EPC_GET(x) (((uint32_t)(x) & CSR_MEPC_EPC_MASK) >> CSR_MEPC_EPC_SHIFT)
  1792. /* Bitfield definition for register: MCAUSE */
  1793. /*
  1794. * INTERRUPT (RW)
  1795. *
  1796. * Interrupt
  1797. */
  1798. #define CSR_MCAUSE_INTERRUPT_MASK (0x80000000UL)
  1799. #define CSR_MCAUSE_INTERRUPT_SHIFT (31U)
  1800. #define CSR_MCAUSE_INTERRUPT_SET(x) (((uint32_t)(x) << CSR_MCAUSE_INTERRUPT_SHIFT) & CSR_MCAUSE_INTERRUPT_MASK)
  1801. #define CSR_MCAUSE_INTERRUPT_GET(x) (((uint32_t)(x) & CSR_MCAUSE_INTERRUPT_MASK) >> CSR_MCAUSE_INTERRUPT_SHIFT)
  1802. /*
  1803. * EXCEPTION_CODE (RW)
  1804. *
  1805. * Exception code
  1806. * When interrupt is 1, the value means:
  1807. * 0:User software interrupt
  1808. * 1:Supervisor software interrupt
  1809. * 3:Machine software interrupt
  1810. * 4:User timer interrupt
  1811. * 5:Supervisor timer interrupt
  1812. * 7:Machine timer interrupt
  1813. * 8:User external interrupt
  1814. * 9:Supervisor external interrupt
  1815. * 11:Machine external interrupt
  1816. * 16:Imprecise ECC error interrupt (slave port accesses, D-Cache evictions, and nonblocking load/stores) (M-mode)
  1817. * 17:Bus read/write transaction error interrupt (M-mode)
  1818. * 18:Performance monitor overflow interrupt (M-mode)
  1819. * 256+16:Imprecise ECC error interrupt (slave port accesses, D-Cache evictions, and nonblocking load/stores) (S-mode)
  1820. * 256+17:Bus write transaction error interrupt (S-mode)
  1821. * 256+18:Performance monitor overflow interrupt (S-mode)
  1822. * When interrupt bit is 0, the value means:
  1823. * 0:Instruction address misaligned
  1824. * 1:Instruction access fault
  1825. * 2:Illegal instruction
  1826. * 3:Breakpoint
  1827. * 4:Load address misaligned
  1828. * 5:Load access fault
  1829. * 6:Store/AMO address misaligned
  1830. * 7:Store/AMO access fault
  1831. * 8:Environment call from U-mode
  1832. * 9:Environment call from S-mode
  1833. * 11:Environment call from M-mode
  1834. * 32:Stack overflow exception
  1835. * 33:Stack underflow exception
  1836. * 40-47:Reserved
  1837. */
  1838. #define CSR_MCAUSE_EXCEPTION_CODE_MASK (0xFFFU)
  1839. #define CSR_MCAUSE_EXCEPTION_CODE_SHIFT (0U)
  1840. #define CSR_MCAUSE_EXCEPTION_CODE_SET(x) (((uint32_t)(x) << CSR_MCAUSE_EXCEPTION_CODE_SHIFT) & CSR_MCAUSE_EXCEPTION_CODE_MASK)
  1841. #define CSR_MCAUSE_EXCEPTION_CODE_GET(x) (((uint32_t)(x) & CSR_MCAUSE_EXCEPTION_CODE_MASK) >> CSR_MCAUSE_EXCEPTION_CODE_SHIFT)
  1842. /* Bitfield definition for register: MTVAL */
  1843. /*
  1844. * MTVAL (RW)
  1845. *
  1846. * Exception-specific information for software trap handling.
  1847. */
  1848. #define CSR_MTVAL_MTVAL_MASK (0xFFFFFFFFUL)
  1849. #define CSR_MTVAL_MTVAL_SHIFT (0U)
  1850. #define CSR_MTVAL_MTVAL_SET(x) (((uint32_t)(x) << CSR_MTVAL_MTVAL_SHIFT) & CSR_MTVAL_MTVAL_MASK)
  1851. #define CSR_MTVAL_MTVAL_GET(x) (((uint32_t)(x) & CSR_MTVAL_MTVAL_MASK) >> CSR_MTVAL_MTVAL_SHIFT)
  1852. /* Bitfield definition for register: MIP */
  1853. /*
  1854. * PMOVI (RW)
  1855. *
  1856. * Performance monitor overflow local interrupt pending bit.
  1857. * 0:Not pending
  1858. * 1:Pending
  1859. */
  1860. #define CSR_MIP_PMOVI_MASK (0x40000UL)
  1861. #define CSR_MIP_PMOVI_SHIFT (18U)
  1862. #define CSR_MIP_PMOVI_SET(x) (((uint32_t)(x) << CSR_MIP_PMOVI_SHIFT) & CSR_MIP_PMOVI_MASK)
  1863. #define CSR_MIP_PMOVI_GET(x) (((uint32_t)(x) & CSR_MIP_PMOVI_MASK) >> CSR_MIP_PMOVI_SHIFT)
  1864. /*
  1865. * BWEI (RW)
  1866. *
  1867. * Bus read/write transaction error local interrupt pending bit. The processor may receive bus errors on load/store instructions or cache writebacks.
  1868. * 0:Not pending
  1869. * 1:Pending
  1870. */
  1871. #define CSR_MIP_BWEI_MASK (0x20000UL)
  1872. #define CSR_MIP_BWEI_SHIFT (17U)
  1873. #define CSR_MIP_BWEI_SET(x) (((uint32_t)(x) << CSR_MIP_BWEI_SHIFT) & CSR_MIP_BWEI_MASK)
  1874. #define CSR_MIP_BWEI_GET(x) (((uint32_t)(x) & CSR_MIP_BWEI_MASK) >> CSR_MIP_BWEI_SHIFT)
  1875. /*
  1876. * IMECCI (RW)
  1877. *
  1878. * Imprecise ECC error local interrupt enable bit. The processor may receive imprecise ECC errors on slave port accesses or cache writebacks.
  1879. * 0:Not pending
  1880. * 1:Pending
  1881. */
  1882. #define CSR_MIP_IMECCI_MASK (0x10000UL)
  1883. #define CSR_MIP_IMECCI_SHIFT (16U)
  1884. #define CSR_MIP_IMECCI_SET(x) (((uint32_t)(x) << CSR_MIP_IMECCI_SHIFT) & CSR_MIP_IMECCI_MASK)
  1885. #define CSR_MIP_IMECCI_GET(x) (((uint32_t)(x) & CSR_MIP_IMECCI_MASK) >> CSR_MIP_IMECCI_SHIFT)
  1886. /*
  1887. * MEIP (RW)
  1888. *
  1889. * M mode external interrupt pending bit.
  1890. * 0:Not pending
  1891. * 1:Pending
  1892. */
  1893. #define CSR_MIP_MEIP_MASK (0x800U)
  1894. #define CSR_MIP_MEIP_SHIFT (11U)
  1895. #define CSR_MIP_MEIP_SET(x) (((uint32_t)(x) << CSR_MIP_MEIP_SHIFT) & CSR_MIP_MEIP_MASK)
  1896. #define CSR_MIP_MEIP_GET(x) (((uint32_t)(x) & CSR_MIP_MEIP_MASK) >> CSR_MIP_MEIP_SHIFT)
  1897. /*
  1898. * SEIP (RW)
  1899. *
  1900. * S mode external interrupt pending bit.
  1901. * 0:Not pending
  1902. * 1:Pending
  1903. */
  1904. #define CSR_MIP_SEIP_MASK (0x200U)
  1905. #define CSR_MIP_SEIP_SHIFT (9U)
  1906. #define CSR_MIP_SEIP_SET(x) (((uint32_t)(x) << CSR_MIP_SEIP_SHIFT) & CSR_MIP_SEIP_MASK)
  1907. #define CSR_MIP_SEIP_GET(x) (((uint32_t)(x) & CSR_MIP_SEIP_MASK) >> CSR_MIP_SEIP_SHIFT)
  1908. /*
  1909. * UEIP (RW)
  1910. *
  1911. * U mode external interrupt pending bit.
  1912. * 0:Not pending
  1913. * 1:Pending
  1914. */
  1915. #define CSR_MIP_UEIP_MASK (0x100U)
  1916. #define CSR_MIP_UEIP_SHIFT (8U)
  1917. #define CSR_MIP_UEIP_SET(x) (((uint32_t)(x) << CSR_MIP_UEIP_SHIFT) & CSR_MIP_UEIP_MASK)
  1918. #define CSR_MIP_UEIP_GET(x) (((uint32_t)(x) & CSR_MIP_UEIP_MASK) >> CSR_MIP_UEIP_SHIFT)
  1919. /*
  1920. * MTIP (RW)
  1921. *
  1922. * M mode timer interrupt pending bit.
  1923. * 0:Not pending
  1924. * 1:Pending
  1925. */
  1926. #define CSR_MIP_MTIP_MASK (0x80U)
  1927. #define CSR_MIP_MTIP_SHIFT (7U)
  1928. #define CSR_MIP_MTIP_SET(x) (((uint32_t)(x) << CSR_MIP_MTIP_SHIFT) & CSR_MIP_MTIP_MASK)
  1929. #define CSR_MIP_MTIP_GET(x) (((uint32_t)(x) & CSR_MIP_MTIP_MASK) >> CSR_MIP_MTIP_SHIFT)
  1930. /*
  1931. * STIP (RW)
  1932. *
  1933. * S mode timer interrupt pending bit.
  1934. * 0:Not pending
  1935. * 1:Pending
  1936. */
  1937. #define CSR_MIP_STIP_MASK (0x20U)
  1938. #define CSR_MIP_STIP_SHIFT (5U)
  1939. #define CSR_MIP_STIP_SET(x) (((uint32_t)(x) << CSR_MIP_STIP_SHIFT) & CSR_MIP_STIP_MASK)
  1940. #define CSR_MIP_STIP_GET(x) (((uint32_t)(x) & CSR_MIP_STIP_MASK) >> CSR_MIP_STIP_SHIFT)
  1941. /*
  1942. * UTIP (RW)
  1943. *
  1944. * U mode timer interrupt pending bit
  1945. * 0:Not pending
  1946. * 1:Pending
  1947. */
  1948. #define CSR_MIP_UTIP_MASK (0x10U)
  1949. #define CSR_MIP_UTIP_SHIFT (4U)
  1950. #define CSR_MIP_UTIP_SET(x) (((uint32_t)(x) << CSR_MIP_UTIP_SHIFT) & CSR_MIP_UTIP_MASK)
  1951. #define CSR_MIP_UTIP_GET(x) (((uint32_t)(x) & CSR_MIP_UTIP_MASK) >> CSR_MIP_UTIP_SHIFT)
  1952. /*
  1953. * MSIP (RW)
  1954. *
  1955. * M mode software interrupt pending bit.
  1956. * 0:Not pending
  1957. * 1:Pending
  1958. */
  1959. #define CSR_MIP_MSIP_MASK (0x8U)
  1960. #define CSR_MIP_MSIP_SHIFT (3U)
  1961. #define CSR_MIP_MSIP_SET(x) (((uint32_t)(x) << CSR_MIP_MSIP_SHIFT) & CSR_MIP_MSIP_MASK)
  1962. #define CSR_MIP_MSIP_GET(x) (((uint32_t)(x) & CSR_MIP_MSIP_MASK) >> CSR_MIP_MSIP_SHIFT)
  1963. /*
  1964. * SSIP (RW)
  1965. *
  1966. * S mode software interrupt pending bit.
  1967. * 0:Not pending
  1968. * 1:Pending
  1969. */
  1970. #define CSR_MIP_SSIP_MASK (0x2U)
  1971. #define CSR_MIP_SSIP_SHIFT (1U)
  1972. #define CSR_MIP_SSIP_SET(x) (((uint32_t)(x) << CSR_MIP_SSIP_SHIFT) & CSR_MIP_SSIP_MASK)
  1973. #define CSR_MIP_SSIP_GET(x) (((uint32_t)(x) & CSR_MIP_SSIP_MASK) >> CSR_MIP_SSIP_SHIFT)
  1974. /*
  1975. * USIP (RW)
  1976. *
  1977. * U mode software interrupt pending bit.
  1978. * 0:Not pending
  1979. * 1:Pending
  1980. */
  1981. #define CSR_MIP_USIP_MASK (0x1U)
  1982. #define CSR_MIP_USIP_SHIFT (0U)
  1983. #define CSR_MIP_USIP_SET(x) (((uint32_t)(x) << CSR_MIP_USIP_SHIFT) & CSR_MIP_USIP_MASK)
  1984. #define CSR_MIP_USIP_GET(x) (((uint32_t)(x) & CSR_MIP_USIP_MASK) >> CSR_MIP_USIP_SHIFT)
  1985. /* Bitfield definition for register: PMPCFG0 */
  1986. /*
  1987. * PMP3CFG (RW)
  1988. *
  1989. * See PMPCFG Table
  1990. */
  1991. #define CSR_PMPCFG0_PMP3CFG_MASK (0xFF000000UL)
  1992. #define CSR_PMPCFG0_PMP3CFG_SHIFT (24U)
  1993. #define CSR_PMPCFG0_PMP3CFG_SET(x) (((uint32_t)(x) << CSR_PMPCFG0_PMP3CFG_SHIFT) & CSR_PMPCFG0_PMP3CFG_MASK)
  1994. #define CSR_PMPCFG0_PMP3CFG_GET(x) (((uint32_t)(x) & CSR_PMPCFG0_PMP3CFG_MASK) >> CSR_PMPCFG0_PMP3CFG_SHIFT)
  1995. /*
  1996. * PMP2CFG (RW)
  1997. *
  1998. * See PMPCFG Table
  1999. */
  2000. #define CSR_PMPCFG0_PMP2CFG_MASK (0xFF0000UL)
  2001. #define CSR_PMPCFG0_PMP2CFG_SHIFT (16U)
  2002. #define CSR_PMPCFG0_PMP2CFG_SET(x) (((uint32_t)(x) << CSR_PMPCFG0_PMP2CFG_SHIFT) & CSR_PMPCFG0_PMP2CFG_MASK)
  2003. #define CSR_PMPCFG0_PMP2CFG_GET(x) (((uint32_t)(x) & CSR_PMPCFG0_PMP2CFG_MASK) >> CSR_PMPCFG0_PMP2CFG_SHIFT)
  2004. /*
  2005. * PMP1CFG (RW)
  2006. *
  2007. * See PMPCFG Table
  2008. */
  2009. #define CSR_PMPCFG0_PMP1CFG_MASK (0xFF00U)
  2010. #define CSR_PMPCFG0_PMP1CFG_SHIFT (8U)
  2011. #define CSR_PMPCFG0_PMP1CFG_SET(x) (((uint32_t)(x) << CSR_PMPCFG0_PMP1CFG_SHIFT) & CSR_PMPCFG0_PMP1CFG_MASK)
  2012. #define CSR_PMPCFG0_PMP1CFG_GET(x) (((uint32_t)(x) & CSR_PMPCFG0_PMP1CFG_MASK) >> CSR_PMPCFG0_PMP1CFG_SHIFT)
  2013. /*
  2014. * PMP0CFG (RW)
  2015. *
  2016. * See PMPCFG Table
  2017. */
  2018. #define CSR_PMPCFG0_PMP0CFG_MASK (0xFFU)
  2019. #define CSR_PMPCFG0_PMP0CFG_SHIFT (0U)
  2020. #define CSR_PMPCFG0_PMP0CFG_SET(x) (((uint32_t)(x) << CSR_PMPCFG0_PMP0CFG_SHIFT) & CSR_PMPCFG0_PMP0CFG_MASK)
  2021. #define CSR_PMPCFG0_PMP0CFG_GET(x) (((uint32_t)(x) & CSR_PMPCFG0_PMP0CFG_MASK) >> CSR_PMPCFG0_PMP0CFG_SHIFT)
  2022. /* Bitfield definition for register: PMPCFG1 */
  2023. /*
  2024. * PMP7CFG (RW)
  2025. *
  2026. * See PMPCFG Table
  2027. */
  2028. #define CSR_PMPCFG1_PMP7CFG_MASK (0xFF000000UL)
  2029. #define CSR_PMPCFG1_PMP7CFG_SHIFT (24U)
  2030. #define CSR_PMPCFG1_PMP7CFG_SET(x) (((uint32_t)(x) << CSR_PMPCFG1_PMP7CFG_SHIFT) & CSR_PMPCFG1_PMP7CFG_MASK)
  2031. #define CSR_PMPCFG1_PMP7CFG_GET(x) (((uint32_t)(x) & CSR_PMPCFG1_PMP7CFG_MASK) >> CSR_PMPCFG1_PMP7CFG_SHIFT)
  2032. /*
  2033. * PMP6CFG (RW)
  2034. *
  2035. * See PMPCFG Table
  2036. */
  2037. #define CSR_PMPCFG1_PMP6CFG_MASK (0xFF0000UL)
  2038. #define CSR_PMPCFG1_PMP6CFG_SHIFT (16U)
  2039. #define CSR_PMPCFG1_PMP6CFG_SET(x) (((uint32_t)(x) << CSR_PMPCFG1_PMP6CFG_SHIFT) & CSR_PMPCFG1_PMP6CFG_MASK)
  2040. #define CSR_PMPCFG1_PMP6CFG_GET(x) (((uint32_t)(x) & CSR_PMPCFG1_PMP6CFG_MASK) >> CSR_PMPCFG1_PMP6CFG_SHIFT)
  2041. /*
  2042. * PMP5CFG (RW)
  2043. *
  2044. * See PMPCFG Table
  2045. */
  2046. #define CSR_PMPCFG1_PMP5CFG_MASK (0xFF00U)
  2047. #define CSR_PMPCFG1_PMP5CFG_SHIFT (8U)
  2048. #define CSR_PMPCFG1_PMP5CFG_SET(x) (((uint32_t)(x) << CSR_PMPCFG1_PMP5CFG_SHIFT) & CSR_PMPCFG1_PMP5CFG_MASK)
  2049. #define CSR_PMPCFG1_PMP5CFG_GET(x) (((uint32_t)(x) & CSR_PMPCFG1_PMP5CFG_MASK) >> CSR_PMPCFG1_PMP5CFG_SHIFT)
  2050. /*
  2051. * PMP4CFG (RW)
  2052. *
  2053. * See PMPCFG Table
  2054. */
  2055. #define CSR_PMPCFG1_PMP4CFG_MASK (0xFFU)
  2056. #define CSR_PMPCFG1_PMP4CFG_SHIFT (0U)
  2057. #define CSR_PMPCFG1_PMP4CFG_SET(x) (((uint32_t)(x) << CSR_PMPCFG1_PMP4CFG_SHIFT) & CSR_PMPCFG1_PMP4CFG_MASK)
  2058. #define CSR_PMPCFG1_PMP4CFG_GET(x) (((uint32_t)(x) & CSR_PMPCFG1_PMP4CFG_MASK) >> CSR_PMPCFG1_PMP4CFG_SHIFT)
  2059. /* Bitfield definition for register: PMPCFG2 */
  2060. /*
  2061. * PMP11CFG (RW)
  2062. *
  2063. * See PMPCFG Table
  2064. */
  2065. #define CSR_PMPCFG2_PMP11CFG_MASK (0xFF000000UL)
  2066. #define CSR_PMPCFG2_PMP11CFG_SHIFT (24U)
  2067. #define CSR_PMPCFG2_PMP11CFG_SET(x) (((uint32_t)(x) << CSR_PMPCFG2_PMP11CFG_SHIFT) & CSR_PMPCFG2_PMP11CFG_MASK)
  2068. #define CSR_PMPCFG2_PMP11CFG_GET(x) (((uint32_t)(x) & CSR_PMPCFG2_PMP11CFG_MASK) >> CSR_PMPCFG2_PMP11CFG_SHIFT)
  2069. /*
  2070. * PMP10CFG (RW)
  2071. *
  2072. * See PMPCFG Table
  2073. */
  2074. #define CSR_PMPCFG2_PMP10CFG_MASK (0xFF0000UL)
  2075. #define CSR_PMPCFG2_PMP10CFG_SHIFT (16U)
  2076. #define CSR_PMPCFG2_PMP10CFG_SET(x) (((uint32_t)(x) << CSR_PMPCFG2_PMP10CFG_SHIFT) & CSR_PMPCFG2_PMP10CFG_MASK)
  2077. #define CSR_PMPCFG2_PMP10CFG_GET(x) (((uint32_t)(x) & CSR_PMPCFG2_PMP10CFG_MASK) >> CSR_PMPCFG2_PMP10CFG_SHIFT)
  2078. /*
  2079. * PMP9CFG (RW)
  2080. *
  2081. * See PMPCFG Table
  2082. */
  2083. #define CSR_PMPCFG2_PMP9CFG_MASK (0xFF00U)
  2084. #define CSR_PMPCFG2_PMP9CFG_SHIFT (8U)
  2085. #define CSR_PMPCFG2_PMP9CFG_SET(x) (((uint32_t)(x) << CSR_PMPCFG2_PMP9CFG_SHIFT) & CSR_PMPCFG2_PMP9CFG_MASK)
  2086. #define CSR_PMPCFG2_PMP9CFG_GET(x) (((uint32_t)(x) & CSR_PMPCFG2_PMP9CFG_MASK) >> CSR_PMPCFG2_PMP9CFG_SHIFT)
  2087. /*
  2088. * PMP8CFG (RW)
  2089. *
  2090. * See PMPCFG Table
  2091. */
  2092. #define CSR_PMPCFG2_PMP8CFG_MASK (0xFFU)
  2093. #define CSR_PMPCFG2_PMP8CFG_SHIFT (0U)
  2094. #define CSR_PMPCFG2_PMP8CFG_SET(x) (((uint32_t)(x) << CSR_PMPCFG2_PMP8CFG_SHIFT) & CSR_PMPCFG2_PMP8CFG_MASK)
  2095. #define CSR_PMPCFG2_PMP8CFG_GET(x) (((uint32_t)(x) & CSR_PMPCFG2_PMP8CFG_MASK) >> CSR_PMPCFG2_PMP8CFG_SHIFT)
  2096. /* Bitfield definition for register: PMPCFG3 */
  2097. /*
  2098. * PMP15CFG (RW)
  2099. *
  2100. * See PMPCFG Table
  2101. */
  2102. #define CSR_PMPCFG3_PMP15CFG_MASK (0xFF000000UL)
  2103. #define CSR_PMPCFG3_PMP15CFG_SHIFT (24U)
  2104. #define CSR_PMPCFG3_PMP15CFG_SET(x) (((uint32_t)(x) << CSR_PMPCFG3_PMP15CFG_SHIFT) & CSR_PMPCFG3_PMP15CFG_MASK)
  2105. #define CSR_PMPCFG3_PMP15CFG_GET(x) (((uint32_t)(x) & CSR_PMPCFG3_PMP15CFG_MASK) >> CSR_PMPCFG3_PMP15CFG_SHIFT)
  2106. /*
  2107. * PMP14CFG (RW)
  2108. *
  2109. * See PMPCFG Table
  2110. */
  2111. #define CSR_PMPCFG3_PMP14CFG_MASK (0xFF0000UL)
  2112. #define CSR_PMPCFG3_PMP14CFG_SHIFT (16U)
  2113. #define CSR_PMPCFG3_PMP14CFG_SET(x) (((uint32_t)(x) << CSR_PMPCFG3_PMP14CFG_SHIFT) & CSR_PMPCFG3_PMP14CFG_MASK)
  2114. #define CSR_PMPCFG3_PMP14CFG_GET(x) (((uint32_t)(x) & CSR_PMPCFG3_PMP14CFG_MASK) >> CSR_PMPCFG3_PMP14CFG_SHIFT)
  2115. /*
  2116. * PMP13CFG (RW)
  2117. *
  2118. * See PMPCFG Table
  2119. */
  2120. #define CSR_PMPCFG3_PMP13CFG_MASK (0xFF00U)
  2121. #define CSR_PMPCFG3_PMP13CFG_SHIFT (8U)
  2122. #define CSR_PMPCFG3_PMP13CFG_SET(x) (((uint32_t)(x) << CSR_PMPCFG3_PMP13CFG_SHIFT) & CSR_PMPCFG3_PMP13CFG_MASK)
  2123. #define CSR_PMPCFG3_PMP13CFG_GET(x) (((uint32_t)(x) & CSR_PMPCFG3_PMP13CFG_MASK) >> CSR_PMPCFG3_PMP13CFG_SHIFT)
  2124. /*
  2125. * PMP12CFG (RW)
  2126. *
  2127. * See PMPCFG Table
  2128. */
  2129. #define CSR_PMPCFG3_PMP12CFG_MASK (0xFFU)
  2130. #define CSR_PMPCFG3_PMP12CFG_SHIFT (0U)
  2131. #define CSR_PMPCFG3_PMP12CFG_SET(x) (((uint32_t)(x) << CSR_PMPCFG3_PMP12CFG_SHIFT) & CSR_PMPCFG3_PMP12CFG_MASK)
  2132. #define CSR_PMPCFG3_PMP12CFG_GET(x) (((uint32_t)(x) & CSR_PMPCFG3_PMP12CFG_MASK) >> CSR_PMPCFG3_PMP12CFG_SHIFT)
  2133. /* Bitfield definition for register array: PMPADDR */
  2134. /*
  2135. * PMPADDR_31_2 (RW)
  2136. *
  2137. * Register Content : Match Size(Byte)
  2138. * aaaa. . . aaa0 8
  2139. * aaaa. . . aa01 16
  2140. * aaaa. . . a011 32
  2141. * . . . . . .
  2142. * aa01. . . 1111 2^{XLEN}
  2143. * a011. . . 1111 2^{XLEN+1}
  2144. * 0111. . . 1111 2^{XLEN+2}
  2145. * 1111. . . 1111 2^{XLEN+3*1}
  2146. */
  2147. #define CSR_PMPADDR0_PMPADDR_31_2_MASK (0xFFFFFFFCUL)
  2148. #define CSR_PMPADDR0_PMPADDR_31_2_SHIFT (2U)
  2149. #define CSR_PMPADDR0_PMPADDR_31_2_SET(x) (((uint32_t)(x) << CSR_PMPADDR0_PMPADDR_31_2_SHIFT) & CSR_PMPADDR0_PMPADDR_31_2_MASK)
  2150. #define CSR_PMPADDR0_PMPADDR_31_2_GET(x) (((uint32_t)(x) & CSR_PMPADDR0_PMPADDR_31_2_MASK) >> CSR_PMPADDR0_PMPADDR_31_2_SHIFT)
  2151. /* Bitfield definition for register array: PMPADDR */
  2152. /*
  2153. * PMPADDR_31_2 (RW)
  2154. *
  2155. * same as pmpaddr0
  2156. */
  2157. #define CSR_PMPADDR1_PMPADDR_31_2_MASK (0xFFFFFFFCUL)
  2158. #define CSR_PMPADDR1_PMPADDR_31_2_SHIFT (2U)
  2159. #define CSR_PMPADDR1_PMPADDR_31_2_SET(x) (((uint32_t)(x) << CSR_PMPADDR1_PMPADDR_31_2_SHIFT) & CSR_PMPADDR1_PMPADDR_31_2_MASK)
  2160. #define CSR_PMPADDR1_PMPADDR_31_2_GET(x) (((uint32_t)(x) & CSR_PMPADDR1_PMPADDR_31_2_MASK) >> CSR_PMPADDR1_PMPADDR_31_2_SHIFT)
  2161. /* Bitfield definition for register array: PMPADDR */
  2162. /*
  2163. * PMPADDR_31_2 (RW)
  2164. *
  2165. * same as pmpaddr0
  2166. */
  2167. #define CSR_PMPADDR2_PMPADDR_31_2_MASK (0xFFFFFFFCUL)
  2168. #define CSR_PMPADDR2_PMPADDR_31_2_SHIFT (2U)
  2169. #define CSR_PMPADDR2_PMPADDR_31_2_SET(x) (((uint32_t)(x) << CSR_PMPADDR2_PMPADDR_31_2_SHIFT) & CSR_PMPADDR2_PMPADDR_31_2_MASK)
  2170. #define CSR_PMPADDR2_PMPADDR_31_2_GET(x) (((uint32_t)(x) & CSR_PMPADDR2_PMPADDR_31_2_MASK) >> CSR_PMPADDR2_PMPADDR_31_2_SHIFT)
  2171. /* Bitfield definition for register array: PMPADDR */
  2172. /*
  2173. * PMPADDR_31_2 (RW)
  2174. *
  2175. * same as pmpaddr0
  2176. */
  2177. #define CSR_PMPADDR3_PMPADDR_31_2_MASK (0xFFFFFFFCUL)
  2178. #define CSR_PMPADDR3_PMPADDR_31_2_SHIFT (2U)
  2179. #define CSR_PMPADDR3_PMPADDR_31_2_SET(x) (((uint32_t)(x) << CSR_PMPADDR3_PMPADDR_31_2_SHIFT) & CSR_PMPADDR3_PMPADDR_31_2_MASK)
  2180. #define CSR_PMPADDR3_PMPADDR_31_2_GET(x) (((uint32_t)(x) & CSR_PMPADDR3_PMPADDR_31_2_MASK) >> CSR_PMPADDR3_PMPADDR_31_2_SHIFT)
  2181. /* Bitfield definition for register array: PMPADDR */
  2182. /*
  2183. * PMPADDR_31_2 (RW)
  2184. *
  2185. * same as pmpaddr0
  2186. */
  2187. #define CSR_PMPADDR4_PMPADDR_31_2_MASK (0xFFFFFFFCUL)
  2188. #define CSR_PMPADDR4_PMPADDR_31_2_SHIFT (2U)
  2189. #define CSR_PMPADDR4_PMPADDR_31_2_SET(x) (((uint32_t)(x) << CSR_PMPADDR4_PMPADDR_31_2_SHIFT) & CSR_PMPADDR4_PMPADDR_31_2_MASK)
  2190. #define CSR_PMPADDR4_PMPADDR_31_2_GET(x) (((uint32_t)(x) & CSR_PMPADDR4_PMPADDR_31_2_MASK) >> CSR_PMPADDR4_PMPADDR_31_2_SHIFT)
  2191. /* Bitfield definition for register array: PMPADDR */
  2192. /*
  2193. * PMPADDR_31_2 (RW)
  2194. *
  2195. * same as pmpaddr0
  2196. */
  2197. #define CSR_PMPADDR5_PMPADDR_31_2_MASK (0xFFFFFFFCUL)
  2198. #define CSR_PMPADDR5_PMPADDR_31_2_SHIFT (2U)
  2199. #define CSR_PMPADDR5_PMPADDR_31_2_SET(x) (((uint32_t)(x) << CSR_PMPADDR5_PMPADDR_31_2_SHIFT) & CSR_PMPADDR5_PMPADDR_31_2_MASK)
  2200. #define CSR_PMPADDR5_PMPADDR_31_2_GET(x) (((uint32_t)(x) & CSR_PMPADDR5_PMPADDR_31_2_MASK) >> CSR_PMPADDR5_PMPADDR_31_2_SHIFT)
  2201. /* Bitfield definition for register array: PMPADDR */
  2202. /*
  2203. * PMPADDR_31_2 (RW)
  2204. *
  2205. * same as pmpaddr0
  2206. */
  2207. #define CSR_PMPADDR6_PMPADDR_31_2_MASK (0xFFFFFFFCUL)
  2208. #define CSR_PMPADDR6_PMPADDR_31_2_SHIFT (2U)
  2209. #define CSR_PMPADDR6_PMPADDR_31_2_SET(x) (((uint32_t)(x) << CSR_PMPADDR6_PMPADDR_31_2_SHIFT) & CSR_PMPADDR6_PMPADDR_31_2_MASK)
  2210. #define CSR_PMPADDR6_PMPADDR_31_2_GET(x) (((uint32_t)(x) & CSR_PMPADDR6_PMPADDR_31_2_MASK) >> CSR_PMPADDR6_PMPADDR_31_2_SHIFT)
  2211. /* Bitfield definition for register array: PMPADDR */
  2212. /*
  2213. * PMPADDR_31_2 (RW)
  2214. *
  2215. * same as pmpaddr0
  2216. */
  2217. #define CSR_PMPADDR7_PMPADDR_31_2_MASK (0xFFFFFFFCUL)
  2218. #define CSR_PMPADDR7_PMPADDR_31_2_SHIFT (2U)
  2219. #define CSR_PMPADDR7_PMPADDR_31_2_SET(x) (((uint32_t)(x) << CSR_PMPADDR7_PMPADDR_31_2_SHIFT) & CSR_PMPADDR7_PMPADDR_31_2_MASK)
  2220. #define CSR_PMPADDR7_PMPADDR_31_2_GET(x) (((uint32_t)(x) & CSR_PMPADDR7_PMPADDR_31_2_MASK) >> CSR_PMPADDR7_PMPADDR_31_2_SHIFT)
  2221. /* Bitfield definition for register array: PMPADDR */
  2222. /*
  2223. * PMPADDR_31_2 (RW)
  2224. *
  2225. * same as pmpaddr0
  2226. */
  2227. #define CSR_PMPADDR8_PMPADDR_31_2_MASK (0xFFFFFFFCUL)
  2228. #define CSR_PMPADDR8_PMPADDR_31_2_SHIFT (2U)
  2229. #define CSR_PMPADDR8_PMPADDR_31_2_SET(x) (((uint32_t)(x) << CSR_PMPADDR8_PMPADDR_31_2_SHIFT) & CSR_PMPADDR8_PMPADDR_31_2_MASK)
  2230. #define CSR_PMPADDR8_PMPADDR_31_2_GET(x) (((uint32_t)(x) & CSR_PMPADDR8_PMPADDR_31_2_MASK) >> CSR_PMPADDR8_PMPADDR_31_2_SHIFT)
  2231. /* Bitfield definition for register array: PMPADDR */
  2232. /*
  2233. * PMPADDR_31_2 (RW)
  2234. *
  2235. * same as pmpaddr0
  2236. */
  2237. #define CSR_PMPADDR9_PMPADDR_31_2_MASK (0xFFFFFFFCUL)
  2238. #define CSR_PMPADDR9_PMPADDR_31_2_SHIFT (2U)
  2239. #define CSR_PMPADDR9_PMPADDR_31_2_SET(x) (((uint32_t)(x) << CSR_PMPADDR9_PMPADDR_31_2_SHIFT) & CSR_PMPADDR9_PMPADDR_31_2_MASK)
  2240. #define CSR_PMPADDR9_PMPADDR_31_2_GET(x) (((uint32_t)(x) & CSR_PMPADDR9_PMPADDR_31_2_MASK) >> CSR_PMPADDR9_PMPADDR_31_2_SHIFT)
  2241. /* Bitfield definition for register array: PMPADDR */
  2242. /*
  2243. * PMPADDR_31_2 (RW)
  2244. *
  2245. * same as pmpaddr0
  2246. */
  2247. #define CSR_PMPADDR10_PMPADDR_31_2_MASK (0xFFFFFFFCUL)
  2248. #define CSR_PMPADDR10_PMPADDR_31_2_SHIFT (2U)
  2249. #define CSR_PMPADDR10_PMPADDR_31_2_SET(x) (((uint32_t)(x) << CSR_PMPADDR10_PMPADDR_31_2_SHIFT) & CSR_PMPADDR10_PMPADDR_31_2_MASK)
  2250. #define CSR_PMPADDR10_PMPADDR_31_2_GET(x) (((uint32_t)(x) & CSR_PMPADDR10_PMPADDR_31_2_MASK) >> CSR_PMPADDR10_PMPADDR_31_2_SHIFT)
  2251. /* Bitfield definition for register array: PMPADDR */
  2252. /*
  2253. * PMPADDR_31_2 (RW)
  2254. *
  2255. * same as pmpaddr0
  2256. */
  2257. #define CSR_PMPADDR11_PMPADDR_31_2_MASK (0xFFFFFFFCUL)
  2258. #define CSR_PMPADDR11_PMPADDR_31_2_SHIFT (2U)
  2259. #define CSR_PMPADDR11_PMPADDR_31_2_SET(x) (((uint32_t)(x) << CSR_PMPADDR11_PMPADDR_31_2_SHIFT) & CSR_PMPADDR11_PMPADDR_31_2_MASK)
  2260. #define CSR_PMPADDR11_PMPADDR_31_2_GET(x) (((uint32_t)(x) & CSR_PMPADDR11_PMPADDR_31_2_MASK) >> CSR_PMPADDR11_PMPADDR_31_2_SHIFT)
  2261. /* Bitfield definition for register array: PMPADDR */
  2262. /*
  2263. * PMPADDR_31_2 (RW)
  2264. *
  2265. * same as pmpaddr0
  2266. */
  2267. #define CSR_PMPADDR12_PMPADDR_31_2_MASK (0xFFFFFFFCUL)
  2268. #define CSR_PMPADDR12_PMPADDR_31_2_SHIFT (2U)
  2269. #define CSR_PMPADDR12_PMPADDR_31_2_SET(x) (((uint32_t)(x) << CSR_PMPADDR12_PMPADDR_31_2_SHIFT) & CSR_PMPADDR12_PMPADDR_31_2_MASK)
  2270. #define CSR_PMPADDR12_PMPADDR_31_2_GET(x) (((uint32_t)(x) & CSR_PMPADDR12_PMPADDR_31_2_MASK) >> CSR_PMPADDR12_PMPADDR_31_2_SHIFT)
  2271. /* Bitfield definition for register array: PMPADDR */
  2272. /*
  2273. * PMPADDR_31_2 (RW)
  2274. *
  2275. * same as pmpaddr0
  2276. */
  2277. #define CSR_PMPADDR13_PMPADDR_31_2_MASK (0xFFFFFFFCUL)
  2278. #define CSR_PMPADDR13_PMPADDR_31_2_SHIFT (2U)
  2279. #define CSR_PMPADDR13_PMPADDR_31_2_SET(x) (((uint32_t)(x) << CSR_PMPADDR13_PMPADDR_31_2_SHIFT) & CSR_PMPADDR13_PMPADDR_31_2_MASK)
  2280. #define CSR_PMPADDR13_PMPADDR_31_2_GET(x) (((uint32_t)(x) & CSR_PMPADDR13_PMPADDR_31_2_MASK) >> CSR_PMPADDR13_PMPADDR_31_2_SHIFT)
  2281. /* Bitfield definition for register array: PMPADDR */
  2282. /*
  2283. * PMPADDR_31_2 (RW)
  2284. *
  2285. * same as pmpaddr0
  2286. */
  2287. #define CSR_PMPADDR14_PMPADDR_31_2_MASK (0xFFFFFFFCUL)
  2288. #define CSR_PMPADDR14_PMPADDR_31_2_SHIFT (2U)
  2289. #define CSR_PMPADDR14_PMPADDR_31_2_SET(x) (((uint32_t)(x) << CSR_PMPADDR14_PMPADDR_31_2_SHIFT) & CSR_PMPADDR14_PMPADDR_31_2_MASK)
  2290. #define CSR_PMPADDR14_PMPADDR_31_2_GET(x) (((uint32_t)(x) & CSR_PMPADDR14_PMPADDR_31_2_MASK) >> CSR_PMPADDR14_PMPADDR_31_2_SHIFT)
  2291. /* Bitfield definition for register array: PMPADDR */
  2292. /*
  2293. * PMPADDR_31_2 (RW)
  2294. *
  2295. * same as pmpaddr0
  2296. */
  2297. #define CSR_PMPADDR15_PMPADDR_31_2_MASK (0xFFFFFFFCUL)
  2298. #define CSR_PMPADDR15_PMPADDR_31_2_SHIFT (2U)
  2299. #define CSR_PMPADDR15_PMPADDR_31_2_SET(x) (((uint32_t)(x) << CSR_PMPADDR15_PMPADDR_31_2_SHIFT) & CSR_PMPADDR15_PMPADDR_31_2_MASK)
  2300. #define CSR_PMPADDR15_PMPADDR_31_2_GET(x) (((uint32_t)(x) & CSR_PMPADDR15_PMPADDR_31_2_MASK) >> CSR_PMPADDR15_PMPADDR_31_2_SHIFT)
  2301. /* Bitfield definition for register: TSELECT */
  2302. /*
  2303. * TRIGGER_INDEX (RW)
  2304. *
  2305. * This register determines which trigger is accessible through other trigger registers.
  2306. */
  2307. #define CSR_TSELECT_TRIGGER_INDEX_MASK (0xFFFFFFFFUL)
  2308. #define CSR_TSELECT_TRIGGER_INDEX_SHIFT (0U)
  2309. #define CSR_TSELECT_TRIGGER_INDEX_SET(x) (((uint32_t)(x) << CSR_TSELECT_TRIGGER_INDEX_SHIFT) & CSR_TSELECT_TRIGGER_INDEX_MASK)
  2310. #define CSR_TSELECT_TRIGGER_INDEX_GET(x) (((uint32_t)(x) & CSR_TSELECT_TRIGGER_INDEX_MASK) >> CSR_TSELECT_TRIGGER_INDEX_SHIFT)
  2311. /* Bitfield definition for register: TDATA1 */
  2312. /*
  2313. * TYPE (RW)
  2314. *
  2315. * Indicates the trigger type.
  2316. * 0:The selected trigger is invalid.
  2317. * 2:The selected trigger is an address/data match trigger.
  2318. * 3:The selected trigger is an instruction count trigger
  2319. * 4:The selected trigger is an interrupt trigger.
  2320. * 5:The selected trigger is an exception trigger.
  2321. */
  2322. #define CSR_TDATA1_TYPE_MASK (0xF0000000UL)
  2323. #define CSR_TDATA1_TYPE_SHIFT (28U)
  2324. #define CSR_TDATA1_TYPE_SET(x) (((uint32_t)(x) << CSR_TDATA1_TYPE_SHIFT) & CSR_TDATA1_TYPE_MASK)
  2325. #define CSR_TDATA1_TYPE_GET(x) (((uint32_t)(x) & CSR_TDATA1_TYPE_MASK) >> CSR_TDATA1_TYPE_SHIFT)
  2326. /*
  2327. * DMODE (RW)
  2328. *
  2329. * Setting this field to indicate the trigger is used by Debug Mode.
  2330. * 0:Both Debug-mode and M-mode can write the currently selected trigger registers.
  2331. * 1:Only Debug Mode can write the currently selected trigger registers. Writes from M-mode is ignored.
  2332. */
  2333. #define CSR_TDATA1_DMODE_MASK (0x8000000UL)
  2334. #define CSR_TDATA1_DMODE_SHIFT (27U)
  2335. #define CSR_TDATA1_DMODE_SET(x) (((uint32_t)(x) << CSR_TDATA1_DMODE_SHIFT) & CSR_TDATA1_DMODE_MASK)
  2336. #define CSR_TDATA1_DMODE_GET(x) (((uint32_t)(x) & CSR_TDATA1_DMODE_MASK) >> CSR_TDATA1_DMODE_SHIFT)
  2337. /*
  2338. * DATA (RW)
  2339. *
  2340. * Trigger-specific data
  2341. */
  2342. #define CSR_TDATA1_DATA_MASK (0x7FFFFFFUL)
  2343. #define CSR_TDATA1_DATA_SHIFT (0U)
  2344. #define CSR_TDATA1_DATA_SET(x) (((uint32_t)(x) << CSR_TDATA1_DATA_SHIFT) & CSR_TDATA1_DATA_MASK)
  2345. #define CSR_TDATA1_DATA_GET(x) (((uint32_t)(x) & CSR_TDATA1_DATA_MASK) >> CSR_TDATA1_DATA_SHIFT)
  2346. /* Bitfield definition for register: MCONTROL */
  2347. /*
  2348. * TYPE (RW)
  2349. *
  2350. * Indicates the trigger type.
  2351. * 0:The selected trigger is invalid.
  2352. * 2:The selected trigger is an address/data match trigger.
  2353. */
  2354. #define CSR_MCONTROL_TYPE_MASK (0xF0000000UL)
  2355. #define CSR_MCONTROL_TYPE_SHIFT (28U)
  2356. #define CSR_MCONTROL_TYPE_SET(x) (((uint32_t)(x) << CSR_MCONTROL_TYPE_SHIFT) & CSR_MCONTROL_TYPE_MASK)
  2357. #define CSR_MCONTROL_TYPE_GET(x) (((uint32_t)(x) & CSR_MCONTROL_TYPE_MASK) >> CSR_MCONTROL_TYPE_SHIFT)
  2358. /*
  2359. * DMODE (RW)
  2360. *
  2361. * Setting this field to indicate the trigger is used by Debug Mode.
  2362. * 0:Both Debug-mode and M-mode can write the currently selected trigger registers
  2363. * 1:Only Debug Mode can write the currently selected trigger registers. Writes from M-mode is ignored.
  2364. */
  2365. #define CSR_MCONTROL_DMODE_MASK (0x8000000UL)
  2366. #define CSR_MCONTROL_DMODE_SHIFT (27U)
  2367. #define CSR_MCONTROL_DMODE_SET(x) (((uint32_t)(x) << CSR_MCONTROL_DMODE_SHIFT) & CSR_MCONTROL_DMODE_MASK)
  2368. #define CSR_MCONTROL_DMODE_GET(x) (((uint32_t)(x) & CSR_MCONTROL_DMODE_MASK) >> CSR_MCONTROL_DMODE_SHIFT)
  2369. /*
  2370. * MASKMAX (RO)
  2371. *
  2372. * Indicates the largest naturally aligned range supported by the hardware is 2ˆ12 bytes.
  2373. */
  2374. #define CSR_MCONTROL_MASKMAX_MASK (0x7E00000UL)
  2375. #define CSR_MCONTROL_MASKMAX_SHIFT (21U)
  2376. #define CSR_MCONTROL_MASKMAX_GET(x) (((uint32_t)(x) & CSR_MCONTROL_MASKMAX_MASK) >> CSR_MCONTROL_MASKMAX_SHIFT)
  2377. /*
  2378. * ACTION (RW)
  2379. *
  2380. * Setting this field to select what happens when this trigger matches.
  2381. * 0:Raise a breakpoint exception
  2382. * 1:Enter Debug Mode. (Only supported when DMODE is 1.)
  2383. */
  2384. #define CSR_MCONTROL_ACTION_MASK (0xF000U)
  2385. #define CSR_MCONTROL_ACTION_SHIFT (12U)
  2386. #define CSR_MCONTROL_ACTION_SET(x) (((uint32_t)(x) << CSR_MCONTROL_ACTION_SHIFT) & CSR_MCONTROL_ACTION_MASK)
  2387. #define CSR_MCONTROL_ACTION_GET(x) (((uint32_t)(x) & CSR_MCONTROL_ACTION_MASK) >> CSR_MCONTROL_ACTION_SHIFT)
  2388. /*
  2389. * CHAIN (RW)
  2390. *
  2391. * Setting this field to enable trigger chain.
  2392. * 0:When this trigger matches, the configured action is taken.
  2393. * 1:While this trigger does not match, it prevents the trigger with the next index from matching.
  2394. * If Number of Triggers is 2, this field is hardwired to 0 on trigger 1 (tselect = 1).
  2395. * If Number of Triggers is 4, this field is hardwired
  2396. * to 0 on trigger 3 (tselect = 3).
  2397. * If Number of Triggers is 8, this field is hardwired to 0 on trigger 3 and trigger 7 (tselect = 3 or 7).
  2398. */
  2399. #define CSR_MCONTROL_CHAIN_MASK (0x800U)
  2400. #define CSR_MCONTROL_CHAIN_SHIFT (11U)
  2401. #define CSR_MCONTROL_CHAIN_SET(x) (((uint32_t)(x) << CSR_MCONTROL_CHAIN_SHIFT) & CSR_MCONTROL_CHAIN_MASK)
  2402. #define CSR_MCONTROL_CHAIN_GET(x) (((uint32_t)(x) & CSR_MCONTROL_CHAIN_MASK) >> CSR_MCONTROL_CHAIN_SHIFT)
  2403. /*
  2404. * MATCH (RW)
  2405. *
  2406. * Setting this field to select the matching scheme. 0:Matches when the value equals tdata2. 1:Matches when the top M bits of the value match the top M bits of tdata2. M is 31 minus the index of the least-significant bit containing 0 in tdata2.
  2407. * 2:Matches when the value is greater than (unsigned) or equal to tdata2.
  2408. * 3:Matches when the value is less than (unsigned) tdata2
  2409. */
  2410. #define CSR_MCONTROL_MATCH_MASK (0x780U)
  2411. #define CSR_MCONTROL_MATCH_SHIFT (7U)
  2412. #define CSR_MCONTROL_MATCH_SET(x) (((uint32_t)(x) << CSR_MCONTROL_MATCH_SHIFT) & CSR_MCONTROL_MATCH_MASK)
  2413. #define CSR_MCONTROL_MATCH_GET(x) (((uint32_t)(x) & CSR_MCONTROL_MATCH_MASK) >> CSR_MCONTROL_MATCH_SHIFT)
  2414. /*
  2415. * M (RW)
  2416. *
  2417. * Setting this field to enable this trigger in M-mode.
  2418. */
  2419. #define CSR_MCONTROL_M_MASK (0x40U)
  2420. #define CSR_MCONTROL_M_SHIFT (6U)
  2421. #define CSR_MCONTROL_M_SET(x) (((uint32_t)(x) << CSR_MCONTROL_M_SHIFT) & CSR_MCONTROL_M_MASK)
  2422. #define CSR_MCONTROL_M_GET(x) (((uint32_t)(x) & CSR_MCONTROL_M_MASK) >> CSR_MCONTROL_M_SHIFT)
  2423. /*
  2424. * S (RW)
  2425. *
  2426. * Setting this field to enable this trigger in S-mode.
  2427. */
  2428. #define CSR_MCONTROL_S_MASK (0x10U)
  2429. #define CSR_MCONTROL_S_SHIFT (4U)
  2430. #define CSR_MCONTROL_S_SET(x) (((uint32_t)(x) << CSR_MCONTROL_S_SHIFT) & CSR_MCONTROL_S_MASK)
  2431. #define CSR_MCONTROL_S_GET(x) (((uint32_t)(x) & CSR_MCONTROL_S_MASK) >> CSR_MCONTROL_S_SHIFT)
  2432. /*
  2433. * U (RW)
  2434. *
  2435. * Setting this field to enable this trigger in U-mode.
  2436. */
  2437. #define CSR_MCONTROL_U_MASK (0x8U)
  2438. #define CSR_MCONTROL_U_SHIFT (3U)
  2439. #define CSR_MCONTROL_U_SET(x) (((uint32_t)(x) << CSR_MCONTROL_U_SHIFT) & CSR_MCONTROL_U_MASK)
  2440. #define CSR_MCONTROL_U_GET(x) (((uint32_t)(x) & CSR_MCONTROL_U_MASK) >> CSR_MCONTROL_U_SHIFT)
  2441. /*
  2442. * EXECUTE (RW)
  2443. *
  2444. * Setting this field to enable this trigger to compare virtual address of an instruction.
  2445. */
  2446. #define CSR_MCONTROL_EXECUTE_MASK (0x4U)
  2447. #define CSR_MCONTROL_EXECUTE_SHIFT (2U)
  2448. #define CSR_MCONTROL_EXECUTE_SET(x) (((uint32_t)(x) << CSR_MCONTROL_EXECUTE_SHIFT) & CSR_MCONTROL_EXECUTE_MASK)
  2449. #define CSR_MCONTROL_EXECUTE_GET(x) (((uint32_t)(x) & CSR_MCONTROL_EXECUTE_MASK) >> CSR_MCONTROL_EXECUTE_SHIFT)
  2450. /*
  2451. * STORE (RW)
  2452. *
  2453. * Setting this field to enable this trigger to compare virtual address of a store.
  2454. */
  2455. #define CSR_MCONTROL_STORE_MASK (0x2U)
  2456. #define CSR_MCONTROL_STORE_SHIFT (1U)
  2457. #define CSR_MCONTROL_STORE_SET(x) (((uint32_t)(x) << CSR_MCONTROL_STORE_SHIFT) & CSR_MCONTROL_STORE_MASK)
  2458. #define CSR_MCONTROL_STORE_GET(x) (((uint32_t)(x) & CSR_MCONTROL_STORE_MASK) >> CSR_MCONTROL_STORE_SHIFT)
  2459. /*
  2460. * LOAD (RW)
  2461. *
  2462. * Setting this field to enable this trigger to compare virtual address of a load.
  2463. */
  2464. #define CSR_MCONTROL_LOAD_MASK (0x1U)
  2465. #define CSR_MCONTROL_LOAD_SHIFT (0U)
  2466. #define CSR_MCONTROL_LOAD_SET(x) (((uint32_t)(x) << CSR_MCONTROL_LOAD_SHIFT) & CSR_MCONTROL_LOAD_MASK)
  2467. #define CSR_MCONTROL_LOAD_GET(x) (((uint32_t)(x) & CSR_MCONTROL_LOAD_MASK) >> CSR_MCONTROL_LOAD_SHIFT)
  2468. /* Bitfield definition for register: ICOUNT */
  2469. /*
  2470. * TYPE (RW)
  2471. *
  2472. * The selected trigger is an instruction count trigger.
  2473. */
  2474. #define CSR_ICOUNT_TYPE_MASK (0xF0000000UL)
  2475. #define CSR_ICOUNT_TYPE_SHIFT (28U)
  2476. #define CSR_ICOUNT_TYPE_SET(x) (((uint32_t)(x) << CSR_ICOUNT_TYPE_SHIFT) & CSR_ICOUNT_TYPE_MASK)
  2477. #define CSR_ICOUNT_TYPE_GET(x) (((uint32_t)(x) & CSR_ICOUNT_TYPE_MASK) >> CSR_ICOUNT_TYPE_SHIFT)
  2478. /*
  2479. * DMODE (RW)
  2480. *
  2481. * Setting this field to indicate the trigger is used by Debug Mode.
  2482. * 0:Both Debug-mode and M-mode can write the currently selected trigger registers.
  2483. * 1:Only Debug Mode can write the currently selected trigger registers. Writes from M-mode is ignored.
  2484. */
  2485. #define CSR_ICOUNT_DMODE_MASK (0x8000000UL)
  2486. #define CSR_ICOUNT_DMODE_SHIFT (27U)
  2487. #define CSR_ICOUNT_DMODE_SET(x) (((uint32_t)(x) << CSR_ICOUNT_DMODE_SHIFT) & CSR_ICOUNT_DMODE_MASK)
  2488. #define CSR_ICOUNT_DMODE_GET(x) (((uint32_t)(x) & CSR_ICOUNT_DMODE_MASK) >> CSR_ICOUNT_DMODE_SHIFT)
  2489. /*
  2490. * COUNT (RO)
  2491. *
  2492. * This field is hardwired to 1 for single-stepping support
  2493. */
  2494. #define CSR_ICOUNT_COUNT_MASK (0x400U)
  2495. #define CSR_ICOUNT_COUNT_SHIFT (10U)
  2496. #define CSR_ICOUNT_COUNT_GET(x) (((uint32_t)(x) & CSR_ICOUNT_COUNT_MASK) >> CSR_ICOUNT_COUNT_SHIFT)
  2497. /*
  2498. * M (RW)
  2499. *
  2500. * Setting this field to enable this trigger in M-mode.
  2501. */
  2502. #define CSR_ICOUNT_M_MASK (0x200U)
  2503. #define CSR_ICOUNT_M_SHIFT (9U)
  2504. #define CSR_ICOUNT_M_SET(x) (((uint32_t)(x) << CSR_ICOUNT_M_SHIFT) & CSR_ICOUNT_M_MASK)
  2505. #define CSR_ICOUNT_M_GET(x) (((uint32_t)(x) & CSR_ICOUNT_M_MASK) >> CSR_ICOUNT_M_SHIFT)
  2506. /*
  2507. * S (RW)
  2508. *
  2509. * Setting this field to enable this trigger in S-mode.
  2510. */
  2511. #define CSR_ICOUNT_S_MASK (0x80U)
  2512. #define CSR_ICOUNT_S_SHIFT (7U)
  2513. #define CSR_ICOUNT_S_SET(x) (((uint32_t)(x) << CSR_ICOUNT_S_SHIFT) & CSR_ICOUNT_S_MASK)
  2514. #define CSR_ICOUNT_S_GET(x) (((uint32_t)(x) & CSR_ICOUNT_S_MASK) >> CSR_ICOUNT_S_SHIFT)
  2515. /*
  2516. * U (RW)
  2517. *
  2518. * Setting this field to enable this trigger in U-mode.
  2519. */
  2520. #define CSR_ICOUNT_U_MASK (0x40U)
  2521. #define CSR_ICOUNT_U_SHIFT (6U)
  2522. #define CSR_ICOUNT_U_SET(x) (((uint32_t)(x) << CSR_ICOUNT_U_SHIFT) & CSR_ICOUNT_U_MASK)
  2523. #define CSR_ICOUNT_U_GET(x) (((uint32_t)(x) & CSR_ICOUNT_U_MASK) >> CSR_ICOUNT_U_SHIFT)
  2524. /*
  2525. * ACTION (RW)
  2526. *
  2527. * Setting this field to select what happens when this trigger matches.
  2528. * 0:Raise a breakpoint exception
  2529. * 1:Enter Debug Mode. (Only supported when DMODE is 1.)
  2530. */
  2531. #define CSR_ICOUNT_ACTION_MASK (0x3FU)
  2532. #define CSR_ICOUNT_ACTION_SHIFT (0U)
  2533. #define CSR_ICOUNT_ACTION_SET(x) (((uint32_t)(x) << CSR_ICOUNT_ACTION_SHIFT) & CSR_ICOUNT_ACTION_MASK)
  2534. #define CSR_ICOUNT_ACTION_GET(x) (((uint32_t)(x) & CSR_ICOUNT_ACTION_MASK) >> CSR_ICOUNT_ACTION_SHIFT)
  2535. /* Bitfield definition for register: ITRIGGER */
  2536. /*
  2537. * TYPE (RW)
  2538. *
  2539. * The selected trigger is an interrupt trigger.
  2540. */
  2541. #define CSR_ITRIGGER_TYPE_MASK (0xF0000000UL)
  2542. #define CSR_ITRIGGER_TYPE_SHIFT (28U)
  2543. #define CSR_ITRIGGER_TYPE_SET(x) (((uint32_t)(x) << CSR_ITRIGGER_TYPE_SHIFT) & CSR_ITRIGGER_TYPE_MASK)
  2544. #define CSR_ITRIGGER_TYPE_GET(x) (((uint32_t)(x) & CSR_ITRIGGER_TYPE_MASK) >> CSR_ITRIGGER_TYPE_SHIFT)
  2545. /*
  2546. * DMODE (RW)
  2547. *
  2548. * Setting this field to indicate the trigger is used by Debug Mode.
  2549. * 0:Both Debug-mode and M-mode can write the currently selected trigger registers.
  2550. * 1:Only Debug Mode can write the currently selected trigger registers. Writes from M-mode is ignored.
  2551. */
  2552. #define CSR_ITRIGGER_DMODE_MASK (0x8000000UL)
  2553. #define CSR_ITRIGGER_DMODE_SHIFT (27U)
  2554. #define CSR_ITRIGGER_DMODE_SET(x) (((uint32_t)(x) << CSR_ITRIGGER_DMODE_SHIFT) & CSR_ITRIGGER_DMODE_MASK)
  2555. #define CSR_ITRIGGER_DMODE_GET(x) (((uint32_t)(x) & CSR_ITRIGGER_DMODE_MASK) >> CSR_ITRIGGER_DMODE_SHIFT)
  2556. /*
  2557. * M (RW)
  2558. *
  2559. * Setting this field to enable this trigger in M-mode.
  2560. */
  2561. #define CSR_ITRIGGER_M_MASK (0x200U)
  2562. #define CSR_ITRIGGER_M_SHIFT (9U)
  2563. #define CSR_ITRIGGER_M_SET(x) (((uint32_t)(x) << CSR_ITRIGGER_M_SHIFT) & CSR_ITRIGGER_M_MASK)
  2564. #define CSR_ITRIGGER_M_GET(x) (((uint32_t)(x) & CSR_ITRIGGER_M_MASK) >> CSR_ITRIGGER_M_SHIFT)
  2565. /*
  2566. * S (RW)
  2567. *
  2568. * Setting this field to enable this trigger in S-mode.
  2569. */
  2570. #define CSR_ITRIGGER_S_MASK (0x80U)
  2571. #define CSR_ITRIGGER_S_SHIFT (7U)
  2572. #define CSR_ITRIGGER_S_SET(x) (((uint32_t)(x) << CSR_ITRIGGER_S_SHIFT) & CSR_ITRIGGER_S_MASK)
  2573. #define CSR_ITRIGGER_S_GET(x) (((uint32_t)(x) & CSR_ITRIGGER_S_MASK) >> CSR_ITRIGGER_S_SHIFT)
  2574. /*
  2575. * U (RW)
  2576. *
  2577. * Setting this field to enable this trigger in U-mode.
  2578. */
  2579. #define CSR_ITRIGGER_U_MASK (0x40U)
  2580. #define CSR_ITRIGGER_U_SHIFT (6U)
  2581. #define CSR_ITRIGGER_U_SET(x) (((uint32_t)(x) << CSR_ITRIGGER_U_SHIFT) & CSR_ITRIGGER_U_MASK)
  2582. #define CSR_ITRIGGER_U_GET(x) (((uint32_t)(x) & CSR_ITRIGGER_U_MASK) >> CSR_ITRIGGER_U_SHIFT)
  2583. /*
  2584. * ACTION (RW)
  2585. *
  2586. * Setting this field to select what happens when this trigger matches.
  2587. * 0:Raise a breakpoint exception.
  2588. * 1:Enter Debug Mode. (Only supported when DMODE is 1.)
  2589. */
  2590. #define CSR_ITRIGGER_ACTION_MASK (0x3FU)
  2591. #define CSR_ITRIGGER_ACTION_SHIFT (0U)
  2592. #define CSR_ITRIGGER_ACTION_SET(x) (((uint32_t)(x) << CSR_ITRIGGER_ACTION_SHIFT) & CSR_ITRIGGER_ACTION_MASK)
  2593. #define CSR_ITRIGGER_ACTION_GET(x) (((uint32_t)(x) & CSR_ITRIGGER_ACTION_MASK) >> CSR_ITRIGGER_ACTION_SHIFT)
  2594. /* Bitfield definition for register: ETRIGGER */
  2595. /*
  2596. * TYPE (RW)
  2597. *
  2598. * The selected trigger is an exception trigger.
  2599. */
  2600. #define CSR_ETRIGGER_TYPE_MASK (0xF0000000UL)
  2601. #define CSR_ETRIGGER_TYPE_SHIFT (28U)
  2602. #define CSR_ETRIGGER_TYPE_SET(x) (((uint32_t)(x) << CSR_ETRIGGER_TYPE_SHIFT) & CSR_ETRIGGER_TYPE_MASK)
  2603. #define CSR_ETRIGGER_TYPE_GET(x) (((uint32_t)(x) & CSR_ETRIGGER_TYPE_MASK) >> CSR_ETRIGGER_TYPE_SHIFT)
  2604. /*
  2605. * DMODE (RW)
  2606. *
  2607. * Setting this field to indicate the trigger is used by Debug Mode.
  2608. * 0:Both Debug-mode and M-mode can write the currently selected trigger registers.
  2609. * 1:Only Debug Mode can write the currently selected trigger registers. Writes from M-mode is ignored.
  2610. */
  2611. #define CSR_ETRIGGER_DMODE_MASK (0x8000000UL)
  2612. #define CSR_ETRIGGER_DMODE_SHIFT (27U)
  2613. #define CSR_ETRIGGER_DMODE_SET(x) (((uint32_t)(x) << CSR_ETRIGGER_DMODE_SHIFT) & CSR_ETRIGGER_DMODE_MASK)
  2614. #define CSR_ETRIGGER_DMODE_GET(x) (((uint32_t)(x) & CSR_ETRIGGER_DMODE_MASK) >> CSR_ETRIGGER_DMODE_SHIFT)
  2615. /*
  2616. * NMI (RW)
  2617. *
  2618. * Setting this field to enable this trigger in non-maskable interrupts, regardless of the values of s, u, and m.
  2619. */
  2620. #define CSR_ETRIGGER_NMI_MASK (0x400U)
  2621. #define CSR_ETRIGGER_NMI_SHIFT (10U)
  2622. #define CSR_ETRIGGER_NMI_SET(x) (((uint32_t)(x) << CSR_ETRIGGER_NMI_SHIFT) & CSR_ETRIGGER_NMI_MASK)
  2623. #define CSR_ETRIGGER_NMI_GET(x) (((uint32_t)(x) & CSR_ETRIGGER_NMI_MASK) >> CSR_ETRIGGER_NMI_SHIFT)
  2624. /*
  2625. * M (RW)
  2626. *
  2627. * Setting this field to enable this trigger in M-mode.
  2628. */
  2629. #define CSR_ETRIGGER_M_MASK (0x200U)
  2630. #define CSR_ETRIGGER_M_SHIFT (9U)
  2631. #define CSR_ETRIGGER_M_SET(x) (((uint32_t)(x) << CSR_ETRIGGER_M_SHIFT) & CSR_ETRIGGER_M_MASK)
  2632. #define CSR_ETRIGGER_M_GET(x) (((uint32_t)(x) & CSR_ETRIGGER_M_MASK) >> CSR_ETRIGGER_M_SHIFT)
  2633. /*
  2634. * S (RW)
  2635. *
  2636. * Setting this field to enable this trigger in S-mode.
  2637. */
  2638. #define CSR_ETRIGGER_S_MASK (0x80U)
  2639. #define CSR_ETRIGGER_S_SHIFT (7U)
  2640. #define CSR_ETRIGGER_S_SET(x) (((uint32_t)(x) << CSR_ETRIGGER_S_SHIFT) & CSR_ETRIGGER_S_MASK)
  2641. #define CSR_ETRIGGER_S_GET(x) (((uint32_t)(x) & CSR_ETRIGGER_S_MASK) >> CSR_ETRIGGER_S_SHIFT)
  2642. /*
  2643. * U (RW)
  2644. *
  2645. * Setting this field to enable this trigger in U-mode.
  2646. */
  2647. #define CSR_ETRIGGER_U_MASK (0x40U)
  2648. #define CSR_ETRIGGER_U_SHIFT (6U)
  2649. #define CSR_ETRIGGER_U_SET(x) (((uint32_t)(x) << CSR_ETRIGGER_U_SHIFT) & CSR_ETRIGGER_U_MASK)
  2650. #define CSR_ETRIGGER_U_GET(x) (((uint32_t)(x) & CSR_ETRIGGER_U_MASK) >> CSR_ETRIGGER_U_SHIFT)
  2651. /*
  2652. * ACTION (RW)
  2653. *
  2654. * Setting this field to select what happens when this trigger matches.
  2655. * 0:Raise a breakpoint exception
  2656. * 1:Enter Debug Mode. (Only supported when DMODE is 1.)
  2657. */
  2658. #define CSR_ETRIGGER_ACTION_MASK (0x3FU)
  2659. #define CSR_ETRIGGER_ACTION_SHIFT (0U)
  2660. #define CSR_ETRIGGER_ACTION_SET(x) (((uint32_t)(x) << CSR_ETRIGGER_ACTION_SHIFT) & CSR_ETRIGGER_ACTION_MASK)
  2661. #define CSR_ETRIGGER_ACTION_GET(x) (((uint32_t)(x) & CSR_ETRIGGER_ACTION_MASK) >> CSR_ETRIGGER_ACTION_SHIFT)
  2662. /* Bitfield definition for register: TDATA2 */
  2663. /*
  2664. * DATA (RW)
  2665. *
  2666. * This register provides accesses to the tdata2 register of the currently selected trigger registers selected by the tselect register, and it holds trigger-specific data..
  2667. */
  2668. #define CSR_TDATA2_DATA_MASK (0xFFFFFFFFUL)
  2669. #define CSR_TDATA2_DATA_SHIFT (0U)
  2670. #define CSR_TDATA2_DATA_SET(x) (((uint32_t)(x) << CSR_TDATA2_DATA_SHIFT) & CSR_TDATA2_DATA_MASK)
  2671. #define CSR_TDATA2_DATA_GET(x) (((uint32_t)(x) & CSR_TDATA2_DATA_MASK) >> CSR_TDATA2_DATA_SHIFT)
  2672. /* Bitfield definition for register: TDATA3 */
  2673. /*
  2674. * DATA (RW)
  2675. *
  2676. * This register provides accesses to the tdata3 register of the currently selected trigger registers selected by the tselect register, and it holds trigger-specific data..
  2677. */
  2678. #define CSR_TDATA3_DATA_MASK (0xFFFFFFFFUL)
  2679. #define CSR_TDATA3_DATA_SHIFT (0U)
  2680. #define CSR_TDATA3_DATA_SET(x) (((uint32_t)(x) << CSR_TDATA3_DATA_SHIFT) & CSR_TDATA3_DATA_MASK)
  2681. #define CSR_TDATA3_DATA_GET(x) (((uint32_t)(x) & CSR_TDATA3_DATA_MASK) >> CSR_TDATA3_DATA_SHIFT)
  2682. /* Bitfield definition for register: TEXTRA */
  2683. /*
  2684. * MVALUE (RW)
  2685. *
  2686. * Data used together with MSELECT.
  2687. */
  2688. #define CSR_TEXTRA_MVALUE_MASK (0xFC000000UL)
  2689. #define CSR_TEXTRA_MVALUE_SHIFT (26U)
  2690. #define CSR_TEXTRA_MVALUE_SET(x) (((uint32_t)(x) << CSR_TEXTRA_MVALUE_SHIFT) & CSR_TEXTRA_MVALUE_MASK)
  2691. #define CSR_TEXTRA_MVALUE_GET(x) (((uint32_t)(x) & CSR_TEXTRA_MVALUE_MASK) >> CSR_TEXTRA_MVALUE_SHIFT)
  2692. /*
  2693. * MSELECT (RW)
  2694. *
  2695. * 0:Ignore MVALUE.
  2696. * 1:This trigger will only match if the lower bits of mcontext equal MVALUE.
  2697. */
  2698. #define CSR_TEXTRA_MSELECT_MASK (0x2000000UL)
  2699. #define CSR_TEXTRA_MSELECT_SHIFT (25U)
  2700. #define CSR_TEXTRA_MSELECT_SET(x) (((uint32_t)(x) << CSR_TEXTRA_MSELECT_SHIFT) & CSR_TEXTRA_MSELECT_MASK)
  2701. #define CSR_TEXTRA_MSELECT_GET(x) (((uint32_t)(x) & CSR_TEXTRA_MSELECT_MASK) >> CSR_TEXTRA_MSELECT_SHIFT)
  2702. /*
  2703. * SVALUE (RW)
  2704. *
  2705. * Data used together with SSELECT.
  2706. */
  2707. #define CSR_TEXTRA_SVALUE_MASK (0x7FCU)
  2708. #define CSR_TEXTRA_SVALUE_SHIFT (2U)
  2709. #define CSR_TEXTRA_SVALUE_SET(x) (((uint32_t)(x) << CSR_TEXTRA_SVALUE_SHIFT) & CSR_TEXTRA_SVALUE_MASK)
  2710. #define CSR_TEXTRA_SVALUE_GET(x) (((uint32_t)(x) & CSR_TEXTRA_SVALUE_MASK) >> CSR_TEXTRA_SVALUE_SHIFT)
  2711. /*
  2712. * SSELECT (RW)
  2713. *
  2714. * 0:Ignore MVALUE
  2715. * 1:This trigger will only match if the lower bits of scontext equal SVALUE
  2716. * 2This trigger will only match if satp.ASID equals SVALUE.
  2717. */
  2718. #define CSR_TEXTRA_SSELECT_MASK (0x3U)
  2719. #define CSR_TEXTRA_SSELECT_SHIFT (0U)
  2720. #define CSR_TEXTRA_SSELECT_SET(x) (((uint32_t)(x) << CSR_TEXTRA_SSELECT_SHIFT) & CSR_TEXTRA_SSELECT_MASK)
  2721. #define CSR_TEXTRA_SSELECT_GET(x) (((uint32_t)(x) & CSR_TEXTRA_SSELECT_MASK) >> CSR_TEXTRA_SSELECT_SHIFT)
  2722. /* Bitfield definition for register: TINFO */
  2723. /*
  2724. * INFO (RO)
  2725. *
  2726. * One bit for each possible type in tdata1. Bit N corresponds to type N. If the bit is set, then that
  2727. * type is supported by the currently selected trigger. If the currently selected trigger does not exist, this field contains 1.
  2728. * 0:When this bit is set, there is no trigger at this tselect
  2729. * 1:Reserved and hardwired to 0.
  2730. * 2:When this bit is set, the selected trigger supports type of address/data match trigger
  2731. * 3:When this bit is set, the selected trigger supports type of instruction count trigger.
  2732. * 4:When this bit is set, the selected trigger supports type of interrupt trigger
  2733. * 5:When this bit is set, the selected trigger supports type of exception trigger
  2734. * 15:When this bit is set, the selected trigger exists (so enumeration shouldn’t terminate), but is not currently available.
  2735. * Others:Reserved for future use.
  2736. */
  2737. #define CSR_TINFO_INFO_MASK (0xFFFFU)
  2738. #define CSR_TINFO_INFO_SHIFT (0U)
  2739. #define CSR_TINFO_INFO_GET(x) (((uint32_t)(x) & CSR_TINFO_INFO_MASK) >> CSR_TINFO_INFO_SHIFT)
  2740. /* Bitfield definition for register: TCONTROL */
  2741. /*
  2742. * MPTE (RW)
  2743. *
  2744. * M-mode previous trigger enable field. When a trap into M-mode is taken, MPTE is set to the value of MTE.
  2745. */
  2746. #define CSR_TCONTROL_MPTE_MASK (0x80U)
  2747. #define CSR_TCONTROL_MPTE_SHIFT (7U)
  2748. #define CSR_TCONTROL_MPTE_SET(x) (((uint32_t)(x) << CSR_TCONTROL_MPTE_SHIFT) & CSR_TCONTROL_MPTE_MASK)
  2749. #define CSR_TCONTROL_MPTE_GET(x) (((uint32_t)(x) & CSR_TCONTROL_MPTE_MASK) >> CSR_TCONTROL_MPTE_SHIFT)
  2750. /*
  2751. * MTE (RW)
  2752. *
  2753. * M-mode trigger enable field. When a trap into M-mode is taken, MTE is set to 0. When the MRET instruction is executed, MTE is set to the value of MPTE.
  2754. * 0:Triggers do not match/fire while the hart is in M-mode.
  2755. * 1:Triggers do match/fire while the hart is in M-mode.
  2756. */
  2757. #define CSR_TCONTROL_MTE_MASK (0x8U)
  2758. #define CSR_TCONTROL_MTE_SHIFT (3U)
  2759. #define CSR_TCONTROL_MTE_SET(x) (((uint32_t)(x) << CSR_TCONTROL_MTE_SHIFT) & CSR_TCONTROL_MTE_MASK)
  2760. #define CSR_TCONTROL_MTE_GET(x) (((uint32_t)(x) & CSR_TCONTROL_MTE_MASK) >> CSR_TCONTROL_MTE_SHIFT)
  2761. /* Bitfield definition for register: MCONTEXT */
  2762. /*
  2763. * MCONTEXT (RW)
  2764. *
  2765. * Machine mode software can write a context number to this register, which can be used to set triggers that only fire in that specific context.
  2766. */
  2767. #define CSR_MCONTEXT_MCONTEXT_MASK (0x3FU)
  2768. #define CSR_MCONTEXT_MCONTEXT_SHIFT (0U)
  2769. #define CSR_MCONTEXT_MCONTEXT_SET(x) (((uint32_t)(x) << CSR_MCONTEXT_MCONTEXT_SHIFT) & CSR_MCONTEXT_MCONTEXT_MASK)
  2770. #define CSR_MCONTEXT_MCONTEXT_GET(x) (((uint32_t)(x) & CSR_MCONTEXT_MCONTEXT_MASK) >> CSR_MCONTEXT_MCONTEXT_SHIFT)
  2771. /* Bitfield definition for register: SCONTEXT */
  2772. /*
  2773. * SCONTEXT (RW)
  2774. *
  2775. * Machine mode software can write a context number to this register, which can be used to set triggers that only fire in that specific context.
  2776. */
  2777. #define CSR_SCONTEXT_SCONTEXT_MASK (0x1FFU)
  2778. #define CSR_SCONTEXT_SCONTEXT_SHIFT (0U)
  2779. #define CSR_SCONTEXT_SCONTEXT_SET(x) (((uint32_t)(x) << CSR_SCONTEXT_SCONTEXT_SHIFT) & CSR_SCONTEXT_SCONTEXT_MASK)
  2780. #define CSR_SCONTEXT_SCONTEXT_GET(x) (((uint32_t)(x) & CSR_SCONTEXT_SCONTEXT_MASK) >> CSR_SCONTEXT_SCONTEXT_SHIFT)
  2781. /* Bitfield definition for register: DCSR */
  2782. /*
  2783. * XDEBUGVER (RO)
  2784. *
  2785. * Version of the external debugger. 0 indicates that no external debugger exists and 4 indicates that the external debugger conforms to the RISC-V External Debug Support (TD003) V0.13
  2786. */
  2787. #define CSR_DCSR_XDEBUGVER_MASK (0xF0000000UL)
  2788. #define CSR_DCSR_XDEBUGVER_SHIFT (28U)
  2789. #define CSR_DCSR_XDEBUGVER_GET(x) (((uint32_t)(x) & CSR_DCSR_XDEBUGVER_MASK) >> CSR_DCSR_XDEBUGVER_SHIFT)
  2790. /*
  2791. * EBREAKM (RW)
  2792. *
  2793. * This bit controls the behavior of EBREAK instructions in Machine Mode
  2794. * 0:Generate a regular breakpoint exception
  2795. * 1:Enter Debug Mode
  2796. */
  2797. #define CSR_DCSR_EBREAKM_MASK (0x8000U)
  2798. #define CSR_DCSR_EBREAKM_SHIFT (15U)
  2799. #define CSR_DCSR_EBREAKM_SET(x) (((uint32_t)(x) << CSR_DCSR_EBREAKM_SHIFT) & CSR_DCSR_EBREAKM_MASK)
  2800. #define CSR_DCSR_EBREAKM_GET(x) (((uint32_t)(x) & CSR_DCSR_EBREAKM_MASK) >> CSR_DCSR_EBREAKM_SHIFT)
  2801. /*
  2802. * EBREAKS (RW)
  2803. *
  2804. * This bit controls the behavior of EBREAK instructions in Supervisor Mode.
  2805. * 0:Generate a regular breakpoint exception
  2806. * 1:Enter Debug Mode
  2807. */
  2808. #define CSR_DCSR_EBREAKS_MASK (0x2000U)
  2809. #define CSR_DCSR_EBREAKS_SHIFT (13U)
  2810. #define CSR_DCSR_EBREAKS_SET(x) (((uint32_t)(x) << CSR_DCSR_EBREAKS_SHIFT) & CSR_DCSR_EBREAKS_MASK)
  2811. #define CSR_DCSR_EBREAKS_GET(x) (((uint32_t)(x) & CSR_DCSR_EBREAKS_MASK) >> CSR_DCSR_EBREAKS_SHIFT)
  2812. /*
  2813. * EBREAKU (RW)
  2814. *
  2815. * This bit controls the behavior of EBREAK instructions in User/Application Mode
  2816. * 0:Generate a regular breakpoint exception
  2817. * 1:Enter Debug Mode
  2818. */
  2819. #define CSR_DCSR_EBREAKU_MASK (0x1000U)
  2820. #define CSR_DCSR_EBREAKU_SHIFT (12U)
  2821. #define CSR_DCSR_EBREAKU_SET(x) (((uint32_t)(x) << CSR_DCSR_EBREAKU_SHIFT) & CSR_DCSR_EBREAKU_MASK)
  2822. #define CSR_DCSR_EBREAKU_GET(x) (((uint32_t)(x) & CSR_DCSR_EBREAKU_MASK) >> CSR_DCSR_EBREAKU_SHIFT)
  2823. /*
  2824. * STEPIE (RW)
  2825. *
  2826. * This bit controls whether interrupts are enabled during single stepping
  2827. * 0:Disable interrupts during single stepping
  2828. * 1:Allow interrupts in single stepping
  2829. */
  2830. #define CSR_DCSR_STEPIE_MASK (0x800U)
  2831. #define CSR_DCSR_STEPIE_SHIFT (11U)
  2832. #define CSR_DCSR_STEPIE_SET(x) (((uint32_t)(x) << CSR_DCSR_STEPIE_SHIFT) & CSR_DCSR_STEPIE_MASK)
  2833. #define CSR_DCSR_STEPIE_GET(x) (((uint32_t)(x) & CSR_DCSR_STEPIE_MASK) >> CSR_DCSR_STEPIE_SHIFT)
  2834. /*
  2835. * STOPCOUNT (RW)
  2836. *
  2837. * This bit controls whether performance counters are stopped in Debug Mode.
  2838. * 0:Do not stop counters in Debug Mode
  2839. * 1:Stop counters in Debug Mode
  2840. */
  2841. #define CSR_DCSR_STOPCOUNT_MASK (0x400U)
  2842. #define CSR_DCSR_STOPCOUNT_SHIFT (10U)
  2843. #define CSR_DCSR_STOPCOUNT_SET(x) (((uint32_t)(x) << CSR_DCSR_STOPCOUNT_SHIFT) & CSR_DCSR_STOPCOUNT_MASK)
  2844. #define CSR_DCSR_STOPCOUNT_GET(x) (((uint32_t)(x) & CSR_DCSR_STOPCOUNT_MASK) >> CSR_DCSR_STOPCOUNT_SHIFT)
  2845. /*
  2846. * STOPTIME (RW)
  2847. *
  2848. * This bit controls whether timers are stopped in Debug Mode. The processor only drives its stoptime output pin to 1 if it is in Debug Mode and this bit is set. Integration effort is required to make timers in the platform observe this pin to really stop them.
  2849. * 0:Do not stop timers in Debug Mode
  2850. * 1:Stop timers in Debug Mode
  2851. */
  2852. #define CSR_DCSR_STOPTIME_MASK (0x200U)
  2853. #define CSR_DCSR_STOPTIME_SHIFT (9U)
  2854. #define CSR_DCSR_STOPTIME_SET(x) (((uint32_t)(x) << CSR_DCSR_STOPTIME_SHIFT) & CSR_DCSR_STOPTIME_MASK)
  2855. #define CSR_DCSR_STOPTIME_GET(x) (((uint32_t)(x) & CSR_DCSR_STOPTIME_MASK) >> CSR_DCSR_STOPTIME_SHIFT)
  2856. /*
  2857. * CAUSE (RO)
  2858. *
  2859. * Reason why Debug Mode was entered. When there are multiple reasons to enter Debug Mode, the priority to determine the CAUSE value will be: trigger module > EBREAK > halt-on-reset > halt request > single step. Halt requests are requests issued by the external debugger
  2860. * 0:Reserved
  2861. * 1:EBREAK
  2862. * 2:Trigger module
  2863. * 3:Halt request
  2864. * 4:Single step
  2865. * 5:Halt-on-reset
  2866. * 6-7:Reserved
  2867. */
  2868. #define CSR_DCSR_CAUSE_MASK (0x1C0U)
  2869. #define CSR_DCSR_CAUSE_SHIFT (6U)
  2870. #define CSR_DCSR_CAUSE_GET(x) (((uint32_t)(x) & CSR_DCSR_CAUSE_MASK) >> CSR_DCSR_CAUSE_SHIFT)
  2871. /*
  2872. * MPRVEN (RW)
  2873. *
  2874. * This bit controls whether mstatus.MPRV takes effect in Debug Mode.
  2875. * 0:MPRV in mstatus is ignored in Debug Mode.
  2876. * 1:MPRV in mstatus takes effect in Debug Mode.
  2877. */
  2878. #define CSR_DCSR_MPRVEN_MASK (0x10U)
  2879. #define CSR_DCSR_MPRVEN_SHIFT (4U)
  2880. #define CSR_DCSR_MPRVEN_SET(x) (((uint32_t)(x) << CSR_DCSR_MPRVEN_SHIFT) & CSR_DCSR_MPRVEN_MASK)
  2881. #define CSR_DCSR_MPRVEN_GET(x) (((uint32_t)(x) & CSR_DCSR_MPRVEN_MASK) >> CSR_DCSR_MPRVEN_SHIFT)
  2882. /*
  2883. * NMIP (RO)
  2884. *
  2885. * When this bit is set, there is a Non-Maskable-Interrupt (NMI) pending for the hart. Since an NMI can indicate a hardware error condition, reliable debugging may no longer be possible once this bit becomes set.
  2886. */
  2887. #define CSR_DCSR_NMIP_MASK (0x8U)
  2888. #define CSR_DCSR_NMIP_SHIFT (3U)
  2889. #define CSR_DCSR_NMIP_GET(x) (((uint32_t)(x) & CSR_DCSR_NMIP_MASK) >> CSR_DCSR_NMIP_SHIFT)
  2890. /*
  2891. * STEP (RW)
  2892. *
  2893. * This bit controls whether non-Debug Mode instruction execution is in the single step mode. When set, the hart returns to Debug Mode after a single instruction execution. If the instruction does not complete due to an exception, the hart will immediately enter Debug Mode before executing the trap handler, with appropriate exception registers set.
  2894. * 0:Single Step Mode is off
  2895. * 1:Single Step Mode is on
  2896. */
  2897. #define CSR_DCSR_STEP_MASK (0x4U)
  2898. #define CSR_DCSR_STEP_SHIFT (2U)
  2899. #define CSR_DCSR_STEP_SET(x) (((uint32_t)(x) << CSR_DCSR_STEP_SHIFT) & CSR_DCSR_STEP_MASK)
  2900. #define CSR_DCSR_STEP_GET(x) (((uint32_t)(x) & CSR_DCSR_STEP_MASK) >> CSR_DCSR_STEP_SHIFT)
  2901. /*
  2902. * PRV (RW)
  2903. *
  2904. * The privilege level that the hart was operating in when Debug Mode was entered. The external debugger can modify this value to change the hart’s privilege level when exiting Debug Mode.
  2905. * 0:User/Application
  2906. * 1:Supervisor
  2907. * 2:Reserved
  2908. * 3:Machine
  2909. */
  2910. #define CSR_DCSR_PRV_MASK (0x3U)
  2911. #define CSR_DCSR_PRV_SHIFT (0U)
  2912. #define CSR_DCSR_PRV_SET(x) (((uint32_t)(x) << CSR_DCSR_PRV_SHIFT) & CSR_DCSR_PRV_MASK)
  2913. #define CSR_DCSR_PRV_GET(x) (((uint32_t)(x) & CSR_DCSR_PRV_MASK) >> CSR_DCSR_PRV_SHIFT)
  2914. /* Bitfield definition for register: DPC */
  2915. /*
  2916. * DPC (RW)
  2917. *
  2918. * Debug Program Counter. Bit 0 is hardwired to 0.
  2919. */
  2920. #define CSR_DPC_DPC_MASK (0xFFFFFFFFUL)
  2921. #define CSR_DPC_DPC_SHIFT (0U)
  2922. #define CSR_DPC_DPC_SET(x) (((uint32_t)(x) << CSR_DPC_DPC_SHIFT) & CSR_DPC_DPC_MASK)
  2923. #define CSR_DPC_DPC_GET(x) (((uint32_t)(x) & CSR_DPC_DPC_MASK) >> CSR_DPC_DPC_SHIFT)
  2924. /* Bitfield definition for register: DSCRATCH0 */
  2925. /*
  2926. * DSCRATCH (RO)
  2927. *
  2928. * A scratch register that is reserved for use by Debug Module.
  2929. */
  2930. #define CSR_DSCRATCH0_DSCRATCH_MASK (0xFFFFFFFFUL)
  2931. #define CSR_DSCRATCH0_DSCRATCH_SHIFT (0U)
  2932. #define CSR_DSCRATCH0_DSCRATCH_GET(x) (((uint32_t)(x) & CSR_DSCRATCH0_DSCRATCH_MASK) >> CSR_DSCRATCH0_DSCRATCH_SHIFT)
  2933. /* Bitfield definition for register: DSCRATCH1 */
  2934. /*
  2935. * DSCRATCH (RO)
  2936. *
  2937. * A scratch register that is reserved for use by Debug Module.
  2938. */
  2939. #define CSR_DSCRATCH1_DSCRATCH_MASK (0xFFFFFFFFUL)
  2940. #define CSR_DSCRATCH1_DSCRATCH_SHIFT (0U)
  2941. #define CSR_DSCRATCH1_DSCRATCH_GET(x) (((uint32_t)(x) & CSR_DSCRATCH1_DSCRATCH_MASK) >> CSR_DSCRATCH1_DSCRATCH_SHIFT)
  2942. /* Bitfield definition for register: MCYCLE */
  2943. /*
  2944. * COUNTER (RW)
  2945. *
  2946. * the lower 32 bits of Machine Cycle Counter
  2947. */
  2948. #define CSR_MCYCLE_COUNTER_MASK (0xFFFFFFFFUL)
  2949. #define CSR_MCYCLE_COUNTER_SHIFT (0U)
  2950. #define CSR_MCYCLE_COUNTER_SET(x) (((uint32_t)(x) << CSR_MCYCLE_COUNTER_SHIFT) & CSR_MCYCLE_COUNTER_MASK)
  2951. #define CSR_MCYCLE_COUNTER_GET(x) (((uint32_t)(x) & CSR_MCYCLE_COUNTER_MASK) >> CSR_MCYCLE_COUNTER_SHIFT)
  2952. /* Bitfield definition for register: MINSTRET */
  2953. /*
  2954. * COUNTER (RW)
  2955. *
  2956. * the lower 32 bits of Machine Instruction-Retired Counter
  2957. */
  2958. #define CSR_MINSTRET_COUNTER_MASK (0xFFFFFFFFUL)
  2959. #define CSR_MINSTRET_COUNTER_SHIFT (0U)
  2960. #define CSR_MINSTRET_COUNTER_SET(x) (((uint32_t)(x) << CSR_MINSTRET_COUNTER_SHIFT) & CSR_MINSTRET_COUNTER_MASK)
  2961. #define CSR_MINSTRET_COUNTER_GET(x) (((uint32_t)(x) & CSR_MINSTRET_COUNTER_MASK) >> CSR_MINSTRET_COUNTER_SHIFT)
  2962. /* Bitfield definition for register: MHPMCOUNTER3 */
  2963. /*
  2964. * COUNTER (RW)
  2965. *
  2966. * count the num- ber of events selected by mhpmevent3
  2967. */
  2968. #define CSR_MHPMCOUNTER3_COUNTER_MASK (0xFFFFFFFFUL)
  2969. #define CSR_MHPMCOUNTER3_COUNTER_SHIFT (0U)
  2970. #define CSR_MHPMCOUNTER3_COUNTER_SET(x) (((uint32_t)(x) << CSR_MHPMCOUNTER3_COUNTER_SHIFT) & CSR_MHPMCOUNTER3_COUNTER_MASK)
  2971. #define CSR_MHPMCOUNTER3_COUNTER_GET(x) (((uint32_t)(x) & CSR_MHPMCOUNTER3_COUNTER_MASK) >> CSR_MHPMCOUNTER3_COUNTER_SHIFT)
  2972. /* Bitfield definition for register: MHPMCOUNTER4 */
  2973. /*
  2974. * COUNTER (RW)
  2975. *
  2976. * count the num- ber of events selected by mhpmevent4
  2977. */
  2978. #define CSR_MHPMCOUNTER4_COUNTER_MASK (0xFFFFFFFFUL)
  2979. #define CSR_MHPMCOUNTER4_COUNTER_SHIFT (0U)
  2980. #define CSR_MHPMCOUNTER4_COUNTER_SET(x) (((uint32_t)(x) << CSR_MHPMCOUNTER4_COUNTER_SHIFT) & CSR_MHPMCOUNTER4_COUNTER_MASK)
  2981. #define CSR_MHPMCOUNTER4_COUNTER_GET(x) (((uint32_t)(x) & CSR_MHPMCOUNTER4_COUNTER_MASK) >> CSR_MHPMCOUNTER4_COUNTER_SHIFT)
  2982. /* Bitfield definition for register: MHPMCOUNTER5 */
  2983. /*
  2984. * COUNTER (RW)
  2985. *
  2986. * count the num- ber of events selected by mhpmevent5
  2987. */
  2988. #define CSR_MHPMCOUNTER5_COUNTER_MASK (0xFFFFFFFFUL)
  2989. #define CSR_MHPMCOUNTER5_COUNTER_SHIFT (0U)
  2990. #define CSR_MHPMCOUNTER5_COUNTER_SET(x) (((uint32_t)(x) << CSR_MHPMCOUNTER5_COUNTER_SHIFT) & CSR_MHPMCOUNTER5_COUNTER_MASK)
  2991. #define CSR_MHPMCOUNTER5_COUNTER_GET(x) (((uint32_t)(x) & CSR_MHPMCOUNTER5_COUNTER_MASK) >> CSR_MHPMCOUNTER5_COUNTER_SHIFT)
  2992. /* Bitfield definition for register: MHPMCOUNTER6 */
  2993. /*
  2994. * COUNTER (RW)
  2995. *
  2996. * count the num- ber of events selected by mhpmevent6
  2997. */
  2998. #define CSR_MHPMCOUNTER6_COUNTER_MASK (0xFFFFFFFFUL)
  2999. #define CSR_MHPMCOUNTER6_COUNTER_SHIFT (0U)
  3000. #define CSR_MHPMCOUNTER6_COUNTER_SET(x) (((uint32_t)(x) << CSR_MHPMCOUNTER6_COUNTER_SHIFT) & CSR_MHPMCOUNTER6_COUNTER_MASK)
  3001. #define CSR_MHPMCOUNTER6_COUNTER_GET(x) (((uint32_t)(x) & CSR_MHPMCOUNTER6_COUNTER_MASK) >> CSR_MHPMCOUNTER6_COUNTER_SHIFT)
  3002. /* Bitfield definition for register: MCYCLEH */
  3003. /*
  3004. * COUNTER (RW)
  3005. *
  3006. * the higher 32 bits of Machine Cycle Counter
  3007. */
  3008. #define CSR_MCYCLEH_COUNTER_MASK (0xFFFFFFFFUL)
  3009. #define CSR_MCYCLEH_COUNTER_SHIFT (0U)
  3010. #define CSR_MCYCLEH_COUNTER_SET(x) (((uint32_t)(x) << CSR_MCYCLEH_COUNTER_SHIFT) & CSR_MCYCLEH_COUNTER_MASK)
  3011. #define CSR_MCYCLEH_COUNTER_GET(x) (((uint32_t)(x) & CSR_MCYCLEH_COUNTER_MASK) >> CSR_MCYCLEH_COUNTER_SHIFT)
  3012. /* Bitfield definition for register: MINSTRETH */
  3013. /*
  3014. * COUNTER (RW)
  3015. *
  3016. * the higher 32 bits of Machine Instruction-Retired Counter
  3017. */
  3018. #define CSR_MINSTRETH_COUNTER_MASK (0xFFFFFFFFUL)
  3019. #define CSR_MINSTRETH_COUNTER_SHIFT (0U)
  3020. #define CSR_MINSTRETH_COUNTER_SET(x) (((uint32_t)(x) << CSR_MINSTRETH_COUNTER_SHIFT) & CSR_MINSTRETH_COUNTER_MASK)
  3021. #define CSR_MINSTRETH_COUNTER_GET(x) (((uint32_t)(x) & CSR_MINSTRETH_COUNTER_MASK) >> CSR_MINSTRETH_COUNTER_SHIFT)
  3022. /* Bitfield definition for register: MHPMCOUNTER3H */
  3023. /*
  3024. * COUNTER (RW)
  3025. *
  3026. * count the num- ber of events selected by mhpmevent3
  3027. */
  3028. #define CSR_MHPMCOUNTER3H_COUNTER_MASK (0xFFFFFFFFUL)
  3029. #define CSR_MHPMCOUNTER3H_COUNTER_SHIFT (0U)
  3030. #define CSR_MHPMCOUNTER3H_COUNTER_SET(x) (((uint32_t)(x) << CSR_MHPMCOUNTER3H_COUNTER_SHIFT) & CSR_MHPMCOUNTER3H_COUNTER_MASK)
  3031. #define CSR_MHPMCOUNTER3H_COUNTER_GET(x) (((uint32_t)(x) & CSR_MHPMCOUNTER3H_COUNTER_MASK) >> CSR_MHPMCOUNTER3H_COUNTER_SHIFT)
  3032. /* Bitfield definition for register: MHPMCOUNTER4H */
  3033. /*
  3034. * COUNTER (RW)
  3035. *
  3036. * count the num- ber of events selected by mhpmevent4
  3037. */
  3038. #define CSR_MHPMCOUNTER4H_COUNTER_MASK (0xFFFFFFFFUL)
  3039. #define CSR_MHPMCOUNTER4H_COUNTER_SHIFT (0U)
  3040. #define CSR_MHPMCOUNTER4H_COUNTER_SET(x) (((uint32_t)(x) << CSR_MHPMCOUNTER4H_COUNTER_SHIFT) & CSR_MHPMCOUNTER4H_COUNTER_MASK)
  3041. #define CSR_MHPMCOUNTER4H_COUNTER_GET(x) (((uint32_t)(x) & CSR_MHPMCOUNTER4H_COUNTER_MASK) >> CSR_MHPMCOUNTER4H_COUNTER_SHIFT)
  3042. /* Bitfield definition for register: MHPMCOUNTER5H */
  3043. /*
  3044. * COUNTER (RW)
  3045. *
  3046. * count the num- ber of events selected by mhpmevent5
  3047. */
  3048. #define CSR_MHPMCOUNTER5H_COUNTER_MASK (0xFFFFFFFFUL)
  3049. #define CSR_MHPMCOUNTER5H_COUNTER_SHIFT (0U)
  3050. #define CSR_MHPMCOUNTER5H_COUNTER_SET(x) (((uint32_t)(x) << CSR_MHPMCOUNTER5H_COUNTER_SHIFT) & CSR_MHPMCOUNTER5H_COUNTER_MASK)
  3051. #define CSR_MHPMCOUNTER5H_COUNTER_GET(x) (((uint32_t)(x) & CSR_MHPMCOUNTER5H_COUNTER_MASK) >> CSR_MHPMCOUNTER5H_COUNTER_SHIFT)
  3052. /* Bitfield definition for register: MHPMCOUNTER6H */
  3053. /*
  3054. * COUNTER (RW)
  3055. *
  3056. * count the num- ber of events selected by mhpmevent6
  3057. */
  3058. #define CSR_MHPMCOUNTER6H_COUNTER_MASK (0xFFFFFFFFUL)
  3059. #define CSR_MHPMCOUNTER6H_COUNTER_SHIFT (0U)
  3060. #define CSR_MHPMCOUNTER6H_COUNTER_SET(x) (((uint32_t)(x) << CSR_MHPMCOUNTER6H_COUNTER_SHIFT) & CSR_MHPMCOUNTER6H_COUNTER_MASK)
  3061. #define CSR_MHPMCOUNTER6H_COUNTER_GET(x) (((uint32_t)(x) & CSR_MHPMCOUNTER6H_COUNTER_MASK) >> CSR_MHPMCOUNTER6H_COUNTER_SHIFT)
  3062. /* Bitfield definition for register: PMACFG0 */
  3063. /*
  3064. * PMA3CFG (RW)
  3065. *
  3066. * See PMACFG Table
  3067. */
  3068. #define CSR_PMACFG0_PMA3CFG_MASK (0xFF000000UL)
  3069. #define CSR_PMACFG0_PMA3CFG_SHIFT (24U)
  3070. #define CSR_PMACFG0_PMA3CFG_SET(x) (((uint32_t)(x) << CSR_PMACFG0_PMA3CFG_SHIFT) & CSR_PMACFG0_PMA3CFG_MASK)
  3071. #define CSR_PMACFG0_PMA3CFG_GET(x) (((uint32_t)(x) & CSR_PMACFG0_PMA3CFG_MASK) >> CSR_PMACFG0_PMA3CFG_SHIFT)
  3072. /*
  3073. * PMA2CFG (RW)
  3074. *
  3075. * See PMACFG Table
  3076. */
  3077. #define CSR_PMACFG0_PMA2CFG_MASK (0xFF0000UL)
  3078. #define CSR_PMACFG0_PMA2CFG_SHIFT (16U)
  3079. #define CSR_PMACFG0_PMA2CFG_SET(x) (((uint32_t)(x) << CSR_PMACFG0_PMA2CFG_SHIFT) & CSR_PMACFG0_PMA2CFG_MASK)
  3080. #define CSR_PMACFG0_PMA2CFG_GET(x) (((uint32_t)(x) & CSR_PMACFG0_PMA2CFG_MASK) >> CSR_PMACFG0_PMA2CFG_SHIFT)
  3081. /*
  3082. * PMA1CFG (RW)
  3083. *
  3084. * See PMACFG Table
  3085. */
  3086. #define CSR_PMACFG0_PMA1CFG_MASK (0xFF00U)
  3087. #define CSR_PMACFG0_PMA1CFG_SHIFT (8U)
  3088. #define CSR_PMACFG0_PMA1CFG_SET(x) (((uint32_t)(x) << CSR_PMACFG0_PMA1CFG_SHIFT) & CSR_PMACFG0_PMA1CFG_MASK)
  3089. #define CSR_PMACFG0_PMA1CFG_GET(x) (((uint32_t)(x) & CSR_PMACFG0_PMA1CFG_MASK) >> CSR_PMACFG0_PMA1CFG_SHIFT)
  3090. /*
  3091. * PMA0CFG (RW)
  3092. *
  3093. * See PMACFG Table
  3094. */
  3095. #define CSR_PMACFG0_PMA0CFG_MASK (0xFFU)
  3096. #define CSR_PMACFG0_PMA0CFG_SHIFT (0U)
  3097. #define CSR_PMACFG0_PMA0CFG_SET(x) (((uint32_t)(x) << CSR_PMACFG0_PMA0CFG_SHIFT) & CSR_PMACFG0_PMA0CFG_MASK)
  3098. #define CSR_PMACFG0_PMA0CFG_GET(x) (((uint32_t)(x) & CSR_PMACFG0_PMA0CFG_MASK) >> CSR_PMACFG0_PMA0CFG_SHIFT)
  3099. /* Bitfield definition for register: PMACFG1 */
  3100. /*
  3101. * PMA7CFG (RW)
  3102. *
  3103. * See PMACFG Table
  3104. */
  3105. #define CSR_PMACFG1_PMA7CFG_MASK (0xFF000000UL)
  3106. #define CSR_PMACFG1_PMA7CFG_SHIFT (24U)
  3107. #define CSR_PMACFG1_PMA7CFG_SET(x) (((uint32_t)(x) << CSR_PMACFG1_PMA7CFG_SHIFT) & CSR_PMACFG1_PMA7CFG_MASK)
  3108. #define CSR_PMACFG1_PMA7CFG_GET(x) (((uint32_t)(x) & CSR_PMACFG1_PMA7CFG_MASK) >> CSR_PMACFG1_PMA7CFG_SHIFT)
  3109. /*
  3110. * PMA6CFG (RW)
  3111. *
  3112. * See PMACFG Table
  3113. */
  3114. #define CSR_PMACFG1_PMA6CFG_MASK (0xFF0000UL)
  3115. #define CSR_PMACFG1_PMA6CFG_SHIFT (16U)
  3116. #define CSR_PMACFG1_PMA6CFG_SET(x) (((uint32_t)(x) << CSR_PMACFG1_PMA6CFG_SHIFT) & CSR_PMACFG1_PMA6CFG_MASK)
  3117. #define CSR_PMACFG1_PMA6CFG_GET(x) (((uint32_t)(x) & CSR_PMACFG1_PMA6CFG_MASK) >> CSR_PMACFG1_PMA6CFG_SHIFT)
  3118. /*
  3119. * PMA5CFG (RW)
  3120. *
  3121. * See PMACFG Table
  3122. */
  3123. #define CSR_PMACFG1_PMA5CFG_MASK (0xFF00U)
  3124. #define CSR_PMACFG1_PMA5CFG_SHIFT (8U)
  3125. #define CSR_PMACFG1_PMA5CFG_SET(x) (((uint32_t)(x) << CSR_PMACFG1_PMA5CFG_SHIFT) & CSR_PMACFG1_PMA5CFG_MASK)
  3126. #define CSR_PMACFG1_PMA5CFG_GET(x) (((uint32_t)(x) & CSR_PMACFG1_PMA5CFG_MASK) >> CSR_PMACFG1_PMA5CFG_SHIFT)
  3127. /*
  3128. * PMA4CFG (RW)
  3129. *
  3130. * See PMACFG Table
  3131. */
  3132. #define CSR_PMACFG1_PMA4CFG_MASK (0xFFU)
  3133. #define CSR_PMACFG1_PMA4CFG_SHIFT (0U)
  3134. #define CSR_PMACFG1_PMA4CFG_SET(x) (((uint32_t)(x) << CSR_PMACFG1_PMA4CFG_SHIFT) & CSR_PMACFG1_PMA4CFG_MASK)
  3135. #define CSR_PMACFG1_PMA4CFG_GET(x) (((uint32_t)(x) & CSR_PMACFG1_PMA4CFG_MASK) >> CSR_PMACFG1_PMA4CFG_SHIFT)
  3136. /* Bitfield definition for register: PMACFG2 */
  3137. /*
  3138. * PMA11CFG (RW)
  3139. *
  3140. * See PMACFG Table
  3141. */
  3142. #define CSR_PMACFG2_PMA11CFG_MASK (0xFF000000UL)
  3143. #define CSR_PMACFG2_PMA11CFG_SHIFT (24U)
  3144. #define CSR_PMACFG2_PMA11CFG_SET(x) (((uint32_t)(x) << CSR_PMACFG2_PMA11CFG_SHIFT) & CSR_PMACFG2_PMA11CFG_MASK)
  3145. #define CSR_PMACFG2_PMA11CFG_GET(x) (((uint32_t)(x) & CSR_PMACFG2_PMA11CFG_MASK) >> CSR_PMACFG2_PMA11CFG_SHIFT)
  3146. /*
  3147. * PMA10CFG (RW)
  3148. *
  3149. * See PMACFG Table
  3150. */
  3151. #define CSR_PMACFG2_PMA10CFG_MASK (0xFF0000UL)
  3152. #define CSR_PMACFG2_PMA10CFG_SHIFT (16U)
  3153. #define CSR_PMACFG2_PMA10CFG_SET(x) (((uint32_t)(x) << CSR_PMACFG2_PMA10CFG_SHIFT) & CSR_PMACFG2_PMA10CFG_MASK)
  3154. #define CSR_PMACFG2_PMA10CFG_GET(x) (((uint32_t)(x) & CSR_PMACFG2_PMA10CFG_MASK) >> CSR_PMACFG2_PMA10CFG_SHIFT)
  3155. /*
  3156. * PMA9CFG (RW)
  3157. *
  3158. * See PMACFG Table
  3159. */
  3160. #define CSR_PMACFG2_PMA9CFG_MASK (0xFF00U)
  3161. #define CSR_PMACFG2_PMA9CFG_SHIFT (8U)
  3162. #define CSR_PMACFG2_PMA9CFG_SET(x) (((uint32_t)(x) << CSR_PMACFG2_PMA9CFG_SHIFT) & CSR_PMACFG2_PMA9CFG_MASK)
  3163. #define CSR_PMACFG2_PMA9CFG_GET(x) (((uint32_t)(x) & CSR_PMACFG2_PMA9CFG_MASK) >> CSR_PMACFG2_PMA9CFG_SHIFT)
  3164. /*
  3165. * PMA8CFG (RW)
  3166. *
  3167. * See PMACFG Table
  3168. */
  3169. #define CSR_PMACFG2_PMA8CFG_MASK (0xFFU)
  3170. #define CSR_PMACFG2_PMA8CFG_SHIFT (0U)
  3171. #define CSR_PMACFG2_PMA8CFG_SET(x) (((uint32_t)(x) << CSR_PMACFG2_PMA8CFG_SHIFT) & CSR_PMACFG2_PMA8CFG_MASK)
  3172. #define CSR_PMACFG2_PMA8CFG_GET(x) (((uint32_t)(x) & CSR_PMACFG2_PMA8CFG_MASK) >> CSR_PMACFG2_PMA8CFG_SHIFT)
  3173. /* Bitfield definition for register: PMACFG3 */
  3174. /*
  3175. * PMA15CFG (RW)
  3176. *
  3177. * See PMACFG Table
  3178. */
  3179. #define CSR_PMACFG3_PMA15CFG_MASK (0xFF000000UL)
  3180. #define CSR_PMACFG3_PMA15CFG_SHIFT (24U)
  3181. #define CSR_PMACFG3_PMA15CFG_SET(x) (((uint32_t)(x) << CSR_PMACFG3_PMA15CFG_SHIFT) & CSR_PMACFG3_PMA15CFG_MASK)
  3182. #define CSR_PMACFG3_PMA15CFG_GET(x) (((uint32_t)(x) & CSR_PMACFG3_PMA15CFG_MASK) >> CSR_PMACFG3_PMA15CFG_SHIFT)
  3183. /*
  3184. * PMA14CFG (RW)
  3185. *
  3186. * See PMACFG Table
  3187. */
  3188. #define CSR_PMACFG3_PMA14CFG_MASK (0xFF0000UL)
  3189. #define CSR_PMACFG3_PMA14CFG_SHIFT (16U)
  3190. #define CSR_PMACFG3_PMA14CFG_SET(x) (((uint32_t)(x) << CSR_PMACFG3_PMA14CFG_SHIFT) & CSR_PMACFG3_PMA14CFG_MASK)
  3191. #define CSR_PMACFG3_PMA14CFG_GET(x) (((uint32_t)(x) & CSR_PMACFG3_PMA14CFG_MASK) >> CSR_PMACFG3_PMA14CFG_SHIFT)
  3192. /*
  3193. * PMA13CFG (RW)
  3194. *
  3195. * See PMACFG Table
  3196. */
  3197. #define CSR_PMACFG3_PMA13CFG_MASK (0xFF00U)
  3198. #define CSR_PMACFG3_PMA13CFG_SHIFT (8U)
  3199. #define CSR_PMACFG3_PMA13CFG_SET(x) (((uint32_t)(x) << CSR_PMACFG3_PMA13CFG_SHIFT) & CSR_PMACFG3_PMA13CFG_MASK)
  3200. #define CSR_PMACFG3_PMA13CFG_GET(x) (((uint32_t)(x) & CSR_PMACFG3_PMA13CFG_MASK) >> CSR_PMACFG3_PMA13CFG_SHIFT)
  3201. /*
  3202. * PMA12CFG (RW)
  3203. *
  3204. * See PMACFG Table
  3205. */
  3206. #define CSR_PMACFG3_PMA12CFG_MASK (0xFFU)
  3207. #define CSR_PMACFG3_PMA12CFG_SHIFT (0U)
  3208. #define CSR_PMACFG3_PMA12CFG_SET(x) (((uint32_t)(x) << CSR_PMACFG3_PMA12CFG_SHIFT) & CSR_PMACFG3_PMA12CFG_MASK)
  3209. #define CSR_PMACFG3_PMA12CFG_GET(x) (((uint32_t)(x) & CSR_PMACFG3_PMA12CFG_MASK) >> CSR_PMACFG3_PMA12CFG_SHIFT)
  3210. /* Bitfield definition for register array: PMAADDR */
  3211. /*
  3212. * PMAADDR_31_2 (RW)
  3213. *
  3214. * Register Content : Match Size(Byte)
  3215. * aaaa. . . aaaaaaaaaaa Reserved
  3216. * . . . . . .
  3217. * aaaa. . . aa011111111 Reserved
  3218. * aaaa. . . a0111111111 2^{12}
  3219. * aaaa. . . 01111111111 2^{13}
  3220. * . . . . . .
  3221. * aa01. . . 11111111111 2^{XLEN}
  3222. * a011. . . 11111111111 2^{XLEN+1}
  3223. * 0111. . . 11111111111 2^{XLEN+2}
  3224. * 1111. . . 11111111111 Reserved
  3225. */
  3226. #define CSR_PMAADDR0_PMAADDR_31_2_MASK (0xFFFFFFFCUL)
  3227. #define CSR_PMAADDR0_PMAADDR_31_2_SHIFT (2U)
  3228. #define CSR_PMAADDR0_PMAADDR_31_2_SET(x) (((uint32_t)(x) << CSR_PMAADDR0_PMAADDR_31_2_SHIFT) & CSR_PMAADDR0_PMAADDR_31_2_MASK)
  3229. #define CSR_PMAADDR0_PMAADDR_31_2_GET(x) (((uint32_t)(x) & CSR_PMAADDR0_PMAADDR_31_2_MASK) >> CSR_PMAADDR0_PMAADDR_31_2_SHIFT)
  3230. /* Bitfield definition for register array: PMAADDR */
  3231. /*
  3232. * PMAADDR_31_2 (RW)
  3233. *
  3234. * same as PMAADDR0
  3235. */
  3236. #define CSR_PMAADDR1_PMAADDR_31_2_MASK (0xFFFFFFFCUL)
  3237. #define CSR_PMAADDR1_PMAADDR_31_2_SHIFT (2U)
  3238. #define CSR_PMAADDR1_PMAADDR_31_2_SET(x) (((uint32_t)(x) << CSR_PMAADDR1_PMAADDR_31_2_SHIFT) & CSR_PMAADDR1_PMAADDR_31_2_MASK)
  3239. #define CSR_PMAADDR1_PMAADDR_31_2_GET(x) (((uint32_t)(x) & CSR_PMAADDR1_PMAADDR_31_2_MASK) >> CSR_PMAADDR1_PMAADDR_31_2_SHIFT)
  3240. /* Bitfield definition for register array: PMAADDR */
  3241. /*
  3242. * PMAADDR_31_2 (RW)
  3243. *
  3244. * same as PMAADDR0
  3245. */
  3246. #define CSR_PMAADDR2_PMAADDR_31_2_MASK (0xFFFFFFFCUL)
  3247. #define CSR_PMAADDR2_PMAADDR_31_2_SHIFT (2U)
  3248. #define CSR_PMAADDR2_PMAADDR_31_2_SET(x) (((uint32_t)(x) << CSR_PMAADDR2_PMAADDR_31_2_SHIFT) & CSR_PMAADDR2_PMAADDR_31_2_MASK)
  3249. #define CSR_PMAADDR2_PMAADDR_31_2_GET(x) (((uint32_t)(x) & CSR_PMAADDR2_PMAADDR_31_2_MASK) >> CSR_PMAADDR2_PMAADDR_31_2_SHIFT)
  3250. /* Bitfield definition for register array: PMAADDR */
  3251. /*
  3252. * PMAADDR_31_2 (RW)
  3253. *
  3254. * same as PMAADDR0
  3255. */
  3256. #define CSR_PMAADDR3_PMAADDR_31_2_MASK (0xFFFFFFFCUL)
  3257. #define CSR_PMAADDR3_PMAADDR_31_2_SHIFT (2U)
  3258. #define CSR_PMAADDR3_PMAADDR_31_2_SET(x) (((uint32_t)(x) << CSR_PMAADDR3_PMAADDR_31_2_SHIFT) & CSR_PMAADDR3_PMAADDR_31_2_MASK)
  3259. #define CSR_PMAADDR3_PMAADDR_31_2_GET(x) (((uint32_t)(x) & CSR_PMAADDR3_PMAADDR_31_2_MASK) >> CSR_PMAADDR3_PMAADDR_31_2_SHIFT)
  3260. /* Bitfield definition for register array: PMAADDR */
  3261. /*
  3262. * PMAADDR_31_2 (RW)
  3263. *
  3264. * same as PMAADDR0
  3265. */
  3266. #define CSR_PMAADDR4_PMAADDR_31_2_MASK (0xFFFFFFFCUL)
  3267. #define CSR_PMAADDR4_PMAADDR_31_2_SHIFT (2U)
  3268. #define CSR_PMAADDR4_PMAADDR_31_2_SET(x) (((uint32_t)(x) << CSR_PMAADDR4_PMAADDR_31_2_SHIFT) & CSR_PMAADDR4_PMAADDR_31_2_MASK)
  3269. #define CSR_PMAADDR4_PMAADDR_31_2_GET(x) (((uint32_t)(x) & CSR_PMAADDR4_PMAADDR_31_2_MASK) >> CSR_PMAADDR4_PMAADDR_31_2_SHIFT)
  3270. /* Bitfield definition for register array: PMAADDR */
  3271. /*
  3272. * PMAADDR_31_2 (RW)
  3273. *
  3274. * same as PMAADDR0
  3275. */
  3276. #define CSR_PMAADDR5_PMAADDR_31_2_MASK (0xFFFFFFFCUL)
  3277. #define CSR_PMAADDR5_PMAADDR_31_2_SHIFT (2U)
  3278. #define CSR_PMAADDR5_PMAADDR_31_2_SET(x) (((uint32_t)(x) << CSR_PMAADDR5_PMAADDR_31_2_SHIFT) & CSR_PMAADDR5_PMAADDR_31_2_MASK)
  3279. #define CSR_PMAADDR5_PMAADDR_31_2_GET(x) (((uint32_t)(x) & CSR_PMAADDR5_PMAADDR_31_2_MASK) >> CSR_PMAADDR5_PMAADDR_31_2_SHIFT)
  3280. /* Bitfield definition for register array: PMAADDR */
  3281. /*
  3282. * PMAADDR_31_2 (RW)
  3283. *
  3284. * same as PMAADDR0
  3285. */
  3286. #define CSR_PMAADDR6_PMAADDR_31_2_MASK (0xFFFFFFFCUL)
  3287. #define CSR_PMAADDR6_PMAADDR_31_2_SHIFT (2U)
  3288. #define CSR_PMAADDR6_PMAADDR_31_2_SET(x) (((uint32_t)(x) << CSR_PMAADDR6_PMAADDR_31_2_SHIFT) & CSR_PMAADDR6_PMAADDR_31_2_MASK)
  3289. #define CSR_PMAADDR6_PMAADDR_31_2_GET(x) (((uint32_t)(x) & CSR_PMAADDR6_PMAADDR_31_2_MASK) >> CSR_PMAADDR6_PMAADDR_31_2_SHIFT)
  3290. /* Bitfield definition for register array: PMAADDR */
  3291. /*
  3292. * PMAADDR_31_2 (RW)
  3293. *
  3294. * same as PMAADDR0
  3295. */
  3296. #define CSR_PMAADDR7_PMAADDR_31_2_MASK (0xFFFFFFFCUL)
  3297. #define CSR_PMAADDR7_PMAADDR_31_2_SHIFT (2U)
  3298. #define CSR_PMAADDR7_PMAADDR_31_2_SET(x) (((uint32_t)(x) << CSR_PMAADDR7_PMAADDR_31_2_SHIFT) & CSR_PMAADDR7_PMAADDR_31_2_MASK)
  3299. #define CSR_PMAADDR7_PMAADDR_31_2_GET(x) (((uint32_t)(x) & CSR_PMAADDR7_PMAADDR_31_2_MASK) >> CSR_PMAADDR7_PMAADDR_31_2_SHIFT)
  3300. /* Bitfield definition for register array: PMAADDR */
  3301. /*
  3302. * PMAADDR_31_2 (RW)
  3303. *
  3304. * same as PMAADDR0
  3305. */
  3306. #define CSR_PMAADDR8_PMAADDR_31_2_MASK (0xFFFFFFFCUL)
  3307. #define CSR_PMAADDR8_PMAADDR_31_2_SHIFT (2U)
  3308. #define CSR_PMAADDR8_PMAADDR_31_2_SET(x) (((uint32_t)(x) << CSR_PMAADDR8_PMAADDR_31_2_SHIFT) & CSR_PMAADDR8_PMAADDR_31_2_MASK)
  3309. #define CSR_PMAADDR8_PMAADDR_31_2_GET(x) (((uint32_t)(x) & CSR_PMAADDR8_PMAADDR_31_2_MASK) >> CSR_PMAADDR8_PMAADDR_31_2_SHIFT)
  3310. /* Bitfield definition for register array: PMAADDR */
  3311. /*
  3312. * PMAADDR_31_2 (RW)
  3313. *
  3314. * same as PMAADDR0
  3315. */
  3316. #define CSR_PMAADDR9_PMAADDR_31_2_MASK (0xFFFFFFFCUL)
  3317. #define CSR_PMAADDR9_PMAADDR_31_2_SHIFT (2U)
  3318. #define CSR_PMAADDR9_PMAADDR_31_2_SET(x) (((uint32_t)(x) << CSR_PMAADDR9_PMAADDR_31_2_SHIFT) & CSR_PMAADDR9_PMAADDR_31_2_MASK)
  3319. #define CSR_PMAADDR9_PMAADDR_31_2_GET(x) (((uint32_t)(x) & CSR_PMAADDR9_PMAADDR_31_2_MASK) >> CSR_PMAADDR9_PMAADDR_31_2_SHIFT)
  3320. /* Bitfield definition for register array: PMAADDR */
  3321. /*
  3322. * PMAADDR_31_2 (RW)
  3323. *
  3324. * same as PMAADDR0
  3325. */
  3326. #define CSR_PMAADDR10_PMAADDR_31_2_MASK (0xFFFFFFFCUL)
  3327. #define CSR_PMAADDR10_PMAADDR_31_2_SHIFT (2U)
  3328. #define CSR_PMAADDR10_PMAADDR_31_2_SET(x) (((uint32_t)(x) << CSR_PMAADDR10_PMAADDR_31_2_SHIFT) & CSR_PMAADDR10_PMAADDR_31_2_MASK)
  3329. #define CSR_PMAADDR10_PMAADDR_31_2_GET(x) (((uint32_t)(x) & CSR_PMAADDR10_PMAADDR_31_2_MASK) >> CSR_PMAADDR10_PMAADDR_31_2_SHIFT)
  3330. /* Bitfield definition for register array: PMAADDR */
  3331. /*
  3332. * PMAADDR_31_2 (RW)
  3333. *
  3334. * same as PMAADDR0
  3335. */
  3336. #define CSR_PMAADDR11_PMAADDR_31_2_MASK (0xFFFFFFFCUL)
  3337. #define CSR_PMAADDR11_PMAADDR_31_2_SHIFT (2U)
  3338. #define CSR_PMAADDR11_PMAADDR_31_2_SET(x) (((uint32_t)(x) << CSR_PMAADDR11_PMAADDR_31_2_SHIFT) & CSR_PMAADDR11_PMAADDR_31_2_MASK)
  3339. #define CSR_PMAADDR11_PMAADDR_31_2_GET(x) (((uint32_t)(x) & CSR_PMAADDR11_PMAADDR_31_2_MASK) >> CSR_PMAADDR11_PMAADDR_31_2_SHIFT)
  3340. /* Bitfield definition for register array: PMAADDR */
  3341. /*
  3342. * PMAADDR_31_2 (RW)
  3343. *
  3344. * same as PMAADDR0
  3345. */
  3346. #define CSR_PMAADDR12_PMAADDR_31_2_MASK (0xFFFFFFFCUL)
  3347. #define CSR_PMAADDR12_PMAADDR_31_2_SHIFT (2U)
  3348. #define CSR_PMAADDR12_PMAADDR_31_2_SET(x) (((uint32_t)(x) << CSR_PMAADDR12_PMAADDR_31_2_SHIFT) & CSR_PMAADDR12_PMAADDR_31_2_MASK)
  3349. #define CSR_PMAADDR12_PMAADDR_31_2_GET(x) (((uint32_t)(x) & CSR_PMAADDR12_PMAADDR_31_2_MASK) >> CSR_PMAADDR12_PMAADDR_31_2_SHIFT)
  3350. /* Bitfield definition for register array: PMAADDR */
  3351. /*
  3352. * PMAADDR_31_2 (RW)
  3353. *
  3354. * same as PMAADDR0
  3355. */
  3356. #define CSR_PMAADDR13_PMAADDR_31_2_MASK (0xFFFFFFFCUL)
  3357. #define CSR_PMAADDR13_PMAADDR_31_2_SHIFT (2U)
  3358. #define CSR_PMAADDR13_PMAADDR_31_2_SET(x) (((uint32_t)(x) << CSR_PMAADDR13_PMAADDR_31_2_SHIFT) & CSR_PMAADDR13_PMAADDR_31_2_MASK)
  3359. #define CSR_PMAADDR13_PMAADDR_31_2_GET(x) (((uint32_t)(x) & CSR_PMAADDR13_PMAADDR_31_2_MASK) >> CSR_PMAADDR13_PMAADDR_31_2_SHIFT)
  3360. /* Bitfield definition for register array: PMAADDR */
  3361. /*
  3362. * PMAADDR_31_2 (RW)
  3363. *
  3364. * same as PMAADDR0
  3365. */
  3366. #define CSR_PMAADDR14_PMAADDR_31_2_MASK (0xFFFFFFFCUL)
  3367. #define CSR_PMAADDR14_PMAADDR_31_2_SHIFT (2U)
  3368. #define CSR_PMAADDR14_PMAADDR_31_2_SET(x) (((uint32_t)(x) << CSR_PMAADDR14_PMAADDR_31_2_SHIFT) & CSR_PMAADDR14_PMAADDR_31_2_MASK)
  3369. #define CSR_PMAADDR14_PMAADDR_31_2_GET(x) (((uint32_t)(x) & CSR_PMAADDR14_PMAADDR_31_2_MASK) >> CSR_PMAADDR14_PMAADDR_31_2_SHIFT)
  3370. /* Bitfield definition for register array: PMAADDR */
  3371. /*
  3372. * PMAADDR_31_2 (RW)
  3373. *
  3374. * same as PMAADDR0
  3375. */
  3376. #define CSR_PMAADDR15_PMAADDR_31_2_MASK (0xFFFFFFFCUL)
  3377. #define CSR_PMAADDR15_PMAADDR_31_2_SHIFT (2U)
  3378. #define CSR_PMAADDR15_PMAADDR_31_2_SET(x) (((uint32_t)(x) << CSR_PMAADDR15_PMAADDR_31_2_SHIFT) & CSR_PMAADDR15_PMAADDR_31_2_MASK)
  3379. #define CSR_PMAADDR15_PMAADDR_31_2_GET(x) (((uint32_t)(x) & CSR_PMAADDR15_PMAADDR_31_2_MASK) >> CSR_PMAADDR15_PMAADDR_31_2_SHIFT)
  3380. /* Bitfield definition for register: CYCLE */
  3381. /*
  3382. * CYCLE (RW)
  3383. *
  3384. * Cycle Counter
  3385. */
  3386. #define CSR_CYCLE_CYCLE_MASK (0xFFFFFFFFUL)
  3387. #define CSR_CYCLE_CYCLE_SHIFT (0U)
  3388. #define CSR_CYCLE_CYCLE_SET(x) (((uint32_t)(x) << CSR_CYCLE_CYCLE_SHIFT) & CSR_CYCLE_CYCLE_MASK)
  3389. #define CSR_CYCLE_CYCLE_GET(x) (((uint32_t)(x) & CSR_CYCLE_CYCLE_MASK) >> CSR_CYCLE_CYCLE_SHIFT)
  3390. /* Bitfield definition for register: CYCLEH */
  3391. /*
  3392. * CYCLEH (RW)
  3393. *
  3394. * Cycle Counter Higher 32-bit
  3395. */
  3396. #define CSR_CYCLEH_CYCLEH_MASK (0xFFFFFFFFUL)
  3397. #define CSR_CYCLEH_CYCLEH_SHIFT (0U)
  3398. #define CSR_CYCLEH_CYCLEH_SET(x) (((uint32_t)(x) << CSR_CYCLEH_CYCLEH_SHIFT) & CSR_CYCLEH_CYCLEH_MASK)
  3399. #define CSR_CYCLEH_CYCLEH_GET(x) (((uint32_t)(x) & CSR_CYCLEH_CYCLEH_MASK) >> CSR_CYCLEH_CYCLEH_SHIFT)
  3400. /* Bitfield definition for register: MVENDORID */
  3401. /*
  3402. * MVENDORID (RO)
  3403. *
  3404. * The manufacturer ID
  3405. */
  3406. #define CSR_MVENDORID_MVENDORID_MASK (0xFFFFFFFFUL)
  3407. #define CSR_MVENDORID_MVENDORID_SHIFT (0U)
  3408. #define CSR_MVENDORID_MVENDORID_GET(x) (((uint32_t)(x) & CSR_MVENDORID_MVENDORID_MASK) >> CSR_MVENDORID_MVENDORID_SHIFT)
  3409. /* Bitfield definition for register: MARCHID */
  3410. /*
  3411. * CPU_ID (RO)
  3412. *
  3413. * CPU ID
  3414. */
  3415. #define CSR_MARCHID_CPU_ID_MASK (0x7FFFFFFFUL)
  3416. #define CSR_MARCHID_CPU_ID_SHIFT (0U)
  3417. #define CSR_MARCHID_CPU_ID_GET(x) (((uint32_t)(x) & CSR_MARCHID_CPU_ID_MASK) >> CSR_MARCHID_CPU_ID_SHIFT)
  3418. /* Bitfield definition for register: MIMPID */
  3419. /*
  3420. * MAJOR (RO)
  3421. *
  3422. * Revision major
  3423. */
  3424. #define CSR_MIMPID_MAJOR_MASK (0xFFFFFF00UL)
  3425. #define CSR_MIMPID_MAJOR_SHIFT (8U)
  3426. #define CSR_MIMPID_MAJOR_GET(x) (((uint32_t)(x) & CSR_MIMPID_MAJOR_MASK) >> CSR_MIMPID_MAJOR_SHIFT)
  3427. /*
  3428. * MINOR (RO)
  3429. *
  3430. * Revision minor
  3431. */
  3432. #define CSR_MIMPID_MINOR_MASK (0xF0U)
  3433. #define CSR_MIMPID_MINOR_SHIFT (4U)
  3434. #define CSR_MIMPID_MINOR_GET(x) (((uint32_t)(x) & CSR_MIMPID_MINOR_MASK) >> CSR_MIMPID_MINOR_SHIFT)
  3435. /*
  3436. * EXTENSION (RO)
  3437. *
  3438. * Revision extension
  3439. */
  3440. #define CSR_MIMPID_EXTENSION_MASK (0xFU)
  3441. #define CSR_MIMPID_EXTENSION_SHIFT (0U)
  3442. #define CSR_MIMPID_EXTENSION_GET(x) (((uint32_t)(x) & CSR_MIMPID_EXTENSION_MASK) >> CSR_MIMPID_EXTENSION_SHIFT)
  3443. /* Bitfield definition for register: MHARTID */
  3444. /*
  3445. * MHARTID (RO)
  3446. *
  3447. * Hart ID
  3448. */
  3449. #define CSR_MHARTID_MHARTID_MASK (0xFFFFFFFFUL)
  3450. #define CSR_MHARTID_MHARTID_SHIFT (0U)
  3451. #define CSR_MHARTID_MHARTID_GET(x) (((uint32_t)(x) & CSR_MHARTID_MHARTID_MASK) >> CSR_MHARTID_MHARTID_SHIFT)
  3452. /* NON-STANDARD CRS register bitfiled definitions */
  3453. /* Bitfield definition for register: SCOUNTEREN */
  3454. /*
  3455. * HPM6 (RW)
  3456. *
  3457. * See register description
  3458. */
  3459. #define CSR_SCOUNTEREN_HPM6_MASK (0x40U)
  3460. #define CSR_SCOUNTEREN_HPM6_SHIFT (6U)
  3461. #define CSR_SCOUNTEREN_HPM6_SET(x) (((uint32_t)(x) << CSR_SCOUNTEREN_HPM6_SHIFT) & CSR_SCOUNTEREN_HPM6_MASK)
  3462. #define CSR_SCOUNTEREN_HPM6_GET(x) (((uint32_t)(x) & CSR_SCOUNTEREN_HPM6_MASK) >> CSR_SCOUNTEREN_HPM6_SHIFT)
  3463. /*
  3464. * HPM5 (RW)
  3465. *
  3466. * See register description
  3467. */
  3468. #define CSR_SCOUNTEREN_HPM5_MASK (0x20U)
  3469. #define CSR_SCOUNTEREN_HPM5_SHIFT (5U)
  3470. #define CSR_SCOUNTEREN_HPM5_SET(x) (((uint32_t)(x) << CSR_SCOUNTEREN_HPM5_SHIFT) & CSR_SCOUNTEREN_HPM5_MASK)
  3471. #define CSR_SCOUNTEREN_HPM5_GET(x) (((uint32_t)(x) & CSR_SCOUNTEREN_HPM5_MASK) >> CSR_SCOUNTEREN_HPM5_SHIFT)
  3472. /*
  3473. * HPM4 (RW)
  3474. *
  3475. * See register description
  3476. */
  3477. #define CSR_SCOUNTEREN_HPM4_MASK (0x10U)
  3478. #define CSR_SCOUNTEREN_HPM4_SHIFT (4U)
  3479. #define CSR_SCOUNTEREN_HPM4_SET(x) (((uint32_t)(x) << CSR_SCOUNTEREN_HPM4_SHIFT) & CSR_SCOUNTEREN_HPM4_MASK)
  3480. #define CSR_SCOUNTEREN_HPM4_GET(x) (((uint32_t)(x) & CSR_SCOUNTEREN_HPM4_MASK) >> CSR_SCOUNTEREN_HPM4_SHIFT)
  3481. /*
  3482. * HPM3 (RW)
  3483. *
  3484. * See register description
  3485. */
  3486. #define CSR_SCOUNTEREN_HPM3_MASK (0x8U)
  3487. #define CSR_SCOUNTEREN_HPM3_SHIFT (3U)
  3488. #define CSR_SCOUNTEREN_HPM3_SET(x) (((uint32_t)(x) << CSR_SCOUNTEREN_HPM3_SHIFT) & CSR_SCOUNTEREN_HPM3_MASK)
  3489. #define CSR_SCOUNTEREN_HPM3_GET(x) (((uint32_t)(x) & CSR_SCOUNTEREN_HPM3_MASK) >> CSR_SCOUNTEREN_HPM3_SHIFT)
  3490. /*
  3491. * IR (RW)
  3492. *
  3493. * See register description
  3494. */
  3495. #define CSR_SCOUNTEREN_IR_MASK (0x4U)
  3496. #define CSR_SCOUNTEREN_IR_SHIFT (2U)
  3497. #define CSR_SCOUNTEREN_IR_SET(x) (((uint32_t)(x) << CSR_SCOUNTEREN_IR_SHIFT) & CSR_SCOUNTEREN_IR_MASK)
  3498. #define CSR_SCOUNTEREN_IR_GET(x) (((uint32_t)(x) & CSR_SCOUNTEREN_IR_MASK) >> CSR_SCOUNTEREN_IR_SHIFT)
  3499. /*
  3500. * CY (RW)
  3501. *
  3502. * See register description
  3503. */
  3504. #define CSR_SCOUNTEREN_CY_MASK (0x1U)
  3505. #define CSR_SCOUNTEREN_CY_SHIFT (0U)
  3506. #define CSR_SCOUNTEREN_CY_SET(x) (((uint32_t)(x) << CSR_SCOUNTEREN_CY_SHIFT) & CSR_SCOUNTEREN_CY_MASK)
  3507. #define CSR_SCOUNTEREN_CY_GET(x) (((uint32_t)(x) & CSR_SCOUNTEREN_CY_MASK) >> CSR_SCOUNTEREN_CY_SHIFT)
  3508. /* Bitfield definition for register: MCOUNTINHIBIT */
  3509. /*
  3510. * HPM6 (RW)
  3511. *
  3512. * See register description.
  3513. */
  3514. #define CSR_MCOUNTINHIBIT_HPM6_MASK (0x40U)
  3515. #define CSR_MCOUNTINHIBIT_HPM6_SHIFT (6U)
  3516. #define CSR_MCOUNTINHIBIT_HPM6_SET(x) (((uint32_t)(x) << CSR_MCOUNTINHIBIT_HPM6_SHIFT) & CSR_MCOUNTINHIBIT_HPM6_MASK)
  3517. #define CSR_MCOUNTINHIBIT_HPM6_GET(x) (((uint32_t)(x) & CSR_MCOUNTINHIBIT_HPM6_MASK) >> CSR_MCOUNTINHIBIT_HPM6_SHIFT)
  3518. /*
  3519. * HPM5 (RW)
  3520. *
  3521. * See register description.
  3522. */
  3523. #define CSR_MCOUNTINHIBIT_HPM5_MASK (0x20U)
  3524. #define CSR_MCOUNTINHIBIT_HPM5_SHIFT (5U)
  3525. #define CSR_MCOUNTINHIBIT_HPM5_SET(x) (((uint32_t)(x) << CSR_MCOUNTINHIBIT_HPM5_SHIFT) & CSR_MCOUNTINHIBIT_HPM5_MASK)
  3526. #define CSR_MCOUNTINHIBIT_HPM5_GET(x) (((uint32_t)(x) & CSR_MCOUNTINHIBIT_HPM5_MASK) >> CSR_MCOUNTINHIBIT_HPM5_SHIFT)
  3527. /*
  3528. * HPM4 (RW)
  3529. *
  3530. * See register description.
  3531. */
  3532. #define CSR_MCOUNTINHIBIT_HPM4_MASK (0x10U)
  3533. #define CSR_MCOUNTINHIBIT_HPM4_SHIFT (4U)
  3534. #define CSR_MCOUNTINHIBIT_HPM4_SET(x) (((uint32_t)(x) << CSR_MCOUNTINHIBIT_HPM4_SHIFT) & CSR_MCOUNTINHIBIT_HPM4_MASK)
  3535. #define CSR_MCOUNTINHIBIT_HPM4_GET(x) (((uint32_t)(x) & CSR_MCOUNTINHIBIT_HPM4_MASK) >> CSR_MCOUNTINHIBIT_HPM4_SHIFT)
  3536. /*
  3537. * HPM3 (RW)
  3538. *
  3539. * See register description.
  3540. */
  3541. #define CSR_MCOUNTINHIBIT_HPM3_MASK (0x8U)
  3542. #define CSR_MCOUNTINHIBIT_HPM3_SHIFT (3U)
  3543. #define CSR_MCOUNTINHIBIT_HPM3_SET(x) (((uint32_t)(x) << CSR_MCOUNTINHIBIT_HPM3_SHIFT) & CSR_MCOUNTINHIBIT_HPM3_MASK)
  3544. #define CSR_MCOUNTINHIBIT_HPM3_GET(x) (((uint32_t)(x) & CSR_MCOUNTINHIBIT_HPM3_MASK) >> CSR_MCOUNTINHIBIT_HPM3_SHIFT)
  3545. /*
  3546. * IR (RW)
  3547. *
  3548. * See register description.
  3549. */
  3550. #define CSR_MCOUNTINHIBIT_IR_MASK (0x4U)
  3551. #define CSR_MCOUNTINHIBIT_IR_SHIFT (2U)
  3552. #define CSR_MCOUNTINHIBIT_IR_SET(x) (((uint32_t)(x) << CSR_MCOUNTINHIBIT_IR_SHIFT) & CSR_MCOUNTINHIBIT_IR_MASK)
  3553. #define CSR_MCOUNTINHIBIT_IR_GET(x) (((uint32_t)(x) & CSR_MCOUNTINHIBIT_IR_MASK) >> CSR_MCOUNTINHIBIT_IR_SHIFT)
  3554. /*
  3555. * TM (RW)
  3556. *
  3557. * See register description.
  3558. */
  3559. #define CSR_MCOUNTINHIBIT_TM_MASK (0x2U)
  3560. #define CSR_MCOUNTINHIBIT_TM_SHIFT (1U)
  3561. #define CSR_MCOUNTINHIBIT_TM_SET(x) (((uint32_t)(x) << CSR_MCOUNTINHIBIT_TM_SHIFT) & CSR_MCOUNTINHIBIT_TM_MASK)
  3562. #define CSR_MCOUNTINHIBIT_TM_GET(x) (((uint32_t)(x) & CSR_MCOUNTINHIBIT_TM_MASK) >> CSR_MCOUNTINHIBIT_TM_SHIFT)
  3563. /*
  3564. * CY (RW)
  3565. *
  3566. * See register description.
  3567. */
  3568. #define CSR_MCOUNTINHIBIT_CY_MASK (0x1U)
  3569. #define CSR_MCOUNTINHIBIT_CY_SHIFT (0U)
  3570. #define CSR_MCOUNTINHIBIT_CY_SET(x) (((uint32_t)(x) << CSR_MCOUNTINHIBIT_CY_SHIFT) & CSR_MCOUNTINHIBIT_CY_MASK)
  3571. #define CSR_MCOUNTINHIBIT_CY_GET(x) (((uint32_t)(x) & CSR_MCOUNTINHIBIT_CY_MASK) >> CSR_MCOUNTINHIBIT_CY_SHIFT)
  3572. /* Bitfield definition for register: MILMB */
  3573. /*
  3574. * IBPA (RO)
  3575. *
  3576. * The base physical address of ILM. It has to be an integer multiple of the ILM size
  3577. */
  3578. #define CSR_MILMB_IBPA_MASK (0xFFFFFC00UL)
  3579. #define CSR_MILMB_IBPA_SHIFT (10U)
  3580. #define CSR_MILMB_IBPA_GET(x) (((uint32_t)(x) & CSR_MILMB_IBPA_MASK) >> CSR_MILMB_IBPA_SHIFT)
  3581. /*
  3582. * RWECC (RW)
  3583. *
  3584. * Controls diagnostic accesses of ECC codes of the ILM RAMs. When set, load/store to ILM reads/writes ECC codes to the mecc_code register. This bit can be set for injecting ECC errors to test the ECC handler.
  3585. * 0:Disable diagnostic accesses of ECC codes
  3586. * 1:Enable diagnostic accesses of ECC codes
  3587. */
  3588. #define CSR_MILMB_RWECC_MASK (0x8U)
  3589. #define CSR_MILMB_RWECC_SHIFT (3U)
  3590. #define CSR_MILMB_RWECC_SET(x) (((uint32_t)(x) << CSR_MILMB_RWECC_SHIFT) & CSR_MILMB_RWECC_MASK)
  3591. #define CSR_MILMB_RWECC_GET(x) (((uint32_t)(x) & CSR_MILMB_RWECC_MASK) >> CSR_MILMB_RWECC_SHIFT)
  3592. /*
  3593. * ECCEN (RW)
  3594. *
  3595. * Parity/ECC enable control:
  3596. * 0:Disable parity/ECC
  3597. * 1:Reserved
  3598. * 2:Generate exceptions only on uncorrectable parity/ECC errors
  3599. * 3:Generate exceptions on any type of parity/ECC errors
  3600. */
  3601. #define CSR_MILMB_ECCEN_MASK (0x6U)
  3602. #define CSR_MILMB_ECCEN_SHIFT (1U)
  3603. #define CSR_MILMB_ECCEN_SET(x) (((uint32_t)(x) << CSR_MILMB_ECCEN_SHIFT) & CSR_MILMB_ECCEN_MASK)
  3604. #define CSR_MILMB_ECCEN_GET(x) (((uint32_t)(x) & CSR_MILMB_ECCEN_MASK) >> CSR_MILMB_ECCEN_SHIFT)
  3605. /*
  3606. * IEN (RO)
  3607. *
  3608. * ILM enable control:
  3609. * 0:ILM is disabled
  3610. * 1:ILM is enabled
  3611. */
  3612. #define CSR_MILMB_IEN_MASK (0x1U)
  3613. #define CSR_MILMB_IEN_SHIFT (0U)
  3614. #define CSR_MILMB_IEN_GET(x) (((uint32_t)(x) & CSR_MILMB_IEN_MASK) >> CSR_MILMB_IEN_SHIFT)
  3615. /* Bitfield definition for register: MDLMB */
  3616. /*
  3617. * DBPA (RO)
  3618. *
  3619. * The base physical address of DLM. It has to be an integer multiple of the DLM size
  3620. */
  3621. #define CSR_MDLMB_DBPA_MASK (0xFFFFFC00UL)
  3622. #define CSR_MDLMB_DBPA_SHIFT (10U)
  3623. #define CSR_MDLMB_DBPA_GET(x) (((uint32_t)(x) & CSR_MDLMB_DBPA_MASK) >> CSR_MDLMB_DBPA_SHIFT)
  3624. /*
  3625. * RWECC (RW)
  3626. *
  3627. * Controls diagnostic accesses of ECC codes of the DLM RAMs. When set, load/store to DLM reads/writes ECC codes to the mecc_code register. This bit can be set for injecting ECC errors to test the ECC handler.
  3628. * 0:Disable diagnostic accesses of ECC codes
  3629. * 1:Enable diagnostic accesses of ECC codes
  3630. */
  3631. #define CSR_MDLMB_RWECC_MASK (0x8U)
  3632. #define CSR_MDLMB_RWECC_SHIFT (3U)
  3633. #define CSR_MDLMB_RWECC_SET(x) (((uint32_t)(x) << CSR_MDLMB_RWECC_SHIFT) & CSR_MDLMB_RWECC_MASK)
  3634. #define CSR_MDLMB_RWECC_GET(x) (((uint32_t)(x) & CSR_MDLMB_RWECC_MASK) >> CSR_MDLMB_RWECC_SHIFT)
  3635. /*
  3636. * ECCEN (RW)
  3637. *
  3638. * Parity/ECC enable control:
  3639. * 0:Disable parity/ECC
  3640. * 1:Reserved
  3641. * 2:Generate exceptions only on uncorrectable parity/ECC errors
  3642. * 3:Generate exceptions on any type of parity/ECC errors
  3643. */
  3644. #define CSR_MDLMB_ECCEN_MASK (0x6U)
  3645. #define CSR_MDLMB_ECCEN_SHIFT (1U)
  3646. #define CSR_MDLMB_ECCEN_SET(x) (((uint32_t)(x) << CSR_MDLMB_ECCEN_SHIFT) & CSR_MDLMB_ECCEN_MASK)
  3647. #define CSR_MDLMB_ECCEN_GET(x) (((uint32_t)(x) & CSR_MDLMB_ECCEN_MASK) >> CSR_MDLMB_ECCEN_SHIFT)
  3648. /*
  3649. * DEN (RO)
  3650. *
  3651. * DLM enable control:
  3652. * 0:DLM is disabled
  3653. * 1:DLM is enabled
  3654. */
  3655. #define CSR_MDLMB_DEN_MASK (0x1U)
  3656. #define CSR_MDLMB_DEN_SHIFT (0U)
  3657. #define CSR_MDLMB_DEN_GET(x) (((uint32_t)(x) & CSR_MDLMB_DEN_MASK) >> CSR_MDLMB_DEN_SHIFT)
  3658. /* Bitfield definition for register: MECC_CODE */
  3659. /*
  3660. * INSN (RO)
  3661. *
  3662. * Indicates if the parity/ECC error is caused by instruction fetch or data access.
  3663. * 0:Data access
  3664. * 1:Instruction fetch
  3665. */
  3666. #define CSR_MECC_CODE_INSN_MASK (0x400000UL)
  3667. #define CSR_MECC_CODE_INSN_SHIFT (22U)
  3668. #define CSR_MECC_CODE_INSN_GET(x) (((uint32_t)(x) & CSR_MECC_CODE_INSN_MASK) >> CSR_MECC_CODE_INSN_SHIFT)
  3669. /*
  3670. * RAMID (RO)
  3671. *
  3672. * The ID of RAM that caused parity/ECC errors.
  3673. * This bit is updated on parity/ECC error exceptions.
  3674. * 0–1:Reserved
  3675. * 2:Tag RAM of I-Cache
  3676. * 3:Data RAM of I-Cache
  3677. * 4:Tag RAM of D-Cache
  3678. * 5:Data RAM of D-Cache
  3679. * 6:Tag RAM of TLB
  3680. * 7:Data RAM of TLB
  3681. * 8:ILM
  3682. * 9:DLM
  3683. * 10–15:Reserved
  3684. */
  3685. #define CSR_MECC_CODE_RAMID_MASK (0x3C0000UL)
  3686. #define CSR_MECC_CODE_RAMID_SHIFT (18U)
  3687. #define CSR_MECC_CODE_RAMID_GET(x) (((uint32_t)(x) & CSR_MECC_CODE_RAMID_MASK) >> CSR_MECC_CODE_RAMID_SHIFT)
  3688. /*
  3689. * P (RO)
  3690. *
  3691. * Precise error. This bit is updated on parity/ECC error exceptions.
  3692. * 0:Imprecise error
  3693. * 1:Precise error
  3694. */
  3695. #define CSR_MECC_CODE_P_MASK (0x20000UL)
  3696. #define CSR_MECC_CODE_P_SHIFT (17U)
  3697. #define CSR_MECC_CODE_P_GET(x) (((uint32_t)(x) & CSR_MECC_CODE_P_MASK) >> CSR_MECC_CODE_P_SHIFT)
  3698. /*
  3699. * C (RO)
  3700. *
  3701. * Correctable error. This bit is updated on parity/ECC error exceptions.
  3702. * 0:Uncorrectable error
  3703. * 1:Correctable error
  3704. */
  3705. #define CSR_MECC_CODE_C_MASK (0x10000UL)
  3706. #define CSR_MECC_CODE_C_SHIFT (16U)
  3707. #define CSR_MECC_CODE_C_GET(x) (((uint32_t)(x) & CSR_MECC_CODE_C_MASK) >> CSR_MECC_CODE_C_SHIFT)
  3708. /*
  3709. * CODE (RW)
  3710. *
  3711. * This field records the ECC value on ECC error exceptions. This field is also used to read/write the ECC codes when diagnostic access of ECC codes are enabled (milmb.RWECC or mdlmb.RWECC is 1).
  3712. */
  3713. #define CSR_MECC_CODE_CODE_MASK (0x7FU)
  3714. #define CSR_MECC_CODE_CODE_SHIFT (0U)
  3715. #define CSR_MECC_CODE_CODE_SET(x) (((uint32_t)(x) << CSR_MECC_CODE_CODE_SHIFT) & CSR_MECC_CODE_CODE_MASK)
  3716. #define CSR_MECC_CODE_CODE_GET(x) (((uint32_t)(x) & CSR_MECC_CODE_CODE_MASK) >> CSR_MECC_CODE_CODE_SHIFT)
  3717. /* Bitfield definition for register: MNVEC */
  3718. /*
  3719. * MNVEC (RO)
  3720. *
  3721. * Base address of the NMI handler. Its value is the zero-extended value of the reset_vector.
  3722. */
  3723. #define CSR_MNVEC_MNVEC_MASK (0xFFFFFFFFUL)
  3724. #define CSR_MNVEC_MNVEC_SHIFT (0U)
  3725. #define CSR_MNVEC_MNVEC_GET(x) (((uint32_t)(x) & CSR_MNVEC_MNVEC_MASK) >> CSR_MNVEC_MNVEC_SHIFT)
  3726. /* Bitfield definition for register: MXSTATUS */
  3727. /*
  3728. * PDME (RW)
  3729. *
  3730. * For saving previous DME state on entering a trap. This field is hardwired to 0 if data cache and data local memory are not supported.
  3731. */
  3732. #define CSR_MXSTATUS_PDME_MASK (0x20U)
  3733. #define CSR_MXSTATUS_PDME_SHIFT (5U)
  3734. #define CSR_MXSTATUS_PDME_SET(x) (((uint32_t)(x) << CSR_MXSTATUS_PDME_SHIFT) & CSR_MXSTATUS_PDME_MASK)
  3735. #define CSR_MXSTATUS_PDME_GET(x) (((uint32_t)(x) & CSR_MXSTATUS_PDME_MASK) >> CSR_MXSTATUS_PDME_SHIFT)
  3736. /*
  3737. * DME (RW)
  3738. *
  3739. * Data Machine Error flag. It indicates an exception occurred at the data cache or data local memory (DLM). Load/store accesses will bypass D-Cache when this bit is set. The exception handler should clear this bit after the machine error has been dealt with.
  3740. */
  3741. #define CSR_MXSTATUS_DME_MASK (0x10U)
  3742. #define CSR_MXSTATUS_DME_SHIFT (4U)
  3743. #define CSR_MXSTATUS_DME_SET(x) (((uint32_t)(x) << CSR_MXSTATUS_DME_SHIFT) & CSR_MXSTATUS_DME_MASK)
  3744. #define CSR_MXSTATUS_DME_GET(x) (((uint32_t)(x) & CSR_MXSTATUS_DME_MASK) >> CSR_MXSTATUS_DME_SHIFT)
  3745. /*
  3746. * PPFT_EN (RW)
  3747. *
  3748. * When mcause is imprecise exception (in the form of an interrupt), the PM field records the privileged mode of the instruction that caused the imprecise exception. The PM field encoding
  3749. * is defined as follows:
  3750. * 0: User mode
  3751. * 1: Supervisor mode
  3752. * 2: Reserved
  3753. * 3: Machine mode
  3754. */
  3755. #define CSR_MXSTATUS_PPFT_EN_MASK (0x2U)
  3756. #define CSR_MXSTATUS_PPFT_EN_SHIFT (1U)
  3757. #define CSR_MXSTATUS_PPFT_EN_SET(x) (((uint32_t)(x) << CSR_MXSTATUS_PPFT_EN_SHIFT) & CSR_MXSTATUS_PPFT_EN_MASK)
  3758. #define CSR_MXSTATUS_PPFT_EN_GET(x) (((uint32_t)(x) & CSR_MXSTATUS_PPFT_EN_MASK) >> CSR_MXSTATUS_PPFT_EN_SHIFT)
  3759. /*
  3760. * PFT_EN (RW)
  3761. *
  3762. * Enable performance throttling. When throttling is enabled, the processor executes instructions at the performance level specified in mpft_ctl.T_LEVEL. On entering a trap:
  3763. * PPFT_EN <= PFT_EN;
  3764. * PFT_EN <= mpft_ctl.FAST_INT ? 0 :PFT_EN;
  3765. * On executing an MRET instruction:
  3766. * PFT_EN <= PPFT_EN;
  3767. * This field is hardwired to 0 if the PowerBrake feature is not supported.
  3768. */
  3769. #define CSR_MXSTATUS_PFT_EN_MASK (0x1U)
  3770. #define CSR_MXSTATUS_PFT_EN_SHIFT (0U)
  3771. #define CSR_MXSTATUS_PFT_EN_SET(x) (((uint32_t)(x) << CSR_MXSTATUS_PFT_EN_SHIFT) & CSR_MXSTATUS_PFT_EN_MASK)
  3772. #define CSR_MXSTATUS_PFT_EN_GET(x) (((uint32_t)(x) & CSR_MXSTATUS_PFT_EN_MASK) >> CSR_MXSTATUS_PFT_EN_SHIFT)
  3773. /* Bitfield definition for register: MPFT_CTL */
  3774. /*
  3775. * FAST_INT (RW)
  3776. *
  3777. * Fast interrupt response. If this field is set, mxstatus.PFT_EN will be automatically cleared when the processor enters an interrupt handler.
  3778. */
  3779. #define CSR_MPFT_CTL_FAST_INT_MASK (0x100U)
  3780. #define CSR_MPFT_CTL_FAST_INT_SHIFT (8U)
  3781. #define CSR_MPFT_CTL_FAST_INT_SET(x) (((uint32_t)(x) << CSR_MPFT_CTL_FAST_INT_SHIFT) & CSR_MPFT_CTL_FAST_INT_MASK)
  3782. #define CSR_MPFT_CTL_FAST_INT_GET(x) (((uint32_t)(x) & CSR_MPFT_CTL_FAST_INT_MASK) >> CSR_MPFT_CTL_FAST_INT_SHIFT)
  3783. /*
  3784. * T_LEVEL (RW)
  3785. *
  3786. * Throttling Level. The processor has the highest performance at throttling level 0 and the lowest
  3787. * performance at throttling level 15.
  3788. * 0:Level 0 (the highest performance)
  3789. * 1-14:Level 1-14
  3790. * 15:Level 15 (the lowest performance)
  3791. */
  3792. #define CSR_MPFT_CTL_T_LEVEL_MASK (0xF0U)
  3793. #define CSR_MPFT_CTL_T_LEVEL_SHIFT (4U)
  3794. #define CSR_MPFT_CTL_T_LEVEL_SET(x) (((uint32_t)(x) << CSR_MPFT_CTL_T_LEVEL_SHIFT) & CSR_MPFT_CTL_T_LEVEL_MASK)
  3795. #define CSR_MPFT_CTL_T_LEVEL_GET(x) (((uint32_t)(x) & CSR_MPFT_CTL_T_LEVEL_MASK) >> CSR_MPFT_CTL_T_LEVEL_SHIFT)
  3796. /* Bitfield definition for register: MHSP_CTL */
  3797. /*
  3798. * M (RW)
  3799. *
  3800. * Enables the SP protection and recording mechanism in Machine mode
  3801. * 0:The mechanism is disabled in Machine mode.
  3802. * 1: The mechanism is enabled in Machine mode.
  3803. */
  3804. #define CSR_MHSP_CTL_M_MASK (0x20U)
  3805. #define CSR_MHSP_CTL_M_SHIFT (5U)
  3806. #define CSR_MHSP_CTL_M_SET(x) (((uint32_t)(x) << CSR_MHSP_CTL_M_SHIFT) & CSR_MHSP_CTL_M_MASK)
  3807. #define CSR_MHSP_CTL_M_GET(x) (((uint32_t)(x) & CSR_MHSP_CTL_M_MASK) >> CSR_MHSP_CTL_M_SHIFT)
  3808. /*
  3809. * S (RW)
  3810. *
  3811. * Enables the SP protection and recording mechanism in Supervisor mode
  3812. * 0:The mechanism is disabled in Supervisor mode
  3813. * 1:The mechanism is enabled in Supervisor mode
  3814. */
  3815. #define CSR_MHSP_CTL_S_MASK (0x10U)
  3816. #define CSR_MHSP_CTL_S_SHIFT (4U)
  3817. #define CSR_MHSP_CTL_S_SET(x) (((uint32_t)(x) << CSR_MHSP_CTL_S_SHIFT) & CSR_MHSP_CTL_S_MASK)
  3818. #define CSR_MHSP_CTL_S_GET(x) (((uint32_t)(x) & CSR_MHSP_CTL_S_MASK) >> CSR_MHSP_CTL_S_SHIFT)
  3819. /*
  3820. * U (RW)
  3821. *
  3822. * Enables the SP protection and recording mechanism in User mode
  3823. * 0:The mechanism is disabled in User mode
  3824. * 1:The mechanism is enabled in User mode.
  3825. */
  3826. #define CSR_MHSP_CTL_U_MASK (0x8U)
  3827. #define CSR_MHSP_CTL_U_SHIFT (3U)
  3828. #define CSR_MHSP_CTL_U_SET(x) (((uint32_t)(x) << CSR_MHSP_CTL_U_SHIFT) & CSR_MHSP_CTL_U_MASK)
  3829. #define CSR_MHSP_CTL_U_GET(x) (((uint32_t)(x) & CSR_MHSP_CTL_U_MASK) >> CSR_MHSP_CTL_U_SHIFT)
  3830. /*
  3831. * SCHM (RW)
  3832. *
  3833. * Selects the operating scheme of the stack protection and recording mechanism
  3834. * 0:Stack overflow/underflow detection
  3835. * 1:Top-of-stack recording
  3836. */
  3837. #define CSR_MHSP_CTL_SCHM_MASK (0x4U)
  3838. #define CSR_MHSP_CTL_SCHM_SHIFT (2U)
  3839. #define CSR_MHSP_CTL_SCHM_SET(x) (((uint32_t)(x) << CSR_MHSP_CTL_SCHM_SHIFT) & CSR_MHSP_CTL_SCHM_MASK)
  3840. #define CSR_MHSP_CTL_SCHM_GET(x) (((uint32_t)(x) & CSR_MHSP_CTL_SCHM_MASK) >> CSR_MHSP_CTL_SCHM_SHIFT)
  3841. /*
  3842. * UDF_EN (RW)
  3843. *
  3844. * Enable bit for the stack underflow protection mechanism. This bit will be cleared to 0 automatically by hardware when a stack protection (overflow or underflow) exception is taken.
  3845. * 0:The stack underflow protection is disabled
  3846. * 1:The stack underflow protection is enabled.
  3847. */
  3848. #define CSR_MHSP_CTL_UDF_EN_MASK (0x2U)
  3849. #define CSR_MHSP_CTL_UDF_EN_SHIFT (1U)
  3850. #define CSR_MHSP_CTL_UDF_EN_SET(x) (((uint32_t)(x) << CSR_MHSP_CTL_UDF_EN_SHIFT) & CSR_MHSP_CTL_UDF_EN_MASK)
  3851. #define CSR_MHSP_CTL_UDF_EN_GET(x) (((uint32_t)(x) & CSR_MHSP_CTL_UDF_EN_MASK) >> CSR_MHSP_CTL_UDF_EN_SHIFT)
  3852. /*
  3853. * OVF_EN (RW)
  3854. *
  3855. * Enable bit for the stack overflow protection and recording mechanism. This bit will be cleared to 0 automatically by hardware when a stack protection (overflow or underflow) exception is taken.
  3856. * 0:The stack overflow protection and recording mechanism are disabled.
  3857. * 1:The stack overflow protection and recording mechanism are enabled.
  3858. */
  3859. #define CSR_MHSP_CTL_OVF_EN_MASK (0x1U)
  3860. #define CSR_MHSP_CTL_OVF_EN_SHIFT (0U)
  3861. #define CSR_MHSP_CTL_OVF_EN_SET(x) (((uint32_t)(x) << CSR_MHSP_CTL_OVF_EN_SHIFT) & CSR_MHSP_CTL_OVF_EN_MASK)
  3862. #define CSR_MHSP_CTL_OVF_EN_GET(x) (((uint32_t)(x) & CSR_MHSP_CTL_OVF_EN_MASK) >> CSR_MHSP_CTL_OVF_EN_SHIFT)
  3863. /* Bitfield definition for register: MSP_BOUND */
  3864. /*
  3865. * MSP_BOUND (RW)
  3866. *
  3867. * Machine SP Bound
  3868. */
  3869. #define CSR_MSP_BOUND_MSP_BOUND_MASK (0xFFFFFFFFUL)
  3870. #define CSR_MSP_BOUND_MSP_BOUND_SHIFT (0U)
  3871. #define CSR_MSP_BOUND_MSP_BOUND_SET(x) (((uint32_t)(x) << CSR_MSP_BOUND_MSP_BOUND_SHIFT) & CSR_MSP_BOUND_MSP_BOUND_MASK)
  3872. #define CSR_MSP_BOUND_MSP_BOUND_GET(x) (((uint32_t)(x) & CSR_MSP_BOUND_MSP_BOUND_MASK) >> CSR_MSP_BOUND_MSP_BOUND_SHIFT)
  3873. /* Bitfield definition for register: MSP_BASE */
  3874. /*
  3875. * SP_BASE (RW)
  3876. *
  3877. * Machine SP base
  3878. */
  3879. #define CSR_MSP_BASE_SP_BASE_MASK (0xFFFFFFFFUL)
  3880. #define CSR_MSP_BASE_SP_BASE_SHIFT (0U)
  3881. #define CSR_MSP_BASE_SP_BASE_SET(x) (((uint32_t)(x) << CSR_MSP_BASE_SP_BASE_SHIFT) & CSR_MSP_BASE_SP_BASE_MASK)
  3882. #define CSR_MSP_BASE_SP_BASE_GET(x) (((uint32_t)(x) & CSR_MSP_BASE_SP_BASE_MASK) >> CSR_MSP_BASE_SP_BASE_SHIFT)
  3883. /* Bitfield definition for register: MDCAUSE */
  3884. /*
  3885. * PM (RW)
  3886. *
  3887. * When mcause is imprecise exception (in the form of an interrupt), the PM field records the privileged mode of the instruction that caused the imprecise exception. The PM field encoding is defined as follows:
  3888. * 0: User mode
  3889. * 1: Supervisor mode
  3890. * 2: Reserved
  3891. * 3: Machine mode
  3892. */
  3893. #define CSR_MDCAUSE_PM_MASK (0x60U)
  3894. #define CSR_MDCAUSE_PM_SHIFT (5U)
  3895. #define CSR_MDCAUSE_PM_SET(x) (((uint32_t)(x) << CSR_MDCAUSE_PM_SHIFT) & CSR_MDCAUSE_PM_MASK)
  3896. #define CSR_MDCAUSE_PM_GET(x) (((uint32_t)(x) & CSR_MDCAUSE_PM_MASK) >> CSR_MDCAUSE_PM_SHIFT)
  3897. /*
  3898. * MDCAUSE (RW)
  3899. *
  3900. * This register further disambiguates causes of traps recorded in the mcause register.
  3901. * The value of MDCAUSE for precise exception:
  3902. * When mcause == 1 (Instruction access fault):
  3903. * 0:Reserved; 1:ECC/Parity error; 2:PMP instruction access violation; 3:Bus error; 4:PMA empty hole access
  3904. * When mcause == 2 (Illegal instruction):
  3905. * 0:Please parse the mtval CSR; 1:FP disabled exception; 2:ACE disabled exception
  3906. * When mcause == 5 (Load access fault):
  3907. * 0:Reserved; 1:ECC/Parity error; 2:PMP load access violation; 3:Bus error; 4:Misaligned address; 5:PMA empty hole access; 6:PMA attribute inconsistency; 7:PMA NAMO exception
  3908. * When mcause == 7 (Store access fault):
  3909. * 0:Reserved; 1:ECC/Parity error; 2:PMP load access violation; 3:Bus error; 4:Misaligned address; 5:PMA empty hole access; 6:PMA attribute inconsistency; 7:PMA NAMO exception
  3910. * The value of MDCAUSE for imprecise exception:
  3911. * When mcause == Local Interrupt 16 or Local Interrupt 272 (16 + 256) (ECC error local interrupt)
  3912. * 0:Reserved; 1:LM slave port ECC/Parity error; 2:Imprecise store ECC/Parity error; 3:Imprecise load ECC/Parity error
  3913. * When mcause == Local Interrupt 17 or Local Interrupt 273 (17 + 256) (Bus read/write transaction error local interrupt)
  3914. * 0:Reserved; 1:Bus read error; 2:Bus write error; 3:PMP error caused by load instructions; 4:PMP error caused by store instructions; 5:PMA error caused by load instructions; 6:PMA error caused by store instructions
  3915. */
  3916. #define CSR_MDCAUSE_MDCAUSE_MASK (0x7U)
  3917. #define CSR_MDCAUSE_MDCAUSE_SHIFT (0U)
  3918. #define CSR_MDCAUSE_MDCAUSE_SET(x) (((uint32_t)(x) << CSR_MDCAUSE_MDCAUSE_SHIFT) & CSR_MDCAUSE_MDCAUSE_MASK)
  3919. #define CSR_MDCAUSE_MDCAUSE_GET(x) (((uint32_t)(x) & CSR_MDCAUSE_MDCAUSE_MASK) >> CSR_MDCAUSE_MDCAUSE_SHIFT)
  3920. /* Bitfield definition for register: MCACHE_CTL */
  3921. /*
  3922. * DC_WAROUND (RW)
  3923. *
  3924. * Cache Write-Around threshold
  3925. * 0:Disables streaming. All cacheable write misses allocate a cache line according to PMA settings.
  3926. * 1:Stop allocating D-Cache entries regardless of PMA settings after consecutive stores to 4 cache lines.
  3927. * 2:Stop allocating D-Cache entries regardless of PMA settings after consecutive stores to 64 cache lines.
  3928. * 3:Stop allocating D-Cache entries regardless of PMA settings after consecutive stores to 128 cache lines.
  3929. */
  3930. #define CSR_MCACHE_CTL_DC_WAROUND_MASK (0x6000U)
  3931. #define CSR_MCACHE_CTL_DC_WAROUND_SHIFT (13U)
  3932. #define CSR_MCACHE_CTL_DC_WAROUND_SET(x) (((uint32_t)(x) << CSR_MCACHE_CTL_DC_WAROUND_SHIFT) & CSR_MCACHE_CTL_DC_WAROUND_MASK)
  3933. #define CSR_MCACHE_CTL_DC_WAROUND_GET(x) (((uint32_t)(x) & CSR_MCACHE_CTL_DC_WAROUND_MASK) >> CSR_MCACHE_CTL_DC_WAROUND_SHIFT)
  3934. /*
  3935. * DC_FIRST_WORD (RO)
  3936. *
  3937. * Cache miss allocation filling policy
  3938. * 0:Cache line data is returned critical (double) word first
  3939. * 1:Cache line data is returned the lowest address (double) word first
  3940. */
  3941. #define CSR_MCACHE_CTL_DC_FIRST_WORD_MASK (0x1000U)
  3942. #define CSR_MCACHE_CTL_DC_FIRST_WORD_SHIFT (12U)
  3943. #define CSR_MCACHE_CTL_DC_FIRST_WORD_GET(x) (((uint32_t)(x) & CSR_MCACHE_CTL_DC_FIRST_WORD_MASK) >> CSR_MCACHE_CTL_DC_FIRST_WORD_SHIFT)
  3944. /*
  3945. * IC_FIRST_WORD (RO)
  3946. *
  3947. * Cache miss allocation filling policy
  3948. * 0:Cache line data is returned critical (double) word first
  3949. * 1:Cache line data is returned the lowest address (double) word first
  3950. */
  3951. #define CSR_MCACHE_CTL_IC_FIRST_WORD_MASK (0x800U)
  3952. #define CSR_MCACHE_CTL_IC_FIRST_WORD_SHIFT (11U)
  3953. #define CSR_MCACHE_CTL_IC_FIRST_WORD_GET(x) (((uint32_t)(x) & CSR_MCACHE_CTL_IC_FIRST_WORD_MASK) >> CSR_MCACHE_CTL_IC_FIRST_WORD_SHIFT)
  3954. /*
  3955. * DPREF_EN (RW)
  3956. *
  3957. * This bit controls hardware prefetch for load/store accesses to cacheable memory regions when D-Cache size is not 0
  3958. * 0:Disable hardware prefetch on load/store memory accesses
  3959. * 1:Enable hardware prefetch on load/store memory accesses
  3960. */
  3961. #define CSR_MCACHE_CTL_DPREF_EN_MASK (0x400U)
  3962. #define CSR_MCACHE_CTL_DPREF_EN_SHIFT (10U)
  3963. #define CSR_MCACHE_CTL_DPREF_EN_SET(x) (((uint32_t)(x) << CSR_MCACHE_CTL_DPREF_EN_SHIFT) & CSR_MCACHE_CTL_DPREF_EN_MASK)
  3964. #define CSR_MCACHE_CTL_DPREF_EN_GET(x) (((uint32_t)(x) & CSR_MCACHE_CTL_DPREF_EN_MASK) >> CSR_MCACHE_CTL_DPREF_EN_SHIFT)
  3965. /*
  3966. * IPREF_EN (RW)
  3967. *
  3968. * This bit controls hardware prefetch for instruction fetches to cacheable memory regions when Cache size is not 0
  3969. * 0:Disable hardware prefetch on instruction fetches
  3970. * 1:Enable hardware prefetch on instruction fetches
  3971. */
  3972. #define CSR_MCACHE_CTL_IPREF_EN_MASK (0x200U)
  3973. #define CSR_MCACHE_CTL_IPREF_EN_SHIFT (9U)
  3974. #define CSR_MCACHE_CTL_IPREF_EN_SET(x) (((uint32_t)(x) << CSR_MCACHE_CTL_IPREF_EN_SHIFT) & CSR_MCACHE_CTL_IPREF_EN_MASK)
  3975. #define CSR_MCACHE_CTL_IPREF_EN_GET(x) (((uint32_t)(x) & CSR_MCACHE_CTL_IPREF_EN_MASK) >> CSR_MCACHE_CTL_IPREF_EN_SHIFT)
  3976. /*
  3977. * CCTL_SUEN (RW)
  3978. *
  3979. * Enable bit for Superuser-mode and User-mode software to access ucctlbeginaddr and ucctlcommand CSRs
  3980. * 0:Disable ucctlbeginaddr and ucctlcommand accesses in S/U mode
  3981. * 1:Enable ucctlbeginaddr and ucctlcommand accesses in S/U mode
  3982. */
  3983. #define CSR_MCACHE_CTL_CCTL_SUEN_MASK (0x100U)
  3984. #define CSR_MCACHE_CTL_CCTL_SUEN_SHIFT (8U)
  3985. #define CSR_MCACHE_CTL_CCTL_SUEN_SET(x) (((uint32_t)(x) << CSR_MCACHE_CTL_CCTL_SUEN_SHIFT) & CSR_MCACHE_CTL_CCTL_SUEN_MASK)
  3986. #define CSR_MCACHE_CTL_CCTL_SUEN_GET(x) (((uint32_t)(x) & CSR_MCACHE_CTL_CCTL_SUEN_MASK) >> CSR_MCACHE_CTL_CCTL_SUEN_SHIFT)
  3987. /*
  3988. * DC_RWECC (RW)
  3989. *
  3990. * Controls diagnostic accesses of ECC codes of the data cache RAMs. It is set to enable CCTL operations to access the ECC codes. This bit can be set for injecting ECC errors to test the ECC handler
  3991. * 0:Disable diagnostic accesses of ECC codes
  3992. * 1:Enable diagnostic accesses of ECC codes
  3993. */
  3994. #define CSR_MCACHE_CTL_DC_RWECC_MASK (0x80U)
  3995. #define CSR_MCACHE_CTL_DC_RWECC_SHIFT (7U)
  3996. #define CSR_MCACHE_CTL_DC_RWECC_SET(x) (((uint32_t)(x) << CSR_MCACHE_CTL_DC_RWECC_SHIFT) & CSR_MCACHE_CTL_DC_RWECC_MASK)
  3997. #define CSR_MCACHE_CTL_DC_RWECC_GET(x) (((uint32_t)(x) & CSR_MCACHE_CTL_DC_RWECC_MASK) >> CSR_MCACHE_CTL_DC_RWECC_SHIFT)
  3998. /*
  3999. * IC_RWECC (RW)
  4000. *
  4001. * Controls diagnostic accesses of ECC codes of the instruction cache RAMs. It is set to enable CCTL operations to access the ECC codes . This bit can be set for injecting ECC errors to test the ECC handler.
  4002. * 0:Disable diagnostic accesses of ECC codes
  4003. * 1:Enable diagnostic accesses of ECC codes
  4004. */
  4005. #define CSR_MCACHE_CTL_IC_RWECC_MASK (0x40U)
  4006. #define CSR_MCACHE_CTL_IC_RWECC_SHIFT (6U)
  4007. #define CSR_MCACHE_CTL_IC_RWECC_SET(x) (((uint32_t)(x) << CSR_MCACHE_CTL_IC_RWECC_SHIFT) & CSR_MCACHE_CTL_IC_RWECC_MASK)
  4008. #define CSR_MCACHE_CTL_IC_RWECC_GET(x) (((uint32_t)(x) & CSR_MCACHE_CTL_IC_RWECC_MASK) >> CSR_MCACHE_CTL_IC_RWECC_SHIFT)
  4009. /*
  4010. * DC_ECCEN (RW)
  4011. *
  4012. * Parity/ECC error checking enable control for the
  4013. * data cache.
  4014. * 0:Disable parity/ECC
  4015. * 1:Reserved
  4016. * 2:Generate exceptions only on uncorrectable parity/ECC errors
  4017. * 3:Generate exceptions on any type of parity/ECC errors
  4018. */
  4019. #define CSR_MCACHE_CTL_DC_ECCEN_MASK (0x30U)
  4020. #define CSR_MCACHE_CTL_DC_ECCEN_SHIFT (4U)
  4021. #define CSR_MCACHE_CTL_DC_ECCEN_SET(x) (((uint32_t)(x) << CSR_MCACHE_CTL_DC_ECCEN_SHIFT) & CSR_MCACHE_CTL_DC_ECCEN_MASK)
  4022. #define CSR_MCACHE_CTL_DC_ECCEN_GET(x) (((uint32_t)(x) & CSR_MCACHE_CTL_DC_ECCEN_MASK) >> CSR_MCACHE_CTL_DC_ECCEN_SHIFT)
  4023. /*
  4024. * IC_ECCEN (RW)
  4025. *
  4026. * Parity/ECC error checking enable control for the
  4027. * instruction cache
  4028. * 0:Disable parity/ECC
  4029. * 1:Reserved
  4030. * 2:Generate exceptions only on uncorrectable parity/ECC errors
  4031. * 3:Generate exceptions on any type of parity/ECC errors
  4032. */
  4033. #define CSR_MCACHE_CTL_IC_ECCEN_MASK (0xCU)
  4034. #define CSR_MCACHE_CTL_IC_ECCEN_SHIFT (2U)
  4035. #define CSR_MCACHE_CTL_IC_ECCEN_SET(x) (((uint32_t)(x) << CSR_MCACHE_CTL_IC_ECCEN_SHIFT) & CSR_MCACHE_CTL_IC_ECCEN_MASK)
  4036. #define CSR_MCACHE_CTL_IC_ECCEN_GET(x) (((uint32_t)(x) & CSR_MCACHE_CTL_IC_ECCEN_MASK) >> CSR_MCACHE_CTL_IC_ECCEN_SHIFT)
  4037. /*
  4038. * DC_EN (RW)
  4039. *
  4040. * Controls if the data cache is enabled or not.
  4041. * 0:D-Cache is disabled
  4042. * 1:D-Cache is enabled
  4043. */
  4044. #define CSR_MCACHE_CTL_DC_EN_MASK (0x2U)
  4045. #define CSR_MCACHE_CTL_DC_EN_SHIFT (1U)
  4046. #define CSR_MCACHE_CTL_DC_EN_SET(x) (((uint32_t)(x) << CSR_MCACHE_CTL_DC_EN_SHIFT) & CSR_MCACHE_CTL_DC_EN_MASK)
  4047. #define CSR_MCACHE_CTL_DC_EN_GET(x) (((uint32_t)(x) & CSR_MCACHE_CTL_DC_EN_MASK) >> CSR_MCACHE_CTL_DC_EN_SHIFT)
  4048. /*
  4049. * IC_EN (RW)
  4050. *
  4051. * Controls if the instruction cache is enabled or not.
  4052. * 0:I-Cache is disabled
  4053. * 1:I-Cache is enabled
  4054. */
  4055. #define CSR_MCACHE_CTL_IC_EN_MASK (0x1U)
  4056. #define CSR_MCACHE_CTL_IC_EN_SHIFT (0U)
  4057. #define CSR_MCACHE_CTL_IC_EN_SET(x) (((uint32_t)(x) << CSR_MCACHE_CTL_IC_EN_SHIFT) & CSR_MCACHE_CTL_IC_EN_MASK)
  4058. #define CSR_MCACHE_CTL_IC_EN_GET(x) (((uint32_t)(x) & CSR_MCACHE_CTL_IC_EN_MASK) >> CSR_MCACHE_CTL_IC_EN_SHIFT)
  4059. /* Bitfield definition for register: MCCTLBEGINADDR */
  4060. /*
  4061. * VA (RW)
  4062. *
  4063. * This register holds the address information required by CCTL operations
  4064. */
  4065. #define CSR_MCCTLBEGINADDR_VA_MASK (0xFFFFFFFFUL)
  4066. #define CSR_MCCTLBEGINADDR_VA_SHIFT (0U)
  4067. #define CSR_MCCTLBEGINADDR_VA_SET(x) (((uint32_t)(x) << CSR_MCCTLBEGINADDR_VA_SHIFT) & CSR_MCCTLBEGINADDR_VA_MASK)
  4068. #define CSR_MCCTLBEGINADDR_VA_GET(x) (((uint32_t)(x) & CSR_MCCTLBEGINADDR_VA_MASK) >> CSR_MCCTLBEGINADDR_VA_SHIFT)
  4069. /* Bitfield definition for register: MCCTLCOMMAND */
  4070. /*
  4071. * VA (RW)
  4072. *
  4073. * See CCTL Command Definition Table
  4074. */
  4075. #define CSR_MCCTLCOMMAND_VA_MASK (0x1FU)
  4076. #define CSR_MCCTLCOMMAND_VA_SHIFT (0U)
  4077. #define CSR_MCCTLCOMMAND_VA_SET(x) (((uint32_t)(x) << CSR_MCCTLCOMMAND_VA_SHIFT) & CSR_MCCTLCOMMAND_VA_MASK)
  4078. #define CSR_MCCTLCOMMAND_VA_GET(x) (((uint32_t)(x) & CSR_MCCTLCOMMAND_VA_MASK) >> CSR_MCCTLCOMMAND_VA_SHIFT)
  4079. /* Bitfield definition for register: MCCTLDATA */
  4080. /*
  4081. * VA (RW)
  4082. *
  4083. * See CCTL Commands Which Access mcctldata Table
  4084. */
  4085. #define CSR_MCCTLDATA_VA_MASK (0x1FU)
  4086. #define CSR_MCCTLDATA_VA_SHIFT (0U)
  4087. #define CSR_MCCTLDATA_VA_SET(x) (((uint32_t)(x) << CSR_MCCTLDATA_VA_SHIFT) & CSR_MCCTLDATA_VA_MASK)
  4088. #define CSR_MCCTLDATA_VA_GET(x) (((uint32_t)(x) & CSR_MCCTLDATA_VA_MASK) >> CSR_MCCTLDATA_VA_SHIFT)
  4089. /* Bitfield definition for register: MCOUNTERWEN */
  4090. /*
  4091. * HPM6 (RW)
  4092. *
  4093. * See register description
  4094. */
  4095. #define CSR_MCOUNTERWEN_HPM6_MASK (0x40U)
  4096. #define CSR_MCOUNTERWEN_HPM6_SHIFT (6U)
  4097. #define CSR_MCOUNTERWEN_HPM6_SET(x) (((uint32_t)(x) << CSR_MCOUNTERWEN_HPM6_SHIFT) & CSR_MCOUNTERWEN_HPM6_MASK)
  4098. #define CSR_MCOUNTERWEN_HPM6_GET(x) (((uint32_t)(x) & CSR_MCOUNTERWEN_HPM6_MASK) >> CSR_MCOUNTERWEN_HPM6_SHIFT)
  4099. /*
  4100. * HPM5 (RW)
  4101. *
  4102. * See register description
  4103. */
  4104. #define CSR_MCOUNTERWEN_HPM5_MASK (0x20U)
  4105. #define CSR_MCOUNTERWEN_HPM5_SHIFT (5U)
  4106. #define CSR_MCOUNTERWEN_HPM5_SET(x) (((uint32_t)(x) << CSR_MCOUNTERWEN_HPM5_SHIFT) & CSR_MCOUNTERWEN_HPM5_MASK)
  4107. #define CSR_MCOUNTERWEN_HPM5_GET(x) (((uint32_t)(x) & CSR_MCOUNTERWEN_HPM5_MASK) >> CSR_MCOUNTERWEN_HPM5_SHIFT)
  4108. /*
  4109. * HPM4 (RW)
  4110. *
  4111. * See register description
  4112. */
  4113. #define CSR_MCOUNTERWEN_HPM4_MASK (0x10U)
  4114. #define CSR_MCOUNTERWEN_HPM4_SHIFT (4U)
  4115. #define CSR_MCOUNTERWEN_HPM4_SET(x) (((uint32_t)(x) << CSR_MCOUNTERWEN_HPM4_SHIFT) & CSR_MCOUNTERWEN_HPM4_MASK)
  4116. #define CSR_MCOUNTERWEN_HPM4_GET(x) (((uint32_t)(x) & CSR_MCOUNTERWEN_HPM4_MASK) >> CSR_MCOUNTERWEN_HPM4_SHIFT)
  4117. /*
  4118. * HPM3 (RW)
  4119. *
  4120. * See register description
  4121. */
  4122. #define CSR_MCOUNTERWEN_HPM3_MASK (0x8U)
  4123. #define CSR_MCOUNTERWEN_HPM3_SHIFT (3U)
  4124. #define CSR_MCOUNTERWEN_HPM3_SET(x) (((uint32_t)(x) << CSR_MCOUNTERWEN_HPM3_SHIFT) & CSR_MCOUNTERWEN_HPM3_MASK)
  4125. #define CSR_MCOUNTERWEN_HPM3_GET(x) (((uint32_t)(x) & CSR_MCOUNTERWEN_HPM3_MASK) >> CSR_MCOUNTERWEN_HPM3_SHIFT)
  4126. /*
  4127. * IR (RW)
  4128. *
  4129. * See register description
  4130. */
  4131. #define CSR_MCOUNTERWEN_IR_MASK (0x4U)
  4132. #define CSR_MCOUNTERWEN_IR_SHIFT (2U)
  4133. #define CSR_MCOUNTERWEN_IR_SET(x) (((uint32_t)(x) << CSR_MCOUNTERWEN_IR_SHIFT) & CSR_MCOUNTERWEN_IR_MASK)
  4134. #define CSR_MCOUNTERWEN_IR_GET(x) (((uint32_t)(x) & CSR_MCOUNTERWEN_IR_MASK) >> CSR_MCOUNTERWEN_IR_SHIFT)
  4135. /*
  4136. * CY (RW)
  4137. *
  4138. * See register description
  4139. */
  4140. #define CSR_MCOUNTERWEN_CY_MASK (0x1U)
  4141. #define CSR_MCOUNTERWEN_CY_SHIFT (0U)
  4142. #define CSR_MCOUNTERWEN_CY_SET(x) (((uint32_t)(x) << CSR_MCOUNTERWEN_CY_SHIFT) & CSR_MCOUNTERWEN_CY_MASK)
  4143. #define CSR_MCOUNTERWEN_CY_GET(x) (((uint32_t)(x) & CSR_MCOUNTERWEN_CY_MASK) >> CSR_MCOUNTERWEN_CY_SHIFT)
  4144. /* Bitfield definition for register: MCOUNTERINTEN */
  4145. /*
  4146. * HPM6 (RW)
  4147. *
  4148. * See register description
  4149. */
  4150. #define CSR_MCOUNTERINTEN_HPM6_MASK (0x40U)
  4151. #define CSR_MCOUNTERINTEN_HPM6_SHIFT (6U)
  4152. #define CSR_MCOUNTERINTEN_HPM6_SET(x) (((uint32_t)(x) << CSR_MCOUNTERINTEN_HPM6_SHIFT) & CSR_MCOUNTERINTEN_HPM6_MASK)
  4153. #define CSR_MCOUNTERINTEN_HPM6_GET(x) (((uint32_t)(x) & CSR_MCOUNTERINTEN_HPM6_MASK) >> CSR_MCOUNTERINTEN_HPM6_SHIFT)
  4154. /*
  4155. * HPM5 (RW)
  4156. *
  4157. * See register description
  4158. */
  4159. #define CSR_MCOUNTERINTEN_HPM5_MASK (0x20U)
  4160. #define CSR_MCOUNTERINTEN_HPM5_SHIFT (5U)
  4161. #define CSR_MCOUNTERINTEN_HPM5_SET(x) (((uint32_t)(x) << CSR_MCOUNTERINTEN_HPM5_SHIFT) & CSR_MCOUNTERINTEN_HPM5_MASK)
  4162. #define CSR_MCOUNTERINTEN_HPM5_GET(x) (((uint32_t)(x) & CSR_MCOUNTERINTEN_HPM5_MASK) >> CSR_MCOUNTERINTEN_HPM5_SHIFT)
  4163. /*
  4164. * HPM4 (RW)
  4165. *
  4166. * See register description
  4167. */
  4168. #define CSR_MCOUNTERINTEN_HPM4_MASK (0x10U)
  4169. #define CSR_MCOUNTERINTEN_HPM4_SHIFT (4U)
  4170. #define CSR_MCOUNTERINTEN_HPM4_SET(x) (((uint32_t)(x) << CSR_MCOUNTERINTEN_HPM4_SHIFT) & CSR_MCOUNTERINTEN_HPM4_MASK)
  4171. #define CSR_MCOUNTERINTEN_HPM4_GET(x) (((uint32_t)(x) & CSR_MCOUNTERINTEN_HPM4_MASK) >> CSR_MCOUNTERINTEN_HPM4_SHIFT)
  4172. /*
  4173. * HPM3 (RW)
  4174. *
  4175. * See register description
  4176. */
  4177. #define CSR_MCOUNTERINTEN_HPM3_MASK (0x8U)
  4178. #define CSR_MCOUNTERINTEN_HPM3_SHIFT (3U)
  4179. #define CSR_MCOUNTERINTEN_HPM3_SET(x) (((uint32_t)(x) << CSR_MCOUNTERINTEN_HPM3_SHIFT) & CSR_MCOUNTERINTEN_HPM3_MASK)
  4180. #define CSR_MCOUNTERINTEN_HPM3_GET(x) (((uint32_t)(x) & CSR_MCOUNTERINTEN_HPM3_MASK) >> CSR_MCOUNTERINTEN_HPM3_SHIFT)
  4181. /*
  4182. * IR (RW)
  4183. *
  4184. * See register description
  4185. */
  4186. #define CSR_MCOUNTERINTEN_IR_MASK (0x4U)
  4187. #define CSR_MCOUNTERINTEN_IR_SHIFT (2U)
  4188. #define CSR_MCOUNTERINTEN_IR_SET(x) (((uint32_t)(x) << CSR_MCOUNTERINTEN_IR_SHIFT) & CSR_MCOUNTERINTEN_IR_MASK)
  4189. #define CSR_MCOUNTERINTEN_IR_GET(x) (((uint32_t)(x) & CSR_MCOUNTERINTEN_IR_MASK) >> CSR_MCOUNTERINTEN_IR_SHIFT)
  4190. /*
  4191. * CY (RW)
  4192. *
  4193. * See register description
  4194. */
  4195. #define CSR_MCOUNTERINTEN_CY_MASK (0x1U)
  4196. #define CSR_MCOUNTERINTEN_CY_SHIFT (0U)
  4197. #define CSR_MCOUNTERINTEN_CY_SET(x) (((uint32_t)(x) << CSR_MCOUNTERINTEN_CY_SHIFT) & CSR_MCOUNTERINTEN_CY_MASK)
  4198. #define CSR_MCOUNTERINTEN_CY_GET(x) (((uint32_t)(x) & CSR_MCOUNTERINTEN_CY_MASK) >> CSR_MCOUNTERINTEN_CY_SHIFT)
  4199. /* Bitfield definition for register: MMISC_CTL */
  4200. /*
  4201. * NBLD_EN (RW)
  4202. *
  4203. * This field controls the blocking behavior of load instructions. When this bit is clear, load instructions accessing non-device regions are blocking. When this bit is set, load instructions will not be blocking on such occasions and bus errors will no longer be reported synchronously.
  4204. * 0:Load to memory regions are blocking.
  4205. * 1:Load to memory regions are non-blocking.
  4206. */
  4207. #define CSR_MMISC_CTL_NBLD_EN_MASK (0x100U)
  4208. #define CSR_MMISC_CTL_NBLD_EN_SHIFT (8U)
  4209. #define CSR_MMISC_CTL_NBLD_EN_SET(x) (((uint32_t)(x) << CSR_MMISC_CTL_NBLD_EN_SHIFT) & CSR_MMISC_CTL_NBLD_EN_MASK)
  4210. #define CSR_MMISC_CTL_NBLD_EN_GET(x) (((uint32_t)(x) & CSR_MMISC_CTL_NBLD_EN_MASK) >> CSR_MMISC_CTL_NBLD_EN_SHIFT)
  4211. /*
  4212. * MSA_UNA (RW)
  4213. *
  4214. * This field controls whether the load/store instructions can access misaligned memory locations without generating Address Misaligned exceptions.
  4215. * Supported instructions: LW/LH/LHU/SW/SH
  4216. * 0:Misaligned accesses generate Address Misaligned exceptions.
  4217. * 1:Misaligned accesses generate Address Misaligned exceptions.
  4218. */
  4219. #define CSR_MMISC_CTL_MSA_UNA_MASK (0x40U)
  4220. #define CSR_MMISC_CTL_MSA_UNA_SHIFT (6U)
  4221. #define CSR_MMISC_CTL_MSA_UNA_SET(x) (((uint32_t)(x) << CSR_MMISC_CTL_MSA_UNA_SHIFT) & CSR_MMISC_CTL_MSA_UNA_MASK)
  4222. #define CSR_MMISC_CTL_MSA_UNA_GET(x) (((uint32_t)(x) & CSR_MMISC_CTL_MSA_UNA_MASK) >> CSR_MMISC_CTL_MSA_UNA_SHIFT)
  4223. /*
  4224. * BRPE (RW)
  4225. *
  4226. * Branch prediction enable bit. This bit controls all branch prediction structures.
  4227. * 0:Disabled
  4228. * 1:Enabled
  4229. * This bit is hardwired to 0 if branch prediction structure is not supported.
  4230. */
  4231. #define CSR_MMISC_CTL_BRPE_MASK (0x8U)
  4232. #define CSR_MMISC_CTL_BRPE_SHIFT (3U)
  4233. #define CSR_MMISC_CTL_BRPE_SET(x) (((uint32_t)(x) << CSR_MMISC_CTL_BRPE_SHIFT) & CSR_MMISC_CTL_BRPE_MASK)
  4234. #define CSR_MMISC_CTL_BRPE_GET(x) (((uint32_t)(x) & CSR_MMISC_CTL_BRPE_MASK) >> CSR_MMISC_CTL_BRPE_SHIFT)
  4235. /*
  4236. * RVCOMPM (RW)
  4237. *
  4238. * RISC-V compatibility mode enable bit. If the compatibility mode is turned on, all specific instructions become reserved instructions
  4239. * 0:Disabled
  4240. * 1:Enabled
  4241. */
  4242. #define CSR_MMISC_CTL_RVCOMPM_MASK (0x4U)
  4243. #define CSR_MMISC_CTL_RVCOMPM_SHIFT (2U)
  4244. #define CSR_MMISC_CTL_RVCOMPM_SET(x) (((uint32_t)(x) << CSR_MMISC_CTL_RVCOMPM_SHIFT) & CSR_MMISC_CTL_RVCOMPM_MASK)
  4245. #define CSR_MMISC_CTL_RVCOMPM_GET(x) (((uint32_t)(x) & CSR_MMISC_CTL_RVCOMPM_MASK) >> CSR_MMISC_CTL_RVCOMPM_SHIFT)
  4246. /*
  4247. * VEC_PLIC (RW)
  4248. *
  4249. * Selects the operation mode of PLIC:
  4250. * 0:Regular mode
  4251. * 1:Vector mode
  4252. * Please note that both this bit and the vector mode enable bit (VECTORED) of the Feature Enable Register in NCEPLIC100 should be turned on for the vectored interrupt support to work correctly. This bit is hardwired to 0 if the vectored PLIC feature is not supported.
  4253. */
  4254. #define CSR_MMISC_CTL_VEC_PLIC_MASK (0x2U)
  4255. #define CSR_MMISC_CTL_VEC_PLIC_SHIFT (1U)
  4256. #define CSR_MMISC_CTL_VEC_PLIC_SET(x) (((uint32_t)(x) << CSR_MMISC_CTL_VEC_PLIC_SHIFT) & CSR_MMISC_CTL_VEC_PLIC_MASK)
  4257. #define CSR_MMISC_CTL_VEC_PLIC_GET(x) (((uint32_t)(x) & CSR_MMISC_CTL_VEC_PLIC_MASK) >> CSR_MMISC_CTL_VEC_PLIC_SHIFT)
  4258. /* Bitfield definition for register: MCOUNTERMASK_M */
  4259. /*
  4260. * HPM6 (RW)
  4261. *
  4262. * See register description
  4263. */
  4264. #define CSR_MCOUNTERMASK_M_HPM6_MASK (0x40U)
  4265. #define CSR_MCOUNTERMASK_M_HPM6_SHIFT (6U)
  4266. #define CSR_MCOUNTERMASK_M_HPM6_SET(x) (((uint32_t)(x) << CSR_MCOUNTERMASK_M_HPM6_SHIFT) & CSR_MCOUNTERMASK_M_HPM6_MASK)
  4267. #define CSR_MCOUNTERMASK_M_HPM6_GET(x) (((uint32_t)(x) & CSR_MCOUNTERMASK_M_HPM6_MASK) >> CSR_MCOUNTERMASK_M_HPM6_SHIFT)
  4268. /*
  4269. * HPM5 (RW)
  4270. *
  4271. * See register description
  4272. */
  4273. #define CSR_MCOUNTERMASK_M_HPM5_MASK (0x20U)
  4274. #define CSR_MCOUNTERMASK_M_HPM5_SHIFT (5U)
  4275. #define CSR_MCOUNTERMASK_M_HPM5_SET(x) (((uint32_t)(x) << CSR_MCOUNTERMASK_M_HPM5_SHIFT) & CSR_MCOUNTERMASK_M_HPM5_MASK)
  4276. #define CSR_MCOUNTERMASK_M_HPM5_GET(x) (((uint32_t)(x) & CSR_MCOUNTERMASK_M_HPM5_MASK) >> CSR_MCOUNTERMASK_M_HPM5_SHIFT)
  4277. /*
  4278. * HPM4 (RW)
  4279. *
  4280. * See register description
  4281. */
  4282. #define CSR_MCOUNTERMASK_M_HPM4_MASK (0x10U)
  4283. #define CSR_MCOUNTERMASK_M_HPM4_SHIFT (4U)
  4284. #define CSR_MCOUNTERMASK_M_HPM4_SET(x) (((uint32_t)(x) << CSR_MCOUNTERMASK_M_HPM4_SHIFT) & CSR_MCOUNTERMASK_M_HPM4_MASK)
  4285. #define CSR_MCOUNTERMASK_M_HPM4_GET(x) (((uint32_t)(x) & CSR_MCOUNTERMASK_M_HPM4_MASK) >> CSR_MCOUNTERMASK_M_HPM4_SHIFT)
  4286. /*
  4287. * HPM3 (RW)
  4288. *
  4289. * See register description
  4290. */
  4291. #define CSR_MCOUNTERMASK_M_HPM3_MASK (0x8U)
  4292. #define CSR_MCOUNTERMASK_M_HPM3_SHIFT (3U)
  4293. #define CSR_MCOUNTERMASK_M_HPM3_SET(x) (((uint32_t)(x) << CSR_MCOUNTERMASK_M_HPM3_SHIFT) & CSR_MCOUNTERMASK_M_HPM3_MASK)
  4294. #define CSR_MCOUNTERMASK_M_HPM3_GET(x) (((uint32_t)(x) & CSR_MCOUNTERMASK_M_HPM3_MASK) >> CSR_MCOUNTERMASK_M_HPM3_SHIFT)
  4295. /*
  4296. * IR (RW)
  4297. *
  4298. * See register description
  4299. */
  4300. #define CSR_MCOUNTERMASK_M_IR_MASK (0x4U)
  4301. #define CSR_MCOUNTERMASK_M_IR_SHIFT (2U)
  4302. #define CSR_MCOUNTERMASK_M_IR_SET(x) (((uint32_t)(x) << CSR_MCOUNTERMASK_M_IR_SHIFT) & CSR_MCOUNTERMASK_M_IR_MASK)
  4303. #define CSR_MCOUNTERMASK_M_IR_GET(x) (((uint32_t)(x) & CSR_MCOUNTERMASK_M_IR_MASK) >> CSR_MCOUNTERMASK_M_IR_SHIFT)
  4304. /*
  4305. * CY (RW)
  4306. *
  4307. * See register description
  4308. */
  4309. #define CSR_MCOUNTERMASK_M_CY_MASK (0x1U)
  4310. #define CSR_MCOUNTERMASK_M_CY_SHIFT (0U)
  4311. #define CSR_MCOUNTERMASK_M_CY_SET(x) (((uint32_t)(x) << CSR_MCOUNTERMASK_M_CY_SHIFT) & CSR_MCOUNTERMASK_M_CY_MASK)
  4312. #define CSR_MCOUNTERMASK_M_CY_GET(x) (((uint32_t)(x) & CSR_MCOUNTERMASK_M_CY_MASK) >> CSR_MCOUNTERMASK_M_CY_SHIFT)
  4313. /* Bitfield definition for register: MCOUNTERMASK_S */
  4314. /*
  4315. * HPM6 (RW)
  4316. *
  4317. * See register description
  4318. */
  4319. #define CSR_MCOUNTERMASK_S_HPM6_MASK (0x40U)
  4320. #define CSR_MCOUNTERMASK_S_HPM6_SHIFT (6U)
  4321. #define CSR_MCOUNTERMASK_S_HPM6_SET(x) (((uint32_t)(x) << CSR_MCOUNTERMASK_S_HPM6_SHIFT) & CSR_MCOUNTERMASK_S_HPM6_MASK)
  4322. #define CSR_MCOUNTERMASK_S_HPM6_GET(x) (((uint32_t)(x) & CSR_MCOUNTERMASK_S_HPM6_MASK) >> CSR_MCOUNTERMASK_S_HPM6_SHIFT)
  4323. /*
  4324. * HPM5 (RW)
  4325. *
  4326. * See register description
  4327. */
  4328. #define CSR_MCOUNTERMASK_S_HPM5_MASK (0x20U)
  4329. #define CSR_MCOUNTERMASK_S_HPM5_SHIFT (5U)
  4330. #define CSR_MCOUNTERMASK_S_HPM5_SET(x) (((uint32_t)(x) << CSR_MCOUNTERMASK_S_HPM5_SHIFT) & CSR_MCOUNTERMASK_S_HPM5_MASK)
  4331. #define CSR_MCOUNTERMASK_S_HPM5_GET(x) (((uint32_t)(x) & CSR_MCOUNTERMASK_S_HPM5_MASK) >> CSR_MCOUNTERMASK_S_HPM5_SHIFT)
  4332. /*
  4333. * HPM4 (RW)
  4334. *
  4335. * See register description
  4336. */
  4337. #define CSR_MCOUNTERMASK_S_HPM4_MASK (0x10U)
  4338. #define CSR_MCOUNTERMASK_S_HPM4_SHIFT (4U)
  4339. #define CSR_MCOUNTERMASK_S_HPM4_SET(x) (((uint32_t)(x) << CSR_MCOUNTERMASK_S_HPM4_SHIFT) & CSR_MCOUNTERMASK_S_HPM4_MASK)
  4340. #define CSR_MCOUNTERMASK_S_HPM4_GET(x) (((uint32_t)(x) & CSR_MCOUNTERMASK_S_HPM4_MASK) >> CSR_MCOUNTERMASK_S_HPM4_SHIFT)
  4341. /*
  4342. * HPM3 (RW)
  4343. *
  4344. * See register description
  4345. */
  4346. #define CSR_MCOUNTERMASK_S_HPM3_MASK (0x8U)
  4347. #define CSR_MCOUNTERMASK_S_HPM3_SHIFT (3U)
  4348. #define CSR_MCOUNTERMASK_S_HPM3_SET(x) (((uint32_t)(x) << CSR_MCOUNTERMASK_S_HPM3_SHIFT) & CSR_MCOUNTERMASK_S_HPM3_MASK)
  4349. #define CSR_MCOUNTERMASK_S_HPM3_GET(x) (((uint32_t)(x) & CSR_MCOUNTERMASK_S_HPM3_MASK) >> CSR_MCOUNTERMASK_S_HPM3_SHIFT)
  4350. /*
  4351. * IR (RW)
  4352. *
  4353. * See register description
  4354. */
  4355. #define CSR_MCOUNTERMASK_S_IR_MASK (0x4U)
  4356. #define CSR_MCOUNTERMASK_S_IR_SHIFT (2U)
  4357. #define CSR_MCOUNTERMASK_S_IR_SET(x) (((uint32_t)(x) << CSR_MCOUNTERMASK_S_IR_SHIFT) & CSR_MCOUNTERMASK_S_IR_MASK)
  4358. #define CSR_MCOUNTERMASK_S_IR_GET(x) (((uint32_t)(x) & CSR_MCOUNTERMASK_S_IR_MASK) >> CSR_MCOUNTERMASK_S_IR_SHIFT)
  4359. /*
  4360. * CY (RW)
  4361. *
  4362. * See register description
  4363. */
  4364. #define CSR_MCOUNTERMASK_S_CY_MASK (0x1U)
  4365. #define CSR_MCOUNTERMASK_S_CY_SHIFT (0U)
  4366. #define CSR_MCOUNTERMASK_S_CY_SET(x) (((uint32_t)(x) << CSR_MCOUNTERMASK_S_CY_SHIFT) & CSR_MCOUNTERMASK_S_CY_MASK)
  4367. #define CSR_MCOUNTERMASK_S_CY_GET(x) (((uint32_t)(x) & CSR_MCOUNTERMASK_S_CY_MASK) >> CSR_MCOUNTERMASK_S_CY_SHIFT)
  4368. /* Bitfield definition for register: MCOUNTERMASK_U */
  4369. /*
  4370. * HPM6 (RW)
  4371. *
  4372. * See register description
  4373. */
  4374. #define CSR_MCOUNTERMASK_U_HPM6_MASK (0x40U)
  4375. #define CSR_MCOUNTERMASK_U_HPM6_SHIFT (6U)
  4376. #define CSR_MCOUNTERMASK_U_HPM6_SET(x) (((uint32_t)(x) << CSR_MCOUNTERMASK_U_HPM6_SHIFT) & CSR_MCOUNTERMASK_U_HPM6_MASK)
  4377. #define CSR_MCOUNTERMASK_U_HPM6_GET(x) (((uint32_t)(x) & CSR_MCOUNTERMASK_U_HPM6_MASK) >> CSR_MCOUNTERMASK_U_HPM6_SHIFT)
  4378. /*
  4379. * HPM5 (RW)
  4380. *
  4381. * See register description
  4382. */
  4383. #define CSR_MCOUNTERMASK_U_HPM5_MASK (0x20U)
  4384. #define CSR_MCOUNTERMASK_U_HPM5_SHIFT (5U)
  4385. #define CSR_MCOUNTERMASK_U_HPM5_SET(x) (((uint32_t)(x) << CSR_MCOUNTERMASK_U_HPM5_SHIFT) & CSR_MCOUNTERMASK_U_HPM5_MASK)
  4386. #define CSR_MCOUNTERMASK_U_HPM5_GET(x) (((uint32_t)(x) & CSR_MCOUNTERMASK_U_HPM5_MASK) >> CSR_MCOUNTERMASK_U_HPM5_SHIFT)
  4387. /*
  4388. * HPM4 (RW)
  4389. *
  4390. * See register description
  4391. */
  4392. #define CSR_MCOUNTERMASK_U_HPM4_MASK (0x10U)
  4393. #define CSR_MCOUNTERMASK_U_HPM4_SHIFT (4U)
  4394. #define CSR_MCOUNTERMASK_U_HPM4_SET(x) (((uint32_t)(x) << CSR_MCOUNTERMASK_U_HPM4_SHIFT) & CSR_MCOUNTERMASK_U_HPM4_MASK)
  4395. #define CSR_MCOUNTERMASK_U_HPM4_GET(x) (((uint32_t)(x) & CSR_MCOUNTERMASK_U_HPM4_MASK) >> CSR_MCOUNTERMASK_U_HPM4_SHIFT)
  4396. /*
  4397. * HPM3 (RW)
  4398. *
  4399. * See register description
  4400. */
  4401. #define CSR_MCOUNTERMASK_U_HPM3_MASK (0x8U)
  4402. #define CSR_MCOUNTERMASK_U_HPM3_SHIFT (3U)
  4403. #define CSR_MCOUNTERMASK_U_HPM3_SET(x) (((uint32_t)(x) << CSR_MCOUNTERMASK_U_HPM3_SHIFT) & CSR_MCOUNTERMASK_U_HPM3_MASK)
  4404. #define CSR_MCOUNTERMASK_U_HPM3_GET(x) (((uint32_t)(x) & CSR_MCOUNTERMASK_U_HPM3_MASK) >> CSR_MCOUNTERMASK_U_HPM3_SHIFT)
  4405. /*
  4406. * IR (RW)
  4407. *
  4408. * See register description
  4409. */
  4410. #define CSR_MCOUNTERMASK_U_IR_MASK (0x4U)
  4411. #define CSR_MCOUNTERMASK_U_IR_SHIFT (2U)
  4412. #define CSR_MCOUNTERMASK_U_IR_SET(x) (((uint32_t)(x) << CSR_MCOUNTERMASK_U_IR_SHIFT) & CSR_MCOUNTERMASK_U_IR_MASK)
  4413. #define CSR_MCOUNTERMASK_U_IR_GET(x) (((uint32_t)(x) & CSR_MCOUNTERMASK_U_IR_MASK) >> CSR_MCOUNTERMASK_U_IR_SHIFT)
  4414. /*
  4415. * CY (RW)
  4416. *
  4417. * See register description
  4418. */
  4419. #define CSR_MCOUNTERMASK_U_CY_MASK (0x1U)
  4420. #define CSR_MCOUNTERMASK_U_CY_SHIFT (0U)
  4421. #define CSR_MCOUNTERMASK_U_CY_SET(x) (((uint32_t)(x) << CSR_MCOUNTERMASK_U_CY_SHIFT) & CSR_MCOUNTERMASK_U_CY_MASK)
  4422. #define CSR_MCOUNTERMASK_U_CY_GET(x) (((uint32_t)(x) & CSR_MCOUNTERMASK_U_CY_MASK) >> CSR_MCOUNTERMASK_U_CY_SHIFT)
  4423. /* Bitfield definition for register: MCOUNTEROVF */
  4424. /*
  4425. * HPM6 (RW)
  4426. *
  4427. * See register description
  4428. */
  4429. #define CSR_MCOUNTEROVF_HPM6_MASK (0x40U)
  4430. #define CSR_MCOUNTEROVF_HPM6_SHIFT (6U)
  4431. #define CSR_MCOUNTEROVF_HPM6_SET(x) (((uint32_t)(x) << CSR_MCOUNTEROVF_HPM6_SHIFT) & CSR_MCOUNTEROVF_HPM6_MASK)
  4432. #define CSR_MCOUNTEROVF_HPM6_GET(x) (((uint32_t)(x) & CSR_MCOUNTEROVF_HPM6_MASK) >> CSR_MCOUNTEROVF_HPM6_SHIFT)
  4433. /*
  4434. * HPM5 (RW)
  4435. *
  4436. * See register description
  4437. */
  4438. #define CSR_MCOUNTEROVF_HPM5_MASK (0x20U)
  4439. #define CSR_MCOUNTEROVF_HPM5_SHIFT (5U)
  4440. #define CSR_MCOUNTEROVF_HPM5_SET(x) (((uint32_t)(x) << CSR_MCOUNTEROVF_HPM5_SHIFT) & CSR_MCOUNTEROVF_HPM5_MASK)
  4441. #define CSR_MCOUNTEROVF_HPM5_GET(x) (((uint32_t)(x) & CSR_MCOUNTEROVF_HPM5_MASK) >> CSR_MCOUNTEROVF_HPM5_SHIFT)
  4442. /*
  4443. * HPM4 (RW)
  4444. *
  4445. * See register description
  4446. */
  4447. #define CSR_MCOUNTEROVF_HPM4_MASK (0x10U)
  4448. #define CSR_MCOUNTEROVF_HPM4_SHIFT (4U)
  4449. #define CSR_MCOUNTEROVF_HPM4_SET(x) (((uint32_t)(x) << CSR_MCOUNTEROVF_HPM4_SHIFT) & CSR_MCOUNTEROVF_HPM4_MASK)
  4450. #define CSR_MCOUNTEROVF_HPM4_GET(x) (((uint32_t)(x) & CSR_MCOUNTEROVF_HPM4_MASK) >> CSR_MCOUNTEROVF_HPM4_SHIFT)
  4451. /*
  4452. * HPM3 (RW)
  4453. *
  4454. * See register description
  4455. */
  4456. #define CSR_MCOUNTEROVF_HPM3_MASK (0x8U)
  4457. #define CSR_MCOUNTEROVF_HPM3_SHIFT (3U)
  4458. #define CSR_MCOUNTEROVF_HPM3_SET(x) (((uint32_t)(x) << CSR_MCOUNTEROVF_HPM3_SHIFT) & CSR_MCOUNTEROVF_HPM3_MASK)
  4459. #define CSR_MCOUNTEROVF_HPM3_GET(x) (((uint32_t)(x) & CSR_MCOUNTEROVF_HPM3_MASK) >> CSR_MCOUNTEROVF_HPM3_SHIFT)
  4460. /*
  4461. * IR (RW)
  4462. *
  4463. * See register description
  4464. */
  4465. #define CSR_MCOUNTEROVF_IR_MASK (0x4U)
  4466. #define CSR_MCOUNTEROVF_IR_SHIFT (2U)
  4467. #define CSR_MCOUNTEROVF_IR_SET(x) (((uint32_t)(x) << CSR_MCOUNTEROVF_IR_SHIFT) & CSR_MCOUNTEROVF_IR_MASK)
  4468. #define CSR_MCOUNTEROVF_IR_GET(x) (((uint32_t)(x) & CSR_MCOUNTEROVF_IR_MASK) >> CSR_MCOUNTEROVF_IR_SHIFT)
  4469. /*
  4470. * CY (RW)
  4471. *
  4472. * See register description
  4473. */
  4474. #define CSR_MCOUNTEROVF_CY_MASK (0x1U)
  4475. #define CSR_MCOUNTEROVF_CY_SHIFT (0U)
  4476. #define CSR_MCOUNTEROVF_CY_SET(x) (((uint32_t)(x) << CSR_MCOUNTEROVF_CY_SHIFT) & CSR_MCOUNTEROVF_CY_MASK)
  4477. #define CSR_MCOUNTEROVF_CY_GET(x) (((uint32_t)(x) & CSR_MCOUNTEROVF_CY_MASK) >> CSR_MCOUNTEROVF_CY_SHIFT)
  4478. /* Bitfield definition for register: MSLIDELEG */
  4479. /*
  4480. * PMOVI (RW)
  4481. *
  4482. * Delegate S-mode performance monitor overflow local interrupt to S-mode.
  4483. * 0:Do not delegate to S-mode.
  4484. * 1:Delegate to S-mode.
  4485. */
  4486. #define CSR_MSLIDELEG_PMOVI_MASK (0x40000UL)
  4487. #define CSR_MSLIDELEG_PMOVI_SHIFT (18U)
  4488. #define CSR_MSLIDELEG_PMOVI_SET(x) (((uint32_t)(x) << CSR_MSLIDELEG_PMOVI_SHIFT) & CSR_MSLIDELEG_PMOVI_MASK)
  4489. #define CSR_MSLIDELEG_PMOVI_GET(x) (((uint32_t)(x) & CSR_MSLIDELEG_PMOVI_MASK) >> CSR_MSLIDELEG_PMOVI_SHIFT)
  4490. /*
  4491. * BWEI (RW)
  4492. *
  4493. * Delegate S-mode bus read/write transaction error local interrupt to S-mode
  4494. * 0:Do not delegate to S-mode.
  4495. * 1:Delegate to S-mode.
  4496. */
  4497. #define CSR_MSLIDELEG_BWEI_MASK (0x20000UL)
  4498. #define CSR_MSLIDELEG_BWEI_SHIFT (17U)
  4499. #define CSR_MSLIDELEG_BWEI_SET(x) (((uint32_t)(x) << CSR_MSLIDELEG_BWEI_SHIFT) & CSR_MSLIDELEG_BWEI_MASK)
  4500. #define CSR_MSLIDELEG_BWEI_GET(x) (((uint32_t)(x) & CSR_MSLIDELEG_BWEI_MASK) >> CSR_MSLIDELEG_BWEI_SHIFT)
  4501. /*
  4502. * IMECCI (RW)
  4503. *
  4504. * Delegate S-mode slave-port ECC error local interrupt to S-mode
  4505. * 0:Do not delegate to S-mode.
  4506. * 1:Delegate to S-mode.
  4507. */
  4508. #define CSR_MSLIDELEG_IMECCI_MASK (0x10000UL)
  4509. #define CSR_MSLIDELEG_IMECCI_SHIFT (16U)
  4510. #define CSR_MSLIDELEG_IMECCI_SET(x) (((uint32_t)(x) << CSR_MSLIDELEG_IMECCI_SHIFT) & CSR_MSLIDELEG_IMECCI_MASK)
  4511. #define CSR_MSLIDELEG_IMECCI_GET(x) (((uint32_t)(x) & CSR_MSLIDELEG_IMECCI_MASK) >> CSR_MSLIDELEG_IMECCI_SHIFT)
  4512. /* Bitfield definition for register: MCLK_CTL */
  4513. /*
  4514. * FUNIT (RW)
  4515. *
  4516. * Level 2 clock gating enable for function units listed in the following table.
  4517. * 16:integer arithmetic unit
  4518. * 17:integer permutation unit
  4519. * 18:integer mask unit
  4520. * 19:integer division unit
  4521. * 20:integer multiply and add unit
  4522. * 21:floating-point multiply and add
  4523. * unit
  4524. * 22:floating-point miscellaneous unit
  4525. * 23:floating-point division unit
  4526. * 24:load/store unit
  4527. * 31:25:Reserved
  4528. */
  4529. #define CSR_MCLK_CTL_FUNIT_MASK (0xFFFF0000UL)
  4530. #define CSR_MCLK_CTL_FUNIT_SHIFT (16U)
  4531. #define CSR_MCLK_CTL_FUNIT_SET(x) (((uint32_t)(x) << CSR_MCLK_CTL_FUNIT_SHIFT) & CSR_MCLK_CTL_FUNIT_MASK)
  4532. #define CSR_MCLK_CTL_FUNIT_GET(x) (((uint32_t)(x) & CSR_MCLK_CTL_FUNIT_MASK) >> CSR_MCLK_CTL_FUNIT_SHIFT)
  4533. /*
  4534. * VI (RW)
  4535. *
  4536. * Level 1 clock gating enable for the vector/floating-point issue queues.
  4537. */
  4538. #define CSR_MCLK_CTL_VI_MASK (0x8000U)
  4539. #define CSR_MCLK_CTL_VI_SHIFT (15U)
  4540. #define CSR_MCLK_CTL_VI_SET(x) (((uint32_t)(x) << CSR_MCLK_CTL_VI_SHIFT) & CSR_MCLK_CTL_VI_MASK)
  4541. #define CSR_MCLK_CTL_VI_GET(x) (((uint32_t)(x) & CSR_MCLK_CTL_VI_MASK) >> CSR_MCLK_CTL_VI_SHIFT)
  4542. /*
  4543. * VR (RW)
  4544. *
  4545. * Level 1 clock gating enable for the vector/floating-point register file.
  4546. */
  4547. #define CSR_MCLK_CTL_VR_MASK (0x4000U)
  4548. #define CSR_MCLK_CTL_VR_SHIFT (14U)
  4549. #define CSR_MCLK_CTL_VR_SET(x) (((uint32_t)(x) << CSR_MCLK_CTL_VR_SHIFT) & CSR_MCLK_CTL_VR_MASK)
  4550. #define CSR_MCLK_CTL_VR_GET(x) (((uint32_t)(x) & CSR_MCLK_CTL_VR_MASK) >> CSR_MCLK_CTL_VR_SHIFT)
  4551. /*
  4552. * AQ (RW)
  4553. *
  4554. * Level 1 clock gating enable for ACE load/store queues.
  4555. */
  4556. #define CSR_MCLK_CTL_AQ_MASK (0x2000U)
  4557. #define CSR_MCLK_CTL_AQ_SHIFT (13U)
  4558. #define CSR_MCLK_CTL_AQ_SET(x) (((uint32_t)(x) << CSR_MCLK_CTL_AQ_SHIFT) & CSR_MCLK_CTL_AQ_MASK)
  4559. #define CSR_MCLK_CTL_AQ_GET(x) (((uint32_t)(x) & CSR_MCLK_CTL_AQ_MASK) >> CSR_MCLK_CTL_AQ_SHIFT)
  4560. /*
  4561. * DQ (RW)
  4562. *
  4563. * Level 1 clock gating enable for data cache load/store queues.
  4564. */
  4565. #define CSR_MCLK_CTL_DQ_MASK (0x1000U)
  4566. #define CSR_MCLK_CTL_DQ_SHIFT (12U)
  4567. #define CSR_MCLK_CTL_DQ_SET(x) (((uint32_t)(x) << CSR_MCLK_CTL_DQ_SHIFT) & CSR_MCLK_CTL_DQ_MASK)
  4568. #define CSR_MCLK_CTL_DQ_GET(x) (((uint32_t)(x) & CSR_MCLK_CTL_DQ_MASK) >> CSR_MCLK_CTL_DQ_SHIFT)
  4569. /*
  4570. * UQ (RW)
  4571. *
  4572. * Level 1 clock gating enable for uncached queues
  4573. */
  4574. #define CSR_MCLK_CTL_UQ_MASK (0x800U)
  4575. #define CSR_MCLK_CTL_UQ_SHIFT (11U)
  4576. #define CSR_MCLK_CTL_UQ_SET(x) (((uint32_t)(x) << CSR_MCLK_CTL_UQ_SHIFT) & CSR_MCLK_CTL_UQ_MASK)
  4577. #define CSR_MCLK_CTL_UQ_GET(x) (((uint32_t)(x) & CSR_MCLK_CTL_UQ_MASK) >> CSR_MCLK_CTL_UQ_SHIFT)
  4578. /*
  4579. * FP (RW)
  4580. *
  4581. * Level 1 clock gating enable for scalar floating point issue unit and queues.
  4582. */
  4583. #define CSR_MCLK_CTL_FP_MASK (0x400U)
  4584. #define CSR_MCLK_CTL_FP_SHIFT (10U)
  4585. #define CSR_MCLK_CTL_FP_SET(x) (((uint32_t)(x) << CSR_MCLK_CTL_FP_SHIFT) & CSR_MCLK_CTL_FP_MASK)
  4586. #define CSR_MCLK_CTL_FP_GET(x) (((uint32_t)(x) & CSR_MCLK_CTL_FP_MASK) >> CSR_MCLK_CTL_FP_SHIFT)
  4587. /*
  4588. * CLKGATE (RW)
  4589. *
  4590. * One-hot clock gating levels.
  4591. * 0:Level 1 clock gating in module level
  4592. * 1:Level 2 clock gating in unit level
  4593. * 2:Level 3 clock gating in VPU level
  4594. * 7:3:Reserved
  4595. */
  4596. #define CSR_MCLK_CTL_CLKGATE_MASK (0xFFU)
  4597. #define CSR_MCLK_CTL_CLKGATE_SHIFT (0U)
  4598. #define CSR_MCLK_CTL_CLKGATE_SET(x) (((uint32_t)(x) << CSR_MCLK_CTL_CLKGATE_SHIFT) & CSR_MCLK_CTL_CLKGATE_MASK)
  4599. #define CSR_MCLK_CTL_CLKGATE_GET(x) (((uint32_t)(x) & CSR_MCLK_CTL_CLKGATE_MASK) >> CSR_MCLK_CTL_CLKGATE_SHIFT)
  4600. /* Bitfield definition for register: DEXC2DBG */
  4601. /*
  4602. * PMOV (RW)
  4603. *
  4604. * Indicates whether performance counter overflow interrupts are redirected to enter Debug Mode
  4605. * 0:Do not redirect
  4606. * 1:Redirect
  4607. */
  4608. #define CSR_DEXC2DBG_PMOV_MASK (0x80000UL)
  4609. #define CSR_DEXC2DBG_PMOV_SHIFT (19U)
  4610. #define CSR_DEXC2DBG_PMOV_SET(x) (((uint32_t)(x) << CSR_DEXC2DBG_PMOV_SHIFT) & CSR_DEXC2DBG_PMOV_MASK)
  4611. #define CSR_DEXC2DBG_PMOV_GET(x) (((uint32_t)(x) & CSR_DEXC2DBG_PMOV_MASK) >> CSR_DEXC2DBG_PMOV_SHIFT)
  4612. /*
  4613. * SPF (RW)
  4614. *
  4615. * Indicates whether store page fault exceptions are redirected to enter Debug Mode.
  4616. * 0:Do not redirect
  4617. * 1:Redirect
  4618. */
  4619. #define CSR_DEXC2DBG_SPF_MASK (0x40000UL)
  4620. #define CSR_DEXC2DBG_SPF_SHIFT (18U)
  4621. #define CSR_DEXC2DBG_SPF_SET(x) (((uint32_t)(x) << CSR_DEXC2DBG_SPF_SHIFT) & CSR_DEXC2DBG_SPF_MASK)
  4622. #define CSR_DEXC2DBG_SPF_GET(x) (((uint32_t)(x) & CSR_DEXC2DBG_SPF_MASK) >> CSR_DEXC2DBG_SPF_SHIFT)
  4623. /*
  4624. * LPF (RW)
  4625. *
  4626. * Indicates whether load fault exceptions are redirected to enter Debug Mode
  4627. * 0:Do not redirect
  4628. * 1:Redirect
  4629. */
  4630. #define CSR_DEXC2DBG_LPF_MASK (0x20000UL)
  4631. #define CSR_DEXC2DBG_LPF_SHIFT (17U)
  4632. #define CSR_DEXC2DBG_LPF_SET(x) (((uint32_t)(x) << CSR_DEXC2DBG_LPF_SHIFT) & CSR_DEXC2DBG_LPF_MASK)
  4633. #define CSR_DEXC2DBG_LPF_GET(x) (((uint32_t)(x) & CSR_DEXC2DBG_LPF_MASK) >> CSR_DEXC2DBG_LPF_SHIFT)
  4634. /*
  4635. * IPF (RW)
  4636. *
  4637. * Indicates whether instruction page fault exceptions are redirected to enter Debug Mode
  4638. * 0:Do not redirect
  4639. * 1:Redirect
  4640. */
  4641. #define CSR_DEXC2DBG_IPF_MASK (0x10000UL)
  4642. #define CSR_DEXC2DBG_IPF_SHIFT (16U)
  4643. #define CSR_DEXC2DBG_IPF_SET(x) (((uint32_t)(x) << CSR_DEXC2DBG_IPF_SHIFT) & CSR_DEXC2DBG_IPF_MASK)
  4644. #define CSR_DEXC2DBG_IPF_GET(x) (((uint32_t)(x) & CSR_DEXC2DBG_IPF_MASK) >> CSR_DEXC2DBG_IPF_SHIFT)
  4645. /*
  4646. * BWE (RW)
  4647. *
  4648. * Indicates whether Bus-write Transaction Error local interrupts are redirected to enter Debug Mode
  4649. * 0:Do not redirect
  4650. * 1:Redirect
  4651. */
  4652. #define CSR_DEXC2DBG_BWE_MASK (0x8000U)
  4653. #define CSR_DEXC2DBG_BWE_SHIFT (15U)
  4654. #define CSR_DEXC2DBG_BWE_SET(x) (((uint32_t)(x) << CSR_DEXC2DBG_BWE_SHIFT) & CSR_DEXC2DBG_BWE_MASK)
  4655. #define CSR_DEXC2DBG_BWE_GET(x) (((uint32_t)(x) & CSR_DEXC2DBG_BWE_MASK) >> CSR_DEXC2DBG_BWE_SHIFT)
  4656. /*
  4657. * SLPECC (RW)
  4658. *
  4659. * Indicates whether local memory slave port ECC Error local interrupts are redirected to enter Debug Mode
  4660. * 0:Do not redirect
  4661. * 1:Redirect
  4662. */
  4663. #define CSR_DEXC2DBG_SLPECC_MASK (0x4000U)
  4664. #define CSR_DEXC2DBG_SLPECC_SHIFT (14U)
  4665. #define CSR_DEXC2DBG_SLPECC_SET(x) (((uint32_t)(x) << CSR_DEXC2DBG_SLPECC_SHIFT) & CSR_DEXC2DBG_SLPECC_MASK)
  4666. #define CSR_DEXC2DBG_SLPECC_GET(x) (((uint32_t)(x) & CSR_DEXC2DBG_SLPECC_MASK) >> CSR_DEXC2DBG_SLPECC_SHIFT)
  4667. /*
  4668. * ACE (RW)
  4669. *
  4670. * Indicates whether ACE-related exceptions are redirected to enter Debug Mode. This bit is present only when mmsc_cfg.ACE is set
  4671. * 0:Do not redirect
  4672. * 1:Redirect
  4673. */
  4674. #define CSR_DEXC2DBG_ACE_MASK (0x2000U)
  4675. #define CSR_DEXC2DBG_ACE_SHIFT (13U)
  4676. #define CSR_DEXC2DBG_ACE_SET(x) (((uint32_t)(x) << CSR_DEXC2DBG_ACE_SHIFT) & CSR_DEXC2DBG_ACE_MASK)
  4677. #define CSR_DEXC2DBG_ACE_GET(x) (((uint32_t)(x) & CSR_DEXC2DBG_ACE_MASK) >> CSR_DEXC2DBG_ACE_SHIFT)
  4678. /*
  4679. * HSP (RW)
  4680. *
  4681. * Indicates whether Stack Protection exceptions are redirected to enter Debug Mode. This bit is present only when mmsc_cfg.HSP is set.
  4682. * 0:Do not redirect
  4683. * 1:Redirect
  4684. */
  4685. #define CSR_DEXC2DBG_HSP_MASK (0x1000U)
  4686. #define CSR_DEXC2DBG_HSP_SHIFT (12U)
  4687. #define CSR_DEXC2DBG_HSP_SET(x) (((uint32_t)(x) << CSR_DEXC2DBG_HSP_SHIFT) & CSR_DEXC2DBG_HSP_MASK)
  4688. #define CSR_DEXC2DBG_HSP_GET(x) (((uint32_t)(x) & CSR_DEXC2DBG_HSP_MASK) >> CSR_DEXC2DBG_HSP_SHIFT)
  4689. /*
  4690. * MEC (RW)
  4691. *
  4692. * Indicates whether M-mode Environment Call exceptions are redirected to enter Debug Mode
  4693. * 0:Do not redirect
  4694. * 1:Redirect
  4695. */
  4696. #define CSR_DEXC2DBG_MEC_MASK (0x800U)
  4697. #define CSR_DEXC2DBG_MEC_SHIFT (11U)
  4698. #define CSR_DEXC2DBG_MEC_SET(x) (((uint32_t)(x) << CSR_DEXC2DBG_MEC_SHIFT) & CSR_DEXC2DBG_MEC_MASK)
  4699. #define CSR_DEXC2DBG_MEC_GET(x) (((uint32_t)(x) & CSR_DEXC2DBG_MEC_MASK) >> CSR_DEXC2DBG_MEC_SHIFT)
  4700. /*
  4701. * SEC (RW)
  4702. *
  4703. * Indicates whether S-mode Environment Call exceptions are redirected to enter Debug Mode
  4704. * 0:Do not redirect
  4705. * 1:Redirect
  4706. */
  4707. #define CSR_DEXC2DBG_SEC_MASK (0x200U)
  4708. #define CSR_DEXC2DBG_SEC_SHIFT (9U)
  4709. #define CSR_DEXC2DBG_SEC_SET(x) (((uint32_t)(x) << CSR_DEXC2DBG_SEC_SHIFT) & CSR_DEXC2DBG_SEC_MASK)
  4710. #define CSR_DEXC2DBG_SEC_GET(x) (((uint32_t)(x) & CSR_DEXC2DBG_SEC_MASK) >> CSR_DEXC2DBG_SEC_SHIFT)
  4711. /*
  4712. * UEC (RW)
  4713. *
  4714. * Indicates whether U-mode Environment Call exceptions are redirected to enter Debug Mode.
  4715. * 0:Do not redirect
  4716. * 1:Redirect
  4717. */
  4718. #define CSR_DEXC2DBG_UEC_MASK (0x100U)
  4719. #define CSR_DEXC2DBG_UEC_SHIFT (8U)
  4720. #define CSR_DEXC2DBG_UEC_SET(x) (((uint32_t)(x) << CSR_DEXC2DBG_UEC_SHIFT) & CSR_DEXC2DBG_UEC_MASK)
  4721. #define CSR_DEXC2DBG_UEC_GET(x) (((uint32_t)(x) & CSR_DEXC2DBG_UEC_MASK) >> CSR_DEXC2DBG_UEC_SHIFT)
  4722. /*
  4723. * SAF (RW)
  4724. *
  4725. * Indicates whether Store Access Fault exceptions are redirected to enter Debug Mode.
  4726. * 0:Do not redirect
  4727. * 1:Redirect
  4728. */
  4729. #define CSR_DEXC2DBG_SAF_MASK (0x80U)
  4730. #define CSR_DEXC2DBG_SAF_SHIFT (7U)
  4731. #define CSR_DEXC2DBG_SAF_SET(x) (((uint32_t)(x) << CSR_DEXC2DBG_SAF_SHIFT) & CSR_DEXC2DBG_SAF_MASK)
  4732. #define CSR_DEXC2DBG_SAF_GET(x) (((uint32_t)(x) & CSR_DEXC2DBG_SAF_MASK) >> CSR_DEXC2DBG_SAF_SHIFT)
  4733. /*
  4734. * SAM (RW)
  4735. *
  4736. * Indicates whether Store Access Misaligned exceptions are redirected to enter Debug Mode.
  4737. * 0:Do not redirect
  4738. * 1:Redirect
  4739. */
  4740. #define CSR_DEXC2DBG_SAM_MASK (0x40U)
  4741. #define CSR_DEXC2DBG_SAM_SHIFT (6U)
  4742. #define CSR_DEXC2DBG_SAM_SET(x) (((uint32_t)(x) << CSR_DEXC2DBG_SAM_SHIFT) & CSR_DEXC2DBG_SAM_MASK)
  4743. #define CSR_DEXC2DBG_SAM_GET(x) (((uint32_t)(x) & CSR_DEXC2DBG_SAM_MASK) >> CSR_DEXC2DBG_SAM_SHIFT)
  4744. /*
  4745. * LAF (RW)
  4746. *
  4747. * Indicates whether Load Access Fault exceptions are redirected to enter Debug Mode.
  4748. * 0:Do not redirect
  4749. * 1:Redirect
  4750. */
  4751. #define CSR_DEXC2DBG_LAF_MASK (0x20U)
  4752. #define CSR_DEXC2DBG_LAF_SHIFT (5U)
  4753. #define CSR_DEXC2DBG_LAF_SET(x) (((uint32_t)(x) << CSR_DEXC2DBG_LAF_SHIFT) & CSR_DEXC2DBG_LAF_MASK)
  4754. #define CSR_DEXC2DBG_LAF_GET(x) (((uint32_t)(x) & CSR_DEXC2DBG_LAF_MASK) >> CSR_DEXC2DBG_LAF_SHIFT)
  4755. /*
  4756. * LAM (RW)
  4757. *
  4758. * Indicates whether Load Access Misaligned exceptions are redirected to enter Debug Mode
  4759. * 0:Do not redirect
  4760. * 1:Redirect
  4761. */
  4762. #define CSR_DEXC2DBG_LAM_MASK (0x10U)
  4763. #define CSR_DEXC2DBG_LAM_SHIFT (4U)
  4764. #define CSR_DEXC2DBG_LAM_SET(x) (((uint32_t)(x) << CSR_DEXC2DBG_LAM_SHIFT) & CSR_DEXC2DBG_LAM_MASK)
  4765. #define CSR_DEXC2DBG_LAM_GET(x) (((uint32_t)(x) & CSR_DEXC2DBG_LAM_MASK) >> CSR_DEXC2DBG_LAM_SHIFT)
  4766. /*
  4767. * NMI (RW)
  4768. *
  4769. * Indicates whether Non-Maskable Interrupt
  4770. * 0:Do not redirect
  4771. * 1:Redirect
  4772. */
  4773. #define CSR_DEXC2DBG_NMI_MASK (0x8U)
  4774. #define CSR_DEXC2DBG_NMI_SHIFT (3U)
  4775. #define CSR_DEXC2DBG_NMI_SET(x) (((uint32_t)(x) << CSR_DEXC2DBG_NMI_SHIFT) & CSR_DEXC2DBG_NMI_MASK)
  4776. #define CSR_DEXC2DBG_NMI_GET(x) (((uint32_t)(x) & CSR_DEXC2DBG_NMI_MASK) >> CSR_DEXC2DBG_NMI_SHIFT)
  4777. /*
  4778. * II (RW)
  4779. *
  4780. * Indicates whether Illegal Instruction exceptions are redirected to enter Debug Mode.
  4781. * 0:Do not redirect
  4782. * 1:Redirect
  4783. */
  4784. #define CSR_DEXC2DBG_II_MASK (0x4U)
  4785. #define CSR_DEXC2DBG_II_SHIFT (2U)
  4786. #define CSR_DEXC2DBG_II_SET(x) (((uint32_t)(x) << CSR_DEXC2DBG_II_SHIFT) & CSR_DEXC2DBG_II_MASK)
  4787. #define CSR_DEXC2DBG_II_GET(x) (((uint32_t)(x) & CSR_DEXC2DBG_II_MASK) >> CSR_DEXC2DBG_II_SHIFT)
  4788. /*
  4789. * IAF (RW)
  4790. *
  4791. * Indicates whether Instruction Access Fault exceptions are redirected to enter Debug Mode
  4792. * 0:Do not redirect
  4793. * 1:Redirect
  4794. */
  4795. #define CSR_DEXC2DBG_IAF_MASK (0x2U)
  4796. #define CSR_DEXC2DBG_IAF_SHIFT (1U)
  4797. #define CSR_DEXC2DBG_IAF_SET(x) (((uint32_t)(x) << CSR_DEXC2DBG_IAF_SHIFT) & CSR_DEXC2DBG_IAF_MASK)
  4798. #define CSR_DEXC2DBG_IAF_GET(x) (((uint32_t)(x) & CSR_DEXC2DBG_IAF_MASK) >> CSR_DEXC2DBG_IAF_SHIFT)
  4799. /*
  4800. * IAM (RW)
  4801. *
  4802. * Indicates whether Instruction Access Misaligned exceptions are redirected to enter Debug Mode.
  4803. * 0:Do not redirect
  4804. * 1:Redirect
  4805. */
  4806. #define CSR_DEXC2DBG_IAM_MASK (0x1U)
  4807. #define CSR_DEXC2DBG_IAM_SHIFT (0U)
  4808. #define CSR_DEXC2DBG_IAM_SET(x) (((uint32_t)(x) << CSR_DEXC2DBG_IAM_SHIFT) & CSR_DEXC2DBG_IAM_MASK)
  4809. #define CSR_DEXC2DBG_IAM_GET(x) (((uint32_t)(x) & CSR_DEXC2DBG_IAM_MASK) >> CSR_DEXC2DBG_IAM_SHIFT)
  4810. /* Bitfield definition for register: DDCAUSE */
  4811. /*
  4812. * SUBTYPE (RO)
  4813. *
  4814. * Subtypes for main type.
  4815. * The table below lists the subtypes for DCSR.CAUSE==1 and DDCAUSE.MAINTYPE==3.
  4816. * 0:Illegal instruction
  4817. * 1:Privileged instruction
  4818. * 2:Non-existent CSR
  4819. * 3:Privilege CSR access
  4820. * 4:Read-only CSR update
  4821. */
  4822. #define CSR_DDCAUSE_SUBTYPE_MASK (0xFF00U)
  4823. #define CSR_DDCAUSE_SUBTYPE_SHIFT (8U)
  4824. #define CSR_DDCAUSE_SUBTYPE_GET(x) (((uint32_t)(x) & CSR_DDCAUSE_SUBTYPE_MASK) >> CSR_DDCAUSE_SUBTYPE_SHIFT)
  4825. /*
  4826. * MAINTYPE (RO)
  4827. *
  4828. * Cause for redirection to Debug Mode.
  4829. * 0:Software Breakpoint (EBREAK)
  4830. * 1:Instruction Access Misaligned (IAM)
  4831. * 2:Instruction Access Fault (IAF)
  4832. * 3:Illegal Instruction (II)
  4833. * 4:Non-Maskable Interrupt (NMI)
  4834. * 5:Load Access Misaligned (LAM)
  4835. * 6:Load Access Fault (LAF)
  4836. * 7:Store Access Misaligned (SAM)
  4837. * 8:Store Access Fault (SAF)
  4838. * 9:U-mode Environment Call (UEC)
  4839. * 10:S-mode Environment Call (SEC)
  4840. * 11:Instruction page fault
  4841. * 12:M-mode Environment Call (MEC)
  4842. * 13:Load page fault
  4843. * 14:Reserved
  4844. * 15:Store/AMO page fault
  4845. * 16:Imprecise ECC error
  4846. * 17;Bus write transaction error
  4847. * 18:Performance Counter overflow
  4848. * 19–31:Reserved
  4849. * 32:Stack overflow exception
  4850. * 33:Stack underflow exception
  4851. * 34:ACE disabled exception
  4852. * 35–39:Reserved
  4853. * 40–47:ACE exception
  4854. * ≥48:Reserved
  4855. */
  4856. #define CSR_DDCAUSE_MAINTYPE_MASK (0xFFU)
  4857. #define CSR_DDCAUSE_MAINTYPE_SHIFT (0U)
  4858. #define CSR_DDCAUSE_MAINTYPE_GET(x) (((uint32_t)(x) & CSR_DDCAUSE_MAINTYPE_MASK) >> CSR_DDCAUSE_MAINTYPE_SHIFT)
  4859. /* Bitfield definition for register: UITB */
  4860. /*
  4861. * ADDR (RW)
  4862. *
  4863. * The base address of the CoDense instruction table. This field is reserved if uitb.HW == 1.
  4864. */
  4865. #define CSR_UITB_ADDR_MASK (0xFFFFFFFCUL)
  4866. #define CSR_UITB_ADDR_SHIFT (2U)
  4867. #define CSR_UITB_ADDR_SET(x) (((uint32_t)(x) << CSR_UITB_ADDR_SHIFT) & CSR_UITB_ADDR_MASK)
  4868. #define CSR_UITB_ADDR_GET(x) (((uint32_t)(x) & CSR_UITB_ADDR_MASK) >> CSR_UITB_ADDR_SHIFT)
  4869. /*
  4870. * HW (RO)
  4871. *
  4872. * This bit specifies if the CoDense instruction table is hardwired.
  4873. * 0:The instruction table is located in memory. uitb.ADDR should be initialized to point to the table before using the CoDense instructions.
  4874. * 1:The instruction table is hardwired. Initialization of uitb.ADDR is not needed before using the CoDense instructions.
  4875. */
  4876. #define CSR_UITB_HW_MASK (0x1U)
  4877. #define CSR_UITB_HW_SHIFT (0U)
  4878. #define CSR_UITB_HW_GET(x) (((uint32_t)(x) & CSR_UITB_HW_MASK) >> CSR_UITB_HW_SHIFT)
  4879. /* Bitfield definition for register: UCODE */
  4880. /*
  4881. * OV (RW)
  4882. *
  4883. * Overflow flag. It will be set by DSP instructions with a saturated result.
  4884. * 0:A saturated result is not generated
  4885. * 1:A saturated result is generated
  4886. */
  4887. #define CSR_UCODE_OV_MASK (0x1U)
  4888. #define CSR_UCODE_OV_SHIFT (0U)
  4889. #define CSR_UCODE_OV_SET(x) (((uint32_t)(x) << CSR_UCODE_OV_SHIFT) & CSR_UCODE_OV_MASK)
  4890. #define CSR_UCODE_OV_GET(x) (((uint32_t)(x) & CSR_UCODE_OV_MASK) >> CSR_UCODE_OV_SHIFT)
  4891. /* Bitfield definition for register: UDCAUSE */
  4892. /*
  4893. * UDCAUSE (RW)
  4894. *
  4895. * This register further disambiguates causes of traps recorded in the ucause register. See the list below for details.
  4896. * The value of UDCAUSE for precise exception:
  4897. * When ucause == 1 (Instruction access fault)
  4898. * 0:Reserved
  4899. * 1:ECC/Parity error
  4900. * 2:PMP instruction access violation
  4901. * 3:Bus error
  4902. * 4:PMA empty hole access
  4903. * When ucause == 2 (Illegal instruction)
  4904. * 0:Please parse the utval CSR
  4905. * 1:FP disabled exception
  4906. * 2:ACE disabled exception
  4907. * When ucause == 5 (Load access fault)
  4908. * 0:Reserved
  4909. * 1:ECC/Parity error
  4910. * 2:PMP load access violation
  4911. * 3:Bus error
  4912. * 4:Misaligned address
  4913. * 5:PMA empty hole access
  4914. * 6:PMA attribute inconsistency
  4915. * 7:PMA NAMO exception
  4916. * When ucause == 7 (Store access fault)
  4917. * 0:Reserved
  4918. * 1:ECC/Parity error
  4919. * 2:PMP store access violation
  4920. * 3:Bus error
  4921. * 4:Misaligned address
  4922. * 5:PMA empty hole access
  4923. * 6:PMA attribute inconsistency
  4924. * 7:PMA NAMO exception
  4925. */
  4926. #define CSR_UDCAUSE_UDCAUSE_MASK (0x7U)
  4927. #define CSR_UDCAUSE_UDCAUSE_SHIFT (0U)
  4928. #define CSR_UDCAUSE_UDCAUSE_SET(x) (((uint32_t)(x) << CSR_UDCAUSE_UDCAUSE_SHIFT) & CSR_UDCAUSE_UDCAUSE_MASK)
  4929. #define CSR_UDCAUSE_UDCAUSE_GET(x) (((uint32_t)(x) & CSR_UDCAUSE_UDCAUSE_MASK) >> CSR_UDCAUSE_UDCAUSE_SHIFT)
  4930. /* Bitfield definition for register: UCCTLBEGINADDR */
  4931. /*
  4932. * VA (RW)
  4933. *
  4934. * It is an alias to the mcctlbeginaddr register and it is only accessible to Supervisor-mode and User-mode software when mcache_ctl.CCTL_SUEN is 1. Otherwise illegal instruction exceptions will be triggered.
  4935. */
  4936. #define CSR_UCCTLBEGINADDR_VA_MASK (0xFFFFFFFFUL)
  4937. #define CSR_UCCTLBEGINADDR_VA_SHIFT (0U)
  4938. #define CSR_UCCTLBEGINADDR_VA_SET(x) (((uint32_t)(x) << CSR_UCCTLBEGINADDR_VA_SHIFT) & CSR_UCCTLBEGINADDR_VA_MASK)
  4939. #define CSR_UCCTLBEGINADDR_VA_GET(x) (((uint32_t)(x) & CSR_UCCTLBEGINADDR_VA_MASK) >> CSR_UCCTLBEGINADDR_VA_SHIFT)
  4940. /* Bitfield definition for register: UCCTLCOMMAND */
  4941. /*
  4942. * VA (RW)
  4943. *
  4944. * See User CCTL Command Definition Table
  4945. */
  4946. #define CSR_UCCTLCOMMAND_VA_MASK (0x1FU)
  4947. #define CSR_UCCTLCOMMAND_VA_SHIFT (0U)
  4948. #define CSR_UCCTLCOMMAND_VA_SET(x) (((uint32_t)(x) << CSR_UCCTLCOMMAND_VA_SHIFT) & CSR_UCCTLCOMMAND_VA_MASK)
  4949. #define CSR_UCCTLCOMMAND_VA_GET(x) (((uint32_t)(x) & CSR_UCCTLCOMMAND_VA_MASK) >> CSR_UCCTLCOMMAND_VA_SHIFT)
  4950. /* Bitfield definition for register: SLIE */
  4951. /*
  4952. * PMOVI (RW)
  4953. *
  4954. * Enable S-mode performance monitor overflow local interrupt.
  4955. * 0:Local interrupt is not enabled.
  4956. * 1:Local interrupt is enabled
  4957. */
  4958. #define CSR_SLIE_PMOVI_MASK (0x40000UL)
  4959. #define CSR_SLIE_PMOVI_SHIFT (18U)
  4960. #define CSR_SLIE_PMOVI_SET(x) (((uint32_t)(x) << CSR_SLIE_PMOVI_SHIFT) & CSR_SLIE_PMOVI_MASK)
  4961. #define CSR_SLIE_PMOVI_GET(x) (((uint32_t)(x) & CSR_SLIE_PMOVI_MASK) >> CSR_SLIE_PMOVI_SHIFT)
  4962. /*
  4963. * BWEI (RW)
  4964. *
  4965. * Enable S-mode bus read/write transaction error local interrupt. The processor may receive bus errors on load/store instructions or cache writebacks.
  4966. * 0:Local interrupt is not enabled.
  4967. * 1:Local interrupt is enabled
  4968. */
  4969. #define CSR_SLIE_BWEI_MASK (0x20000UL)
  4970. #define CSR_SLIE_BWEI_SHIFT (17U)
  4971. #define CSR_SLIE_BWEI_SET(x) (((uint32_t)(x) << CSR_SLIE_BWEI_SHIFT) & CSR_SLIE_BWEI_MASK)
  4972. #define CSR_SLIE_BWEI_GET(x) (((uint32_t)(x) & CSR_SLIE_BWEI_MASK) >> CSR_SLIE_BWEI_SHIFT)
  4973. /*
  4974. * IMECCI (RW)
  4975. *
  4976. * Enable S-mode slave-port ECC error local interrupt.
  4977. * 0:Local interrupt is not enabled.
  4978. * 1:Local interrupt is enabled
  4979. */
  4980. #define CSR_SLIE_IMECCI_MASK (0x10000UL)
  4981. #define CSR_SLIE_IMECCI_SHIFT (16U)
  4982. #define CSR_SLIE_IMECCI_SET(x) (((uint32_t)(x) << CSR_SLIE_IMECCI_SHIFT) & CSR_SLIE_IMECCI_MASK)
  4983. #define CSR_SLIE_IMECCI_GET(x) (((uint32_t)(x) & CSR_SLIE_IMECCI_MASK) >> CSR_SLIE_IMECCI_SHIFT)
  4984. /* Bitfield definition for register: SLIP */
  4985. /*
  4986. * PMOVI (RW)
  4987. *
  4988. * Pending control and status of S-mode performance monitor overflow local interrupt.
  4989. * 0:Local interrupt is not enabled.
  4990. * 1:Local interrupt is enabled
  4991. */
  4992. #define CSR_SLIP_PMOVI_MASK (0x40000UL)
  4993. #define CSR_SLIP_PMOVI_SHIFT (18U)
  4994. #define CSR_SLIP_PMOVI_SET(x) (((uint32_t)(x) << CSR_SLIP_PMOVI_SHIFT) & CSR_SLIP_PMOVI_MASK)
  4995. #define CSR_SLIP_PMOVI_GET(x) (((uint32_t)(x) & CSR_SLIP_PMOVI_MASK) >> CSR_SLIP_PMOVI_SHIFT)
  4996. /*
  4997. * BWEI (RW)
  4998. *
  4999. * Pending control and status of S-mode bus read/write transaction error local interrupt. The processor may receive bus errors on load/store instructions or cache writebacks.
  5000. * 0:Local interrupt is not enabled.
  5001. * 1:Local interrupt is enabled
  5002. */
  5003. #define CSR_SLIP_BWEI_MASK (0x20000UL)
  5004. #define CSR_SLIP_BWEI_SHIFT (17U)
  5005. #define CSR_SLIP_BWEI_SET(x) (((uint32_t)(x) << CSR_SLIP_BWEI_SHIFT) & CSR_SLIP_BWEI_MASK)
  5006. #define CSR_SLIP_BWEI_GET(x) (((uint32_t)(x) & CSR_SLIP_BWEI_MASK) >> CSR_SLIP_BWEI_SHIFT)
  5007. /*
  5008. * IMECCI (RW)
  5009. *
  5010. * Pending control and status of S-mode slave-port ECC error local interrupt..
  5011. * 0:Local interrupt is not enabled.
  5012. * 1:Local interrupt is enabled
  5013. */
  5014. #define CSR_SLIP_IMECCI_MASK (0x10000UL)
  5015. #define CSR_SLIP_IMECCI_SHIFT (16U)
  5016. #define CSR_SLIP_IMECCI_SET(x) (((uint32_t)(x) << CSR_SLIP_IMECCI_SHIFT) & CSR_SLIP_IMECCI_MASK)
  5017. #define CSR_SLIP_IMECCI_GET(x) (((uint32_t)(x) & CSR_SLIP_IMECCI_MASK) >> CSR_SLIP_IMECCI_SHIFT)
  5018. /* Bitfield definition for register: SDCAUSE */
  5019. /*
  5020. * PM (RW)
  5021. *
  5022. * When scause is imprecise exception (in the form of an interrupt), the PM field records the privileged mode of the instruction that caused the imprecise exception. The PM field encoding is defined as follows:
  5023. * 0:User mode
  5024. * 1:Supervisor mode
  5025. * 2:Reserved
  5026. * 3:Machine mode
  5027. */
  5028. #define CSR_SDCAUSE_PM_MASK (0x60U)
  5029. #define CSR_SDCAUSE_PM_SHIFT (5U)
  5030. #define CSR_SDCAUSE_PM_SET(x) (((uint32_t)(x) << CSR_SDCAUSE_PM_SHIFT) & CSR_SDCAUSE_PM_MASK)
  5031. #define CSR_SDCAUSE_PM_GET(x) (((uint32_t)(x) & CSR_SDCAUSE_PM_MASK) >> CSR_SDCAUSE_PM_SHIFT)
  5032. /*
  5033. * SDCAUSE (RW)
  5034. *
  5035. * This register further disambiguates causes of traps recorded in the scause register. See the list below for details.
  5036. * The value of SDCAUSE for precise exception:
  5037. * When scause == 1 (Instruction access fault):
  5038. * 0:Reserved; 1:ECC/Parity error; 2:PMP instruction access violation; 3:Bus error; 4:PMA empty hole access
  5039. * When scause == 2 (Illegal instruction):
  5040. * 0:Please parse the stval CSR; 1:FP disabled exception; 2:ACE disabled exception
  5041. * When scause == 5 (Load access fault):
  5042. * 0:Reserved; 1:ECC/Parity error; 2:PMP load access violation; 3:Bus error; 4:Misaligned address; 5:PMA empty hole access; 6:PMA attribute inconsistency; 7:PMA NAMO exception
  5043. * When scause == 7 (Store access fault):
  5044. * 0:Reserved; 1:ECC/Parity error; 2:PMP load access violation; 3:Bus error; 4:Misaligned address; 5:PMA empty hole access; 6:PMA attribute inconsistency; 7:PMA NAMO exception
  5045. * The value of SDCAUSE for imprecise exception:
  5046. * When scause == Local Interrupt 16 or Local Interrupt 272 (16 + 256) (ECC error local interrupt)
  5047. * 0:Reserved; 1:LM slave port ECC/Parity error; 2:Imprecise store ECC/Parity error; 3:Imprecise load ECC/Parity error
  5048. * When scause == Local Interrupt 17 or Local Interrupt 273 (17 + 256) (Bus read/write transaction error local interrupt)
  5049. * 0:Reserved; 1:Bus read error; 2:Bus write error; 3:PMP error caused by load instructions; 4:PMP error caused by store instructions; 5:PMA error caused by load instructions; 6:PMA error caused by store instructions
  5050. */
  5051. #define CSR_SDCAUSE_SDCAUSE_MASK (0x7U)
  5052. #define CSR_SDCAUSE_SDCAUSE_SHIFT (0U)
  5053. #define CSR_SDCAUSE_SDCAUSE_SET(x) (((uint32_t)(x) << CSR_SDCAUSE_SDCAUSE_SHIFT) & CSR_SDCAUSE_SDCAUSE_MASK)
  5054. #define CSR_SDCAUSE_SDCAUSE_GET(x) (((uint32_t)(x) & CSR_SDCAUSE_SDCAUSE_MASK) >> CSR_SDCAUSE_SDCAUSE_SHIFT)
  5055. /* Bitfield definition for register: SCCTLDATA */
  5056. /*
  5057. * VA (RW)
  5058. *
  5059. * See CCTL Commands Which Access mcctldata Table
  5060. */
  5061. #define CSR_SCCTLDATA_VA_MASK (0x1FU)
  5062. #define CSR_SCCTLDATA_VA_SHIFT (0U)
  5063. #define CSR_SCCTLDATA_VA_SET(x) (((uint32_t)(x) << CSR_SCCTLDATA_VA_SHIFT) & CSR_SCCTLDATA_VA_MASK)
  5064. #define CSR_SCCTLDATA_VA_GET(x) (((uint32_t)(x) & CSR_SCCTLDATA_VA_MASK) >> CSR_SCCTLDATA_VA_SHIFT)
  5065. /* Bitfield definition for register: SCOUNTERINTEN */
  5066. /*
  5067. * HPM6 (RW)
  5068. *
  5069. * See register description
  5070. */
  5071. #define CSR_SCOUNTERINTEN_HPM6_MASK (0x40U)
  5072. #define CSR_SCOUNTERINTEN_HPM6_SHIFT (6U)
  5073. #define CSR_SCOUNTERINTEN_HPM6_SET(x) (((uint32_t)(x) << CSR_SCOUNTERINTEN_HPM6_SHIFT) & CSR_SCOUNTERINTEN_HPM6_MASK)
  5074. #define CSR_SCOUNTERINTEN_HPM6_GET(x) (((uint32_t)(x) & CSR_SCOUNTERINTEN_HPM6_MASK) >> CSR_SCOUNTERINTEN_HPM6_SHIFT)
  5075. /*
  5076. * HPM5 (RW)
  5077. *
  5078. * See register description
  5079. */
  5080. #define CSR_SCOUNTERINTEN_HPM5_MASK (0x20U)
  5081. #define CSR_SCOUNTERINTEN_HPM5_SHIFT (5U)
  5082. #define CSR_SCOUNTERINTEN_HPM5_SET(x) (((uint32_t)(x) << CSR_SCOUNTERINTEN_HPM5_SHIFT) & CSR_SCOUNTERINTEN_HPM5_MASK)
  5083. #define CSR_SCOUNTERINTEN_HPM5_GET(x) (((uint32_t)(x) & CSR_SCOUNTERINTEN_HPM5_MASK) >> CSR_SCOUNTERINTEN_HPM5_SHIFT)
  5084. /*
  5085. * HPM4 (RW)
  5086. *
  5087. * See register description
  5088. */
  5089. #define CSR_SCOUNTERINTEN_HPM4_MASK (0x10U)
  5090. #define CSR_SCOUNTERINTEN_HPM4_SHIFT (4U)
  5091. #define CSR_SCOUNTERINTEN_HPM4_SET(x) (((uint32_t)(x) << CSR_SCOUNTERINTEN_HPM4_SHIFT) & CSR_SCOUNTERINTEN_HPM4_MASK)
  5092. #define CSR_SCOUNTERINTEN_HPM4_GET(x) (((uint32_t)(x) & CSR_SCOUNTERINTEN_HPM4_MASK) >> CSR_SCOUNTERINTEN_HPM4_SHIFT)
  5093. /*
  5094. * HPM3 (RW)
  5095. *
  5096. * See register description
  5097. */
  5098. #define CSR_SCOUNTERINTEN_HPM3_MASK (0x8U)
  5099. #define CSR_SCOUNTERINTEN_HPM3_SHIFT (3U)
  5100. #define CSR_SCOUNTERINTEN_HPM3_SET(x) (((uint32_t)(x) << CSR_SCOUNTERINTEN_HPM3_SHIFT) & CSR_SCOUNTERINTEN_HPM3_MASK)
  5101. #define CSR_SCOUNTERINTEN_HPM3_GET(x) (((uint32_t)(x) & CSR_SCOUNTERINTEN_HPM3_MASK) >> CSR_SCOUNTERINTEN_HPM3_SHIFT)
  5102. /*
  5103. * IR (RW)
  5104. *
  5105. * See register description
  5106. */
  5107. #define CSR_SCOUNTERINTEN_IR_MASK (0x4U)
  5108. #define CSR_SCOUNTERINTEN_IR_SHIFT (2U)
  5109. #define CSR_SCOUNTERINTEN_IR_SET(x) (((uint32_t)(x) << CSR_SCOUNTERINTEN_IR_SHIFT) & CSR_SCOUNTERINTEN_IR_MASK)
  5110. #define CSR_SCOUNTERINTEN_IR_GET(x) (((uint32_t)(x) & CSR_SCOUNTERINTEN_IR_MASK) >> CSR_SCOUNTERINTEN_IR_SHIFT)
  5111. /*
  5112. * CY (RW)
  5113. *
  5114. * See register description
  5115. */
  5116. #define CSR_SCOUNTERINTEN_CY_MASK (0x1U)
  5117. #define CSR_SCOUNTERINTEN_CY_SHIFT (0U)
  5118. #define CSR_SCOUNTERINTEN_CY_SET(x) (((uint32_t)(x) << CSR_SCOUNTERINTEN_CY_SHIFT) & CSR_SCOUNTERINTEN_CY_MASK)
  5119. #define CSR_SCOUNTERINTEN_CY_GET(x) (((uint32_t)(x) & CSR_SCOUNTERINTEN_CY_MASK) >> CSR_SCOUNTERINTEN_CY_SHIFT)
  5120. /* Bitfield definition for register: SCOUNTERMASK_M */
  5121. /*
  5122. * HPM6 (RW)
  5123. *
  5124. * See register description
  5125. */
  5126. #define CSR_SCOUNTERMASK_M_HPM6_MASK (0x40U)
  5127. #define CSR_SCOUNTERMASK_M_HPM6_SHIFT (6U)
  5128. #define CSR_SCOUNTERMASK_M_HPM6_SET(x) (((uint32_t)(x) << CSR_SCOUNTERMASK_M_HPM6_SHIFT) & CSR_SCOUNTERMASK_M_HPM6_MASK)
  5129. #define CSR_SCOUNTERMASK_M_HPM6_GET(x) (((uint32_t)(x) & CSR_SCOUNTERMASK_M_HPM6_MASK) >> CSR_SCOUNTERMASK_M_HPM6_SHIFT)
  5130. /*
  5131. * HPM5 (RW)
  5132. *
  5133. * See register description
  5134. */
  5135. #define CSR_SCOUNTERMASK_M_HPM5_MASK (0x20U)
  5136. #define CSR_SCOUNTERMASK_M_HPM5_SHIFT (5U)
  5137. #define CSR_SCOUNTERMASK_M_HPM5_SET(x) (((uint32_t)(x) << CSR_SCOUNTERMASK_M_HPM5_SHIFT) & CSR_SCOUNTERMASK_M_HPM5_MASK)
  5138. #define CSR_SCOUNTERMASK_M_HPM5_GET(x) (((uint32_t)(x) & CSR_SCOUNTERMASK_M_HPM5_MASK) >> CSR_SCOUNTERMASK_M_HPM5_SHIFT)
  5139. /*
  5140. * HPM4 (RW)
  5141. *
  5142. * See register description
  5143. */
  5144. #define CSR_SCOUNTERMASK_M_HPM4_MASK (0x10U)
  5145. #define CSR_SCOUNTERMASK_M_HPM4_SHIFT (4U)
  5146. #define CSR_SCOUNTERMASK_M_HPM4_SET(x) (((uint32_t)(x) << CSR_SCOUNTERMASK_M_HPM4_SHIFT) & CSR_SCOUNTERMASK_M_HPM4_MASK)
  5147. #define CSR_SCOUNTERMASK_M_HPM4_GET(x) (((uint32_t)(x) & CSR_SCOUNTERMASK_M_HPM4_MASK) >> CSR_SCOUNTERMASK_M_HPM4_SHIFT)
  5148. /*
  5149. * HPM3 (RW)
  5150. *
  5151. * See register description
  5152. */
  5153. #define CSR_SCOUNTERMASK_M_HPM3_MASK (0x8U)
  5154. #define CSR_SCOUNTERMASK_M_HPM3_SHIFT (3U)
  5155. #define CSR_SCOUNTERMASK_M_HPM3_SET(x) (((uint32_t)(x) << CSR_SCOUNTERMASK_M_HPM3_SHIFT) & CSR_SCOUNTERMASK_M_HPM3_MASK)
  5156. #define CSR_SCOUNTERMASK_M_HPM3_GET(x) (((uint32_t)(x) & CSR_SCOUNTERMASK_M_HPM3_MASK) >> CSR_SCOUNTERMASK_M_HPM3_SHIFT)
  5157. /*
  5158. * IR (RW)
  5159. *
  5160. * See register description
  5161. */
  5162. #define CSR_SCOUNTERMASK_M_IR_MASK (0x4U)
  5163. #define CSR_SCOUNTERMASK_M_IR_SHIFT (2U)
  5164. #define CSR_SCOUNTERMASK_M_IR_SET(x) (((uint32_t)(x) << CSR_SCOUNTERMASK_M_IR_SHIFT) & CSR_SCOUNTERMASK_M_IR_MASK)
  5165. #define CSR_SCOUNTERMASK_M_IR_GET(x) (((uint32_t)(x) & CSR_SCOUNTERMASK_M_IR_MASK) >> CSR_SCOUNTERMASK_M_IR_SHIFT)
  5166. /*
  5167. * CY (RW)
  5168. *
  5169. * See register description
  5170. */
  5171. #define CSR_SCOUNTERMASK_M_CY_MASK (0x1U)
  5172. #define CSR_SCOUNTERMASK_M_CY_SHIFT (0U)
  5173. #define CSR_SCOUNTERMASK_M_CY_SET(x) (((uint32_t)(x) << CSR_SCOUNTERMASK_M_CY_SHIFT) & CSR_SCOUNTERMASK_M_CY_MASK)
  5174. #define CSR_SCOUNTERMASK_M_CY_GET(x) (((uint32_t)(x) & CSR_SCOUNTERMASK_M_CY_MASK) >> CSR_SCOUNTERMASK_M_CY_SHIFT)
  5175. /* Bitfield definition for register: SCOUNTERMASK_S */
  5176. /*
  5177. * HPM6 (RW)
  5178. *
  5179. * See register description
  5180. */
  5181. #define CSR_SCOUNTERMASK_S_HPM6_MASK (0x40U)
  5182. #define CSR_SCOUNTERMASK_S_HPM6_SHIFT (6U)
  5183. #define CSR_SCOUNTERMASK_S_HPM6_SET(x) (((uint32_t)(x) << CSR_SCOUNTERMASK_S_HPM6_SHIFT) & CSR_SCOUNTERMASK_S_HPM6_MASK)
  5184. #define CSR_SCOUNTERMASK_S_HPM6_GET(x) (((uint32_t)(x) & CSR_SCOUNTERMASK_S_HPM6_MASK) >> CSR_SCOUNTERMASK_S_HPM6_SHIFT)
  5185. /*
  5186. * HPM5 (RW)
  5187. *
  5188. * See register description
  5189. */
  5190. #define CSR_SCOUNTERMASK_S_HPM5_MASK (0x20U)
  5191. #define CSR_SCOUNTERMASK_S_HPM5_SHIFT (5U)
  5192. #define CSR_SCOUNTERMASK_S_HPM5_SET(x) (((uint32_t)(x) << CSR_SCOUNTERMASK_S_HPM5_SHIFT) & CSR_SCOUNTERMASK_S_HPM5_MASK)
  5193. #define CSR_SCOUNTERMASK_S_HPM5_GET(x) (((uint32_t)(x) & CSR_SCOUNTERMASK_S_HPM5_MASK) >> CSR_SCOUNTERMASK_S_HPM5_SHIFT)
  5194. /*
  5195. * HPM4 (RW)
  5196. *
  5197. * See register description
  5198. */
  5199. #define CSR_SCOUNTERMASK_S_HPM4_MASK (0x10U)
  5200. #define CSR_SCOUNTERMASK_S_HPM4_SHIFT (4U)
  5201. #define CSR_SCOUNTERMASK_S_HPM4_SET(x) (((uint32_t)(x) << CSR_SCOUNTERMASK_S_HPM4_SHIFT) & CSR_SCOUNTERMASK_S_HPM4_MASK)
  5202. #define CSR_SCOUNTERMASK_S_HPM4_GET(x) (((uint32_t)(x) & CSR_SCOUNTERMASK_S_HPM4_MASK) >> CSR_SCOUNTERMASK_S_HPM4_SHIFT)
  5203. /*
  5204. * HPM3 (RW)
  5205. *
  5206. * See register description
  5207. */
  5208. #define CSR_SCOUNTERMASK_S_HPM3_MASK (0x8U)
  5209. #define CSR_SCOUNTERMASK_S_HPM3_SHIFT (3U)
  5210. #define CSR_SCOUNTERMASK_S_HPM3_SET(x) (((uint32_t)(x) << CSR_SCOUNTERMASK_S_HPM3_SHIFT) & CSR_SCOUNTERMASK_S_HPM3_MASK)
  5211. #define CSR_SCOUNTERMASK_S_HPM3_GET(x) (((uint32_t)(x) & CSR_SCOUNTERMASK_S_HPM3_MASK) >> CSR_SCOUNTERMASK_S_HPM3_SHIFT)
  5212. /*
  5213. * IR (RW)
  5214. *
  5215. * See register description
  5216. */
  5217. #define CSR_SCOUNTERMASK_S_IR_MASK (0x4U)
  5218. #define CSR_SCOUNTERMASK_S_IR_SHIFT (2U)
  5219. #define CSR_SCOUNTERMASK_S_IR_SET(x) (((uint32_t)(x) << CSR_SCOUNTERMASK_S_IR_SHIFT) & CSR_SCOUNTERMASK_S_IR_MASK)
  5220. #define CSR_SCOUNTERMASK_S_IR_GET(x) (((uint32_t)(x) & CSR_SCOUNTERMASK_S_IR_MASK) >> CSR_SCOUNTERMASK_S_IR_SHIFT)
  5221. /*
  5222. * CY (RW)
  5223. *
  5224. * See register description
  5225. */
  5226. #define CSR_SCOUNTERMASK_S_CY_MASK (0x1U)
  5227. #define CSR_SCOUNTERMASK_S_CY_SHIFT (0U)
  5228. #define CSR_SCOUNTERMASK_S_CY_SET(x) (((uint32_t)(x) << CSR_SCOUNTERMASK_S_CY_SHIFT) & CSR_SCOUNTERMASK_S_CY_MASK)
  5229. #define CSR_SCOUNTERMASK_S_CY_GET(x) (((uint32_t)(x) & CSR_SCOUNTERMASK_S_CY_MASK) >> CSR_SCOUNTERMASK_S_CY_SHIFT)
  5230. /* Bitfield definition for register: SCOUNTERMASK_U */
  5231. /*
  5232. * HPM6 (RW)
  5233. *
  5234. * See register description
  5235. */
  5236. #define CSR_SCOUNTERMASK_U_HPM6_MASK (0x40U)
  5237. #define CSR_SCOUNTERMASK_U_HPM6_SHIFT (6U)
  5238. #define CSR_SCOUNTERMASK_U_HPM6_SET(x) (((uint32_t)(x) << CSR_SCOUNTERMASK_U_HPM6_SHIFT) & CSR_SCOUNTERMASK_U_HPM6_MASK)
  5239. #define CSR_SCOUNTERMASK_U_HPM6_GET(x) (((uint32_t)(x) & CSR_SCOUNTERMASK_U_HPM6_MASK) >> CSR_SCOUNTERMASK_U_HPM6_SHIFT)
  5240. /*
  5241. * HPM5 (RW)
  5242. *
  5243. * See register description
  5244. */
  5245. #define CSR_SCOUNTERMASK_U_HPM5_MASK (0x20U)
  5246. #define CSR_SCOUNTERMASK_U_HPM5_SHIFT (5U)
  5247. #define CSR_SCOUNTERMASK_U_HPM5_SET(x) (((uint32_t)(x) << CSR_SCOUNTERMASK_U_HPM5_SHIFT) & CSR_SCOUNTERMASK_U_HPM5_MASK)
  5248. #define CSR_SCOUNTERMASK_U_HPM5_GET(x) (((uint32_t)(x) & CSR_SCOUNTERMASK_U_HPM5_MASK) >> CSR_SCOUNTERMASK_U_HPM5_SHIFT)
  5249. /*
  5250. * HPM4 (RW)
  5251. *
  5252. * See register description
  5253. */
  5254. #define CSR_SCOUNTERMASK_U_HPM4_MASK (0x10U)
  5255. #define CSR_SCOUNTERMASK_U_HPM4_SHIFT (4U)
  5256. #define CSR_SCOUNTERMASK_U_HPM4_SET(x) (((uint32_t)(x) << CSR_SCOUNTERMASK_U_HPM4_SHIFT) & CSR_SCOUNTERMASK_U_HPM4_MASK)
  5257. #define CSR_SCOUNTERMASK_U_HPM4_GET(x) (((uint32_t)(x) & CSR_SCOUNTERMASK_U_HPM4_MASK) >> CSR_SCOUNTERMASK_U_HPM4_SHIFT)
  5258. /*
  5259. * HPM3 (RW)
  5260. *
  5261. * See register description
  5262. */
  5263. #define CSR_SCOUNTERMASK_U_HPM3_MASK (0x8U)
  5264. #define CSR_SCOUNTERMASK_U_HPM3_SHIFT (3U)
  5265. #define CSR_SCOUNTERMASK_U_HPM3_SET(x) (((uint32_t)(x) << CSR_SCOUNTERMASK_U_HPM3_SHIFT) & CSR_SCOUNTERMASK_U_HPM3_MASK)
  5266. #define CSR_SCOUNTERMASK_U_HPM3_GET(x) (((uint32_t)(x) & CSR_SCOUNTERMASK_U_HPM3_MASK) >> CSR_SCOUNTERMASK_U_HPM3_SHIFT)
  5267. /*
  5268. * IR (RW)
  5269. *
  5270. * See register description
  5271. */
  5272. #define CSR_SCOUNTERMASK_U_IR_MASK (0x4U)
  5273. #define CSR_SCOUNTERMASK_U_IR_SHIFT (2U)
  5274. #define CSR_SCOUNTERMASK_U_IR_SET(x) (((uint32_t)(x) << CSR_SCOUNTERMASK_U_IR_SHIFT) & CSR_SCOUNTERMASK_U_IR_MASK)
  5275. #define CSR_SCOUNTERMASK_U_IR_GET(x) (((uint32_t)(x) & CSR_SCOUNTERMASK_U_IR_MASK) >> CSR_SCOUNTERMASK_U_IR_SHIFT)
  5276. /*
  5277. * CY (RW)
  5278. *
  5279. * See register description
  5280. */
  5281. #define CSR_SCOUNTERMASK_U_CY_MASK (0x1U)
  5282. #define CSR_SCOUNTERMASK_U_CY_SHIFT (0U)
  5283. #define CSR_SCOUNTERMASK_U_CY_SET(x) (((uint32_t)(x) << CSR_SCOUNTERMASK_U_CY_SHIFT) & CSR_SCOUNTERMASK_U_CY_MASK)
  5284. #define CSR_SCOUNTERMASK_U_CY_GET(x) (((uint32_t)(x) & CSR_SCOUNTERMASK_U_CY_MASK) >> CSR_SCOUNTERMASK_U_CY_SHIFT)
  5285. /* Bitfield definition for register: SCOUNTEROVF */
  5286. /*
  5287. * HPM6 (RW)
  5288. *
  5289. * See register description
  5290. */
  5291. #define CSR_SCOUNTEROVF_HPM6_MASK (0x40U)
  5292. #define CSR_SCOUNTEROVF_HPM6_SHIFT (6U)
  5293. #define CSR_SCOUNTEROVF_HPM6_SET(x) (((uint32_t)(x) << CSR_SCOUNTEROVF_HPM6_SHIFT) & CSR_SCOUNTEROVF_HPM6_MASK)
  5294. #define CSR_SCOUNTEROVF_HPM6_GET(x) (((uint32_t)(x) & CSR_SCOUNTEROVF_HPM6_MASK) >> CSR_SCOUNTEROVF_HPM6_SHIFT)
  5295. /*
  5296. * HPM5 (RW)
  5297. *
  5298. * See register description
  5299. */
  5300. #define CSR_SCOUNTEROVF_HPM5_MASK (0x20U)
  5301. #define CSR_SCOUNTEROVF_HPM5_SHIFT (5U)
  5302. #define CSR_SCOUNTEROVF_HPM5_SET(x) (((uint32_t)(x) << CSR_SCOUNTEROVF_HPM5_SHIFT) & CSR_SCOUNTEROVF_HPM5_MASK)
  5303. #define CSR_SCOUNTEROVF_HPM5_GET(x) (((uint32_t)(x) & CSR_SCOUNTEROVF_HPM5_MASK) >> CSR_SCOUNTEROVF_HPM5_SHIFT)
  5304. /*
  5305. * HPM4 (RW)
  5306. *
  5307. * See register description
  5308. */
  5309. #define CSR_SCOUNTEROVF_HPM4_MASK (0x10U)
  5310. #define CSR_SCOUNTEROVF_HPM4_SHIFT (4U)
  5311. #define CSR_SCOUNTEROVF_HPM4_SET(x) (((uint32_t)(x) << CSR_SCOUNTEROVF_HPM4_SHIFT) & CSR_SCOUNTEROVF_HPM4_MASK)
  5312. #define CSR_SCOUNTEROVF_HPM4_GET(x) (((uint32_t)(x) & CSR_SCOUNTEROVF_HPM4_MASK) >> CSR_SCOUNTEROVF_HPM4_SHIFT)
  5313. /*
  5314. * HPM3 (RW)
  5315. *
  5316. * See register description
  5317. */
  5318. #define CSR_SCOUNTEROVF_HPM3_MASK (0x8U)
  5319. #define CSR_SCOUNTEROVF_HPM3_SHIFT (3U)
  5320. #define CSR_SCOUNTEROVF_HPM3_SET(x) (((uint32_t)(x) << CSR_SCOUNTEROVF_HPM3_SHIFT) & CSR_SCOUNTEROVF_HPM3_MASK)
  5321. #define CSR_SCOUNTEROVF_HPM3_GET(x) (((uint32_t)(x) & CSR_SCOUNTEROVF_HPM3_MASK) >> CSR_SCOUNTEROVF_HPM3_SHIFT)
  5322. /*
  5323. * IR (RW)
  5324. *
  5325. * See register description
  5326. */
  5327. #define CSR_SCOUNTEROVF_IR_MASK (0x4U)
  5328. #define CSR_SCOUNTEROVF_IR_SHIFT (2U)
  5329. #define CSR_SCOUNTEROVF_IR_SET(x) (((uint32_t)(x) << CSR_SCOUNTEROVF_IR_SHIFT) & CSR_SCOUNTEROVF_IR_MASK)
  5330. #define CSR_SCOUNTEROVF_IR_GET(x) (((uint32_t)(x) & CSR_SCOUNTEROVF_IR_MASK) >> CSR_SCOUNTEROVF_IR_SHIFT)
  5331. /*
  5332. * CY (RW)
  5333. *
  5334. * See register description
  5335. */
  5336. #define CSR_SCOUNTEROVF_CY_MASK (0x1U)
  5337. #define CSR_SCOUNTEROVF_CY_SHIFT (0U)
  5338. #define CSR_SCOUNTEROVF_CY_SET(x) (((uint32_t)(x) << CSR_SCOUNTEROVF_CY_SHIFT) & CSR_SCOUNTEROVF_CY_MASK)
  5339. #define CSR_SCOUNTEROVF_CY_GET(x) (((uint32_t)(x) & CSR_SCOUNTEROVF_CY_MASK) >> CSR_SCOUNTEROVF_CY_SHIFT)
  5340. /* Bitfield definition for register: SCOUNTINHIBIT */
  5341. /*
  5342. * HPM6 (RW)
  5343. *
  5344. * See register description
  5345. */
  5346. #define CSR_SCOUNTINHIBIT_HPM6_MASK (0x40U)
  5347. #define CSR_SCOUNTINHIBIT_HPM6_SHIFT (6U)
  5348. #define CSR_SCOUNTINHIBIT_HPM6_SET(x) (((uint32_t)(x) << CSR_SCOUNTINHIBIT_HPM6_SHIFT) & CSR_SCOUNTINHIBIT_HPM6_MASK)
  5349. #define CSR_SCOUNTINHIBIT_HPM6_GET(x) (((uint32_t)(x) & CSR_SCOUNTINHIBIT_HPM6_MASK) >> CSR_SCOUNTINHIBIT_HPM6_SHIFT)
  5350. /*
  5351. * HPM5 (RW)
  5352. *
  5353. * See register description
  5354. */
  5355. #define CSR_SCOUNTINHIBIT_HPM5_MASK (0x20U)
  5356. #define CSR_SCOUNTINHIBIT_HPM5_SHIFT (5U)
  5357. #define CSR_SCOUNTINHIBIT_HPM5_SET(x) (((uint32_t)(x) << CSR_SCOUNTINHIBIT_HPM5_SHIFT) & CSR_SCOUNTINHIBIT_HPM5_MASK)
  5358. #define CSR_SCOUNTINHIBIT_HPM5_GET(x) (((uint32_t)(x) & CSR_SCOUNTINHIBIT_HPM5_MASK) >> CSR_SCOUNTINHIBIT_HPM5_SHIFT)
  5359. /*
  5360. * HPM4 (RW)
  5361. *
  5362. * See register description
  5363. */
  5364. #define CSR_SCOUNTINHIBIT_HPM4_MASK (0x10U)
  5365. #define CSR_SCOUNTINHIBIT_HPM4_SHIFT (4U)
  5366. #define CSR_SCOUNTINHIBIT_HPM4_SET(x) (((uint32_t)(x) << CSR_SCOUNTINHIBIT_HPM4_SHIFT) & CSR_SCOUNTINHIBIT_HPM4_MASK)
  5367. #define CSR_SCOUNTINHIBIT_HPM4_GET(x) (((uint32_t)(x) & CSR_SCOUNTINHIBIT_HPM4_MASK) >> CSR_SCOUNTINHIBIT_HPM4_SHIFT)
  5368. /*
  5369. * HPM3 (RW)
  5370. *
  5371. * See register description
  5372. */
  5373. #define CSR_SCOUNTINHIBIT_HPM3_MASK (0x8U)
  5374. #define CSR_SCOUNTINHIBIT_HPM3_SHIFT (3U)
  5375. #define CSR_SCOUNTINHIBIT_HPM3_SET(x) (((uint32_t)(x) << CSR_SCOUNTINHIBIT_HPM3_SHIFT) & CSR_SCOUNTINHIBIT_HPM3_MASK)
  5376. #define CSR_SCOUNTINHIBIT_HPM3_GET(x) (((uint32_t)(x) & CSR_SCOUNTINHIBIT_HPM3_MASK) >> CSR_SCOUNTINHIBIT_HPM3_SHIFT)
  5377. /*
  5378. * IR (RW)
  5379. *
  5380. * See register description
  5381. */
  5382. #define CSR_SCOUNTINHIBIT_IR_MASK (0x4U)
  5383. #define CSR_SCOUNTINHIBIT_IR_SHIFT (2U)
  5384. #define CSR_SCOUNTINHIBIT_IR_SET(x) (((uint32_t)(x) << CSR_SCOUNTINHIBIT_IR_SHIFT) & CSR_SCOUNTINHIBIT_IR_MASK)
  5385. #define CSR_SCOUNTINHIBIT_IR_GET(x) (((uint32_t)(x) & CSR_SCOUNTINHIBIT_IR_MASK) >> CSR_SCOUNTINHIBIT_IR_SHIFT)
  5386. /*
  5387. * TM (RW)
  5388. *
  5389. * See register description
  5390. */
  5391. #define CSR_SCOUNTINHIBIT_TM_MASK (0x2U)
  5392. #define CSR_SCOUNTINHIBIT_TM_SHIFT (1U)
  5393. #define CSR_SCOUNTINHIBIT_TM_SET(x) (((uint32_t)(x) << CSR_SCOUNTINHIBIT_TM_SHIFT) & CSR_SCOUNTINHIBIT_TM_MASK)
  5394. #define CSR_SCOUNTINHIBIT_TM_GET(x) (((uint32_t)(x) & CSR_SCOUNTINHIBIT_TM_MASK) >> CSR_SCOUNTINHIBIT_TM_SHIFT)
  5395. /*
  5396. * CY (RW)
  5397. *
  5398. * See register description
  5399. */
  5400. #define CSR_SCOUNTINHIBIT_CY_MASK (0x1U)
  5401. #define CSR_SCOUNTINHIBIT_CY_SHIFT (0U)
  5402. #define CSR_SCOUNTINHIBIT_CY_SET(x) (((uint32_t)(x) << CSR_SCOUNTINHIBIT_CY_SHIFT) & CSR_SCOUNTINHIBIT_CY_MASK)
  5403. #define CSR_SCOUNTINHIBIT_CY_GET(x) (((uint32_t)(x) & CSR_SCOUNTINHIBIT_CY_MASK) >> CSR_SCOUNTINHIBIT_CY_SHIFT)
  5404. /* Bitfield definition for register: SHPMEVENT3 */
  5405. /*
  5406. * SEL (RW)
  5407. *
  5408. * See Event Selectors table
  5409. */
  5410. #define CSR_SHPMEVENT3_SEL_MASK (0x1F0U)
  5411. #define CSR_SHPMEVENT3_SEL_SHIFT (4U)
  5412. #define CSR_SHPMEVENT3_SEL_SET(x) (((uint32_t)(x) << CSR_SHPMEVENT3_SEL_SHIFT) & CSR_SHPMEVENT3_SEL_MASK)
  5413. #define CSR_SHPMEVENT3_SEL_GET(x) (((uint32_t)(x) & CSR_SHPMEVENT3_SEL_MASK) >> CSR_SHPMEVENT3_SEL_SHIFT)
  5414. /*
  5415. * TYPE (RW)
  5416. *
  5417. * See Event Selectors table
  5418. */
  5419. #define CSR_SHPMEVENT3_TYPE_MASK (0xFU)
  5420. #define CSR_SHPMEVENT3_TYPE_SHIFT (0U)
  5421. #define CSR_SHPMEVENT3_TYPE_SET(x) (((uint32_t)(x) << CSR_SHPMEVENT3_TYPE_SHIFT) & CSR_SHPMEVENT3_TYPE_MASK)
  5422. #define CSR_SHPMEVENT3_TYPE_GET(x) (((uint32_t)(x) & CSR_SHPMEVENT3_TYPE_MASK) >> CSR_SHPMEVENT3_TYPE_SHIFT)
  5423. /* Bitfield definition for register: SHPMEVENT4 */
  5424. /*
  5425. * SEL (RW)
  5426. *
  5427. * See Event Selectors table
  5428. */
  5429. #define CSR_SHPMEVENT4_SEL_MASK (0x1F0U)
  5430. #define CSR_SHPMEVENT4_SEL_SHIFT (4U)
  5431. #define CSR_SHPMEVENT4_SEL_SET(x) (((uint32_t)(x) << CSR_SHPMEVENT4_SEL_SHIFT) & CSR_SHPMEVENT4_SEL_MASK)
  5432. #define CSR_SHPMEVENT4_SEL_GET(x) (((uint32_t)(x) & CSR_SHPMEVENT4_SEL_MASK) >> CSR_SHPMEVENT4_SEL_SHIFT)
  5433. /*
  5434. * TYPE (RW)
  5435. *
  5436. * See Event Selectors table
  5437. */
  5438. #define CSR_SHPMEVENT4_TYPE_MASK (0xFU)
  5439. #define CSR_SHPMEVENT4_TYPE_SHIFT (0U)
  5440. #define CSR_SHPMEVENT4_TYPE_SET(x) (((uint32_t)(x) << CSR_SHPMEVENT4_TYPE_SHIFT) & CSR_SHPMEVENT4_TYPE_MASK)
  5441. #define CSR_SHPMEVENT4_TYPE_GET(x) (((uint32_t)(x) & CSR_SHPMEVENT4_TYPE_MASK) >> CSR_SHPMEVENT4_TYPE_SHIFT)
  5442. /* Bitfield definition for register: SHPMEVENT5 */
  5443. /*
  5444. * SEL (RW)
  5445. *
  5446. * See Event Selectors table
  5447. */
  5448. #define CSR_SHPMEVENT5_SEL_MASK (0x1F0U)
  5449. #define CSR_SHPMEVENT5_SEL_SHIFT (4U)
  5450. #define CSR_SHPMEVENT5_SEL_SET(x) (((uint32_t)(x) << CSR_SHPMEVENT5_SEL_SHIFT) & CSR_SHPMEVENT5_SEL_MASK)
  5451. #define CSR_SHPMEVENT5_SEL_GET(x) (((uint32_t)(x) & CSR_SHPMEVENT5_SEL_MASK) >> CSR_SHPMEVENT5_SEL_SHIFT)
  5452. /*
  5453. * TYPE (RW)
  5454. *
  5455. * See Event Selectors table
  5456. */
  5457. #define CSR_SHPMEVENT5_TYPE_MASK (0xFU)
  5458. #define CSR_SHPMEVENT5_TYPE_SHIFT (0U)
  5459. #define CSR_SHPMEVENT5_TYPE_SET(x) (((uint32_t)(x) << CSR_SHPMEVENT5_TYPE_SHIFT) & CSR_SHPMEVENT5_TYPE_MASK)
  5460. #define CSR_SHPMEVENT5_TYPE_GET(x) (((uint32_t)(x) & CSR_SHPMEVENT5_TYPE_MASK) >> CSR_SHPMEVENT5_TYPE_SHIFT)
  5461. /* Bitfield definition for register: SHPMEVENT6 */
  5462. /*
  5463. * SEL (RW)
  5464. *
  5465. * See Event Selectors table
  5466. */
  5467. #define CSR_SHPMEVENT6_SEL_MASK (0x1F0U)
  5468. #define CSR_SHPMEVENT6_SEL_SHIFT (4U)
  5469. #define CSR_SHPMEVENT6_SEL_SET(x) (((uint32_t)(x) << CSR_SHPMEVENT6_SEL_SHIFT) & CSR_SHPMEVENT6_SEL_MASK)
  5470. #define CSR_SHPMEVENT6_SEL_GET(x) (((uint32_t)(x) & CSR_SHPMEVENT6_SEL_MASK) >> CSR_SHPMEVENT6_SEL_SHIFT)
  5471. /*
  5472. * TYPE (RW)
  5473. *
  5474. * See Event Selectors table
  5475. */
  5476. #define CSR_SHPMEVENT6_TYPE_MASK (0xFU)
  5477. #define CSR_SHPMEVENT6_TYPE_SHIFT (0U)
  5478. #define CSR_SHPMEVENT6_TYPE_SET(x) (((uint32_t)(x) << CSR_SHPMEVENT6_TYPE_SHIFT) & CSR_SHPMEVENT6_TYPE_MASK)
  5479. #define CSR_SHPMEVENT6_TYPE_GET(x) (((uint32_t)(x) & CSR_SHPMEVENT6_TYPE_MASK) >> CSR_SHPMEVENT6_TYPE_SHIFT)
  5480. /* Bitfield definition for register: MICM_CFG */
  5481. /*
  5482. * SETH (RO)
  5483. *
  5484. * This bit extends the ISET field.
  5485. * When instruction cache is not configured, this field should be ignored.
  5486. */
  5487. #define CSR_MICM_CFG_SETH_MASK (0x1000000UL)
  5488. #define CSR_MICM_CFG_SETH_SHIFT (24U)
  5489. #define CSR_MICM_CFG_SETH_GET(x) (((uint32_t)(x) & CSR_MICM_CFG_SETH_MASK) >> CSR_MICM_CFG_SETH_SHIFT)
  5490. /*
  5491. * ILM_ECC (RO)
  5492. *
  5493. * ILM soft-error protection scheme
  5494. * 0:No parity/ECC
  5495. * 1:Parity
  5496. * 2:ECC
  5497. * 3:Reserved
  5498. * ILM is not configured, this field should be ignored.
  5499. */
  5500. #define CSR_MICM_CFG_ILM_ECC_MASK (0x600000UL)
  5501. #define CSR_MICM_CFG_ILM_ECC_SHIFT (21U)
  5502. #define CSR_MICM_CFG_ILM_ECC_GET(x) (((uint32_t)(x) & CSR_MICM_CFG_ILM_ECC_MASK) >> CSR_MICM_CFG_ILM_ECC_SHIFT)
  5503. /*
  5504. * ILMSZ (RO)
  5505. *
  5506. * ILM Size
  5507. * 0:0 Byte
  5508. * 1:1 KiB
  5509. * 2:2 KiB
  5510. * 3:4 KiB
  5511. * 4:8 KiB
  5512. * 5:16 KiB
  5513. * 6:32 KiB
  5514. * 7:64 KiB
  5515. * 8:128 KiB
  5516. * 9:256 KiB
  5517. * 10:512 KiB
  5518. * 11:1 MiB
  5519. * 12:2 MiB
  5520. * 13:4 MiB
  5521. * 14:8 MiB
  5522. * 15:16 MiB
  5523. * 16-31:Reserved
  5524. * When ILM is not configured, this field should be ignored.
  5525. */
  5526. #define CSR_MICM_CFG_ILMSZ_MASK (0xF8000UL)
  5527. #define CSR_MICM_CFG_ILMSZ_SHIFT (15U)
  5528. #define CSR_MICM_CFG_ILMSZ_GET(x) (((uint32_t)(x) & CSR_MICM_CFG_ILMSZ_MASK) >> CSR_MICM_CFG_ILMSZ_SHIFT)
  5529. /*
  5530. * ILMB (RW)
  5531. *
  5532. * Number of ILM base registers present
  5533. * 0:No ILM base register present
  5534. * 1:One ILM base register present
  5535. * 2-7:Reserved
  5536. * When ILM is not configured, this field should be ignored.
  5537. */
  5538. #define CSR_MICM_CFG_ILMB_MASK (0x7000U)
  5539. #define CSR_MICM_CFG_ILMB_SHIFT (12U)
  5540. #define CSR_MICM_CFG_ILMB_SET(x) (((uint32_t)(x) << CSR_MICM_CFG_ILMB_SHIFT) & CSR_MICM_CFG_ILMB_MASK)
  5541. #define CSR_MICM_CFG_ILMB_GET(x) (((uint32_t)(x) & CSR_MICM_CFG_ILMB_MASK) >> CSR_MICM_CFG_ILMB_SHIFT)
  5542. /*
  5543. * IC_ECC (RO)
  5544. *
  5545. * Cache soft-error protection scheme
  5546. * 0:No parity/ECC
  5547. * 1:Parity
  5548. * 2:ECC
  5549. * 3:Reserved
  5550. * When instruction cache is not configured, this field should be ignored.
  5551. */
  5552. #define CSR_MICM_CFG_IC_ECC_MASK (0xC00U)
  5553. #define CSR_MICM_CFG_IC_ECC_SHIFT (10U)
  5554. #define CSR_MICM_CFG_IC_ECC_GET(x) (((uint32_t)(x) & CSR_MICM_CFG_IC_ECC_MASK) >> CSR_MICM_CFG_IC_ECC_SHIFT)
  5555. /*
  5556. * ILCK (RO)
  5557. *
  5558. * I-Cache locking support
  5559. * 0:No locking support
  5560. * 1:With locking support
  5561. * When instruction cache is not configured, this field should be ignored.
  5562. */
  5563. #define CSR_MICM_CFG_ILCK_MASK (0x200U)
  5564. #define CSR_MICM_CFG_ILCK_SHIFT (9U)
  5565. #define CSR_MICM_CFG_ILCK_GET(x) (((uint32_t)(x) & CSR_MICM_CFG_ILCK_MASK) >> CSR_MICM_CFG_ILCK_SHIFT)
  5566. /*
  5567. * ISZ (RO)
  5568. *
  5569. * Cache block (line) size
  5570. * 0:No I-Cache
  5571. * 1:8 bytes
  5572. * 2:16 bytes
  5573. * 3:32 bytes
  5574. * 4:64 bytes
  5575. * 5:128 bytes
  5576. * 6-7:Reserved
  5577. * When instruction cache is not configured, this field should be ignored.
  5578. */
  5579. #define CSR_MICM_CFG_ISZ_MASK (0x1C0U)
  5580. #define CSR_MICM_CFG_ISZ_SHIFT (6U)
  5581. #define CSR_MICM_CFG_ISZ_GET(x) (((uint32_t)(x) & CSR_MICM_CFG_ISZ_MASK) >> CSR_MICM_CFG_ISZ_SHIFT)
  5582. /*
  5583. * IWAY (RO)
  5584. *
  5585. * Associativity of I-Cache
  5586. * 0:Direct-mapped
  5587. * 1:2-way
  5588. * 2:3-way
  5589. * 3:4-way
  5590. * 4:5-way
  5591. * 5:6-way
  5592. * 6:7-way
  5593. * 7:8-way
  5594. * When instruction cache is not configured, this field should be ignored.
  5595. */
  5596. #define CSR_MICM_CFG_IWAY_MASK (0x38U)
  5597. #define CSR_MICM_CFG_IWAY_SHIFT (3U)
  5598. #define CSR_MICM_CFG_IWAY_GET(x) (((uint32_t)(x) & CSR_MICM_CFG_IWAY_MASK) >> CSR_MICM_CFG_IWAY_SHIFT)
  5599. /*
  5600. * ISET (RO)
  5601. *
  5602. * I-Cache sets (# of cache lines per way):
  5603. * When micm_cfg.SETH==0:
  5604. * 0:64
  5605. * 1:128
  5606. * 2:256
  5607. * 3:512
  5608. * 4:1024
  5609. * 5:2048
  5610. * 6:4096
  5611. * 7:Reserved
  5612. * When micm_cfg.SETH==1:
  5613. * 0:32
  5614. * 1:16
  5615. * 2:8
  5616. * 3-7:Reserved
  5617. */
  5618. #define CSR_MICM_CFG_ISET_MASK (0x7U)
  5619. #define CSR_MICM_CFG_ISET_SHIFT (0U)
  5620. #define CSR_MICM_CFG_ISET_GET(x) (((uint32_t)(x) & CSR_MICM_CFG_ISET_MASK) >> CSR_MICM_CFG_ISET_SHIFT)
  5621. /* Bitfield definition for register: MDCM_CFG */
  5622. /*
  5623. * SETH (RO)
  5624. *
  5625. * This bit extends the DSET field.
  5626. * When data cache is not configured, this field should be ignored
  5627. */
  5628. #define CSR_MDCM_CFG_SETH_MASK (0x1000000UL)
  5629. #define CSR_MDCM_CFG_SETH_SHIFT (24U)
  5630. #define CSR_MDCM_CFG_SETH_GET(x) (((uint32_t)(x) & CSR_MDCM_CFG_SETH_MASK) >> CSR_MDCM_CFG_SETH_SHIFT)
  5631. /*
  5632. * DLM_ECC (RO)
  5633. *
  5634. * DLM soft-error protection scheme
  5635. * 0:No parity/ECC
  5636. * 1:Parity
  5637. * 2:ECC
  5638. * 3:Reserved
  5639. * When DLM is not configured, this field should be ignored.
  5640. */
  5641. #define CSR_MDCM_CFG_DLM_ECC_MASK (0x600000UL)
  5642. #define CSR_MDCM_CFG_DLM_ECC_SHIFT (21U)
  5643. #define CSR_MDCM_CFG_DLM_ECC_GET(x) (((uint32_t)(x) & CSR_MDCM_CFG_DLM_ECC_MASK) >> CSR_MDCM_CFG_DLM_ECC_SHIFT)
  5644. /*
  5645. * DLMSZ (RO)
  5646. *
  5647. * DLM Size
  5648. * 0:0 Byte
  5649. * 1:1 KiB
  5650. * 2:2 KiB
  5651. * 3:4 KiB
  5652. * 4:8 KiB
  5653. * 5:16 KiB
  5654. * 6:32 KiB
  5655. * 7:64 KiB
  5656. * 8:128 KiB
  5657. * 9:256 KiB
  5658. * 10:512 KiB
  5659. * 11:1 MiB
  5660. * 12:2 MiB
  5661. * 13:4 MiB
  5662. * 14:8 MiB
  5663. * 15:16 MiB
  5664. * 16-31:Reserved
  5665. * When ILM is not configured, this field should be ignored.
  5666. */
  5667. #define CSR_MDCM_CFG_DLMSZ_MASK (0xF8000UL)
  5668. #define CSR_MDCM_CFG_DLMSZ_SHIFT (15U)
  5669. #define CSR_MDCM_CFG_DLMSZ_GET(x) (((uint32_t)(x) & CSR_MDCM_CFG_DLMSZ_MASK) >> CSR_MDCM_CFG_DLMSZ_SHIFT)
  5670. /*
  5671. * DLMB (RO)
  5672. *
  5673. * Number of DLM base registers present
  5674. * 0:No DLM base register present
  5675. * 1:One DLM base register present
  5676. * 2-7:Reserved
  5677. * When DLM is not configured, this field should be ignored
  5678. */
  5679. #define CSR_MDCM_CFG_DLMB_MASK (0x7000U)
  5680. #define CSR_MDCM_CFG_DLMB_SHIFT (12U)
  5681. #define CSR_MDCM_CFG_DLMB_GET(x) (((uint32_t)(x) & CSR_MDCM_CFG_DLMB_MASK) >> CSR_MDCM_CFG_DLMB_SHIFT)
  5682. /*
  5683. * DC_ECC (RO)
  5684. *
  5685. * Cache soft-error protection scheme
  5686. * 0:No parity/ECC support
  5687. * 1:Has parity support
  5688. * 2:Has ECC support
  5689. * 3:Reserved
  5690. * When data cache is not configured, this field should be ignored.
  5691. */
  5692. #define CSR_MDCM_CFG_DC_ECC_MASK (0xC00U)
  5693. #define CSR_MDCM_CFG_DC_ECC_SHIFT (10U)
  5694. #define CSR_MDCM_CFG_DC_ECC_GET(x) (((uint32_t)(x) & CSR_MDCM_CFG_DC_ECC_MASK) >> CSR_MDCM_CFG_DC_ECC_SHIFT)
  5695. /*
  5696. * DLCK (RO)
  5697. *
  5698. * D-Cache locking support
  5699. * 0:No locking support
  5700. * 1:With locking support
  5701. * When data cache is not configured, this field should be ignored.
  5702. */
  5703. #define CSR_MDCM_CFG_DLCK_MASK (0x200U)
  5704. #define CSR_MDCM_CFG_DLCK_SHIFT (9U)
  5705. #define CSR_MDCM_CFG_DLCK_GET(x) (((uint32_t)(x) & CSR_MDCM_CFG_DLCK_MASK) >> CSR_MDCM_CFG_DLCK_SHIFT)
  5706. /*
  5707. * DSZ (RO)
  5708. *
  5709. * Cache block (line) size
  5710. * 0:No I-Cache
  5711. * 1:8 bytes
  5712. * 2:16 bytes
  5713. * 3:32 bytes
  5714. * 4:64 bytes
  5715. * 5:128 bytes
  5716. * 6-7:Reserved
  5717. * When instruction cache is not configured, this field should be ignored.
  5718. */
  5719. #define CSR_MDCM_CFG_DSZ_MASK (0x1C0U)
  5720. #define CSR_MDCM_CFG_DSZ_SHIFT (6U)
  5721. #define CSR_MDCM_CFG_DSZ_GET(x) (((uint32_t)(x) & CSR_MDCM_CFG_DSZ_MASK) >> CSR_MDCM_CFG_DSZ_SHIFT)
  5722. /*
  5723. * DWAY (RO)
  5724. *
  5725. * Associativity of D-Cache
  5726. * 0:Direct-mapped
  5727. * 1:2-way
  5728. * 2:3-way
  5729. * 3:4-way
  5730. * 4:5-way
  5731. * 5:6-way
  5732. * 6:7-way
  5733. * 7:8-way
  5734. * When data cache is not configured, this field should be ignored.
  5735. */
  5736. #define CSR_MDCM_CFG_DWAY_MASK (0x38U)
  5737. #define CSR_MDCM_CFG_DWAY_SHIFT (3U)
  5738. #define CSR_MDCM_CFG_DWAY_GET(x) (((uint32_t)(x) & CSR_MDCM_CFG_DWAY_MASK) >> CSR_MDCM_CFG_DWAY_SHIFT)
  5739. /*
  5740. * DSET (RO)
  5741. *
  5742. * D-Cache sets (# of cache lines per way):
  5743. * When mdcm_cfg.SETH==0:
  5744. * 0:64
  5745. * 1:128
  5746. * 2:256
  5747. * 3:512
  5748. * 4:1024
  5749. * 5:2048
  5750. * 6:4096
  5751. * 7:Reserved
  5752. * When mdcm_cfg.SETH==1:
  5753. * 0:32
  5754. * 1:16
  5755. * 2:8
  5756. * 3-7:Reserved
  5757. * When data cache is not configured, this field should be ignored
  5758. */
  5759. #define CSR_MDCM_CFG_DSET_MASK (0x7U)
  5760. #define CSR_MDCM_CFG_DSET_SHIFT (0U)
  5761. #define CSR_MDCM_CFG_DSET_GET(x) (((uint32_t)(x) & CSR_MDCM_CFG_DSET_MASK) >> CSR_MDCM_CFG_DSET_SHIFT)
  5762. /* Bitfield definition for register: MMSC_CFG */
  5763. /*
  5764. * MSC_EXT (RO)
  5765. *
  5766. * Indicates if the mmsc_cfg2 CSR is present or not.
  5767. * 0:The mmsc_cfg2 CSR is not present.
  5768. * 1:The mmsc_cfg2 CSR is present
  5769. */
  5770. #define CSR_MMSC_CFG_MSC_EXT_MASK (0x80000000UL)
  5771. #define CSR_MMSC_CFG_MSC_EXT_SHIFT (31U)
  5772. #define CSR_MMSC_CFG_MSC_EXT_GET(x) (((uint32_t)(x) & CSR_MMSC_CFG_MSC_EXT_MASK) >> CSR_MMSC_CFG_MSC_EXT_SHIFT)
  5773. /*
  5774. * PPMA (RO)
  5775. *
  5776. * Indicates if programmable PMA setup with PMA region CSRs is supported or not
  5777. * 0:Programmable PMA setup is not supported.
  5778. * 1:Programmable PMA setup is supported.
  5779. */
  5780. #define CSR_MMSC_CFG_PPMA_MASK (0x40000000UL)
  5781. #define CSR_MMSC_CFG_PPMA_SHIFT (30U)
  5782. #define CSR_MMSC_CFG_PPMA_GET(x) (((uint32_t)(x) & CSR_MMSC_CFG_PPMA_MASK) >> CSR_MMSC_CFG_PPMA_SHIFT)
  5783. /*
  5784. * EDSP (RO)
  5785. *
  5786. * Indicates if the DSP extension is supported or not
  5787. * 0:The DSP extension is not supported.
  5788. * 1:The DSP extension is supported.
  5789. */
  5790. #define CSR_MMSC_CFG_EDSP_MASK (0x20000000UL)
  5791. #define CSR_MMSC_CFG_EDSP_SHIFT (29U)
  5792. #define CSR_MMSC_CFG_EDSP_GET(x) (((uint32_t)(x) & CSR_MMSC_CFG_EDSP_MASK) >> CSR_MMSC_CFG_EDSP_SHIFT)
  5793. /*
  5794. * VCCTL (RO)
  5795. *
  5796. * Indicates the version number of CCTL command operation scheme supported by an implementation
  5797. * 0:instruction cache and data cache are not configured.
  5798. * 1:instruction cache or data cache is configured.
  5799. */
  5800. #define CSR_MMSC_CFG_VCCTL_MASK (0xC0000UL)
  5801. #define CSR_MMSC_CFG_VCCTL_SHIFT (18U)
  5802. #define CSR_MMSC_CFG_VCCTL_GET(x) (((uint32_t)(x) & CSR_MMSC_CFG_VCCTL_MASK) >> CSR_MMSC_CFG_VCCTL_SHIFT)
  5803. /*
  5804. * EFHW (RO)
  5805. *
  5806. * Indicates the support of FLHW and FSHW instructions
  5807. * 0:FLHW and FSHW instructions are not supported
  5808. * 1:FLHW and FSHW instructions are supported.
  5809. */
  5810. #define CSR_MMSC_CFG_EFHW_MASK (0x20000UL)
  5811. #define CSR_MMSC_CFG_EFHW_SHIFT (17U)
  5812. #define CSR_MMSC_CFG_EFHW_GET(x) (((uint32_t)(x) & CSR_MMSC_CFG_EFHW_MASK) >> CSR_MMSC_CFG_EFHW_SHIFT)
  5813. /*
  5814. * CCTLCSR (RO)
  5815. *
  5816. * Indicates the presence of CSRs for CCTL operations.
  5817. * 0:Feature of CSRs for CCTL operations is not supported.
  5818. * 1:Feature of CSRs for CCTL operations is supported.
  5819. */
  5820. #define CSR_MMSC_CFG_CCTLCSR_MASK (0x10000UL)
  5821. #define CSR_MMSC_CFG_CCTLCSR_SHIFT (16U)
  5822. #define CSR_MMSC_CFG_CCTLCSR_GET(x) (((uint32_t)(x) & CSR_MMSC_CFG_CCTLCSR_MASK) >> CSR_MMSC_CFG_CCTLCSR_SHIFT)
  5823. /*
  5824. * PMNDS (RO)
  5825. *
  5826. * Indicates if Andes-enhanced performance monitoring feature is present or no.
  5827. * 0:Andes-enhanced performance monitoring feature is not supported.
  5828. * 1:Andes-enhanced performance monitoring feature is supported.
  5829. */
  5830. #define CSR_MMSC_CFG_PMNDS_MASK (0x8000U)
  5831. #define CSR_MMSC_CFG_PMNDS_SHIFT (15U)
  5832. #define CSR_MMSC_CFG_PMNDS_GET(x) (((uint32_t)(x) & CSR_MMSC_CFG_PMNDS_MASK) >> CSR_MMSC_CFG_PMNDS_SHIFT)
  5833. /*
  5834. * LMSLVP (RO)
  5835. *
  5836. * Indicates if local memory slave port is present or not.
  5837. * 0:Local memory slave port is not present.
  5838. * 1:Local memory slave port is implemented.
  5839. */
  5840. #define CSR_MMSC_CFG_LMSLVP_MASK (0x4000U)
  5841. #define CSR_MMSC_CFG_LMSLVP_SHIFT (14U)
  5842. #define CSR_MMSC_CFG_LMSLVP_GET(x) (((uint32_t)(x) & CSR_MMSC_CFG_LMSLVP_MASK) >> CSR_MMSC_CFG_LMSLVP_SHIFT)
  5843. /*
  5844. * EV5PE (RO)
  5845. *
  5846. * Indicates whether AndeStar V5 Performance Extension is implemented or not. D45 always implements AndeStar V5 Performance Extension.
  5847. * 0:Not implemented.
  5848. * 1:Implemented.
  5849. */
  5850. #define CSR_MMSC_CFG_EV5PE_MASK (0x2000U)
  5851. #define CSR_MMSC_CFG_EV5PE_SHIFT (13U)
  5852. #define CSR_MMSC_CFG_EV5PE_GET(x) (((uint32_t)(x) & CSR_MMSC_CFG_EV5PE_MASK) >> CSR_MMSC_CFG_EV5PE_SHIFT)
  5853. /*
  5854. * VPLIC (RO)
  5855. *
  5856. * Indicates whether the Andes Vectored PLIC Extension is implemented or not.
  5857. * 0:Not implemented.
  5858. * 1:Implemented.
  5859. */
  5860. #define CSR_MMSC_CFG_VPLIC_MASK (0x1000U)
  5861. #define CSR_MMSC_CFG_VPLIC_SHIFT (12U)
  5862. #define CSR_MMSC_CFG_VPLIC_GET(x) (((uint32_t)(x) & CSR_MMSC_CFG_VPLIC_MASK) >> CSR_MMSC_CFG_VPLIC_SHIFT)
  5863. /*
  5864. * ACE (RO)
  5865. *
  5866. * Indicates whether the Andes StackSafe hardware stack protection extension is implemented or not.
  5867. * 0:Not implemented.
  5868. * 1:Implemented.
  5869. */
  5870. #define CSR_MMSC_CFG_ACE_MASK (0x40U)
  5871. #define CSR_MMSC_CFG_ACE_SHIFT (6U)
  5872. #define CSR_MMSC_CFG_ACE_GET(x) (((uint32_t)(x) & CSR_MMSC_CFG_ACE_MASK) >> CSR_MMSC_CFG_ACE_SHIFT)
  5873. /*
  5874. * HSP (RO)
  5875. *
  5876. * Indicates whether the Andes PowerBrake (Performance Throttling) power/performance scaling extension is implemented or not.
  5877. * 0:Not implemented.
  5878. * 1:Implemented.
  5879. */
  5880. #define CSR_MMSC_CFG_HSP_MASK (0x20U)
  5881. #define CSR_MMSC_CFG_HSP_SHIFT (5U)
  5882. #define CSR_MMSC_CFG_HSP_GET(x) (((uint32_t)(x) & CSR_MMSC_CFG_HSP_MASK) >> CSR_MMSC_CFG_HSP_SHIFT)
  5883. /*
  5884. * PFT (RO)
  5885. *
  5886. * Indicates whether the Andes PowerBrake (Performance Throttling) power/performance scaling extension is implemented or not
  5887. * 0:Not implemented.
  5888. * 1:Implemented.
  5889. */
  5890. #define CSR_MMSC_CFG_PFT_MASK (0x10U)
  5891. #define CSR_MMSC_CFG_PFT_SHIFT (4U)
  5892. #define CSR_MMSC_CFG_PFT_GET(x) (((uint32_t)(x) & CSR_MMSC_CFG_PFT_MASK) >> CSR_MMSC_CFG_PFT_SHIFT)
  5893. /*
  5894. * ECD (RO)
  5895. *
  5896. * Indicates whether the Andes CoDense Extension is implemented or not.
  5897. * 0:Not implemented.
  5898. * 1:Implemented.
  5899. */
  5900. #define CSR_MMSC_CFG_ECD_MASK (0x8U)
  5901. #define CSR_MMSC_CFG_ECD_SHIFT (3U)
  5902. #define CSR_MMSC_CFG_ECD_GET(x) (((uint32_t)(x) & CSR_MMSC_CFG_ECD_MASK) >> CSR_MMSC_CFG_ECD_SHIFT)
  5903. /*
  5904. * TLB_ECC (RO)
  5905. *
  5906. * TLB parity/ECC support configuration.
  5907. * 0:No parity/ECC
  5908. * 1:Parity
  5909. * 2:ECC
  5910. * 3:Reserved
  5911. */
  5912. #define CSR_MMSC_CFG_TLB_ECC_MASK (0x6U)
  5913. #define CSR_MMSC_CFG_TLB_ECC_SHIFT (1U)
  5914. #define CSR_MMSC_CFG_TLB_ECC_GET(x) (((uint32_t)(x) & CSR_MMSC_CFG_TLB_ECC_MASK) >> CSR_MMSC_CFG_TLB_ECC_SHIFT)
  5915. /*
  5916. * ECC (RO)
  5917. *
  5918. * Indicates whether the parity/ECC soft-error protection is implemented or not.
  5919. * 0:Not implemented.
  5920. * 1:Implemented.
  5921. * The specific parity/ECC scheme used for each protected RAM is specified by the control bits in the following list.
  5922. * micm_cfg.IC_ECC
  5923. * micm_cfg.ILM_ECC
  5924. * mdcm_cfg.DC_ECC
  5925. * mdcm_cfg.DLM_ECC
  5926. * mmsc_cfg.TLB_ECC
  5927. */
  5928. #define CSR_MMSC_CFG_ECC_MASK (0x1U)
  5929. #define CSR_MMSC_CFG_ECC_SHIFT (0U)
  5930. #define CSR_MMSC_CFG_ECC_GET(x) (((uint32_t)(x) & CSR_MMSC_CFG_ECC_MASK) >> CSR_MMSC_CFG_ECC_SHIFT)
  5931. /* Bitfield definition for register: MMSC_CFG2 */
  5932. /*
  5933. * FINV (RO)
  5934. *
  5935. * Indicates if scalar FPU is implemented in VPU
  5936. * 0:Scalar FPU is not implemented in VPU
  5937. * 1:Scalar FPU is implemented in VPU
  5938. */
  5939. #define CSR_MMSC_CFG2_FINV_MASK (0x20U)
  5940. #define CSR_MMSC_CFG2_FINV_SHIFT (5U)
  5941. #define CSR_MMSC_CFG2_FINV_GET(x) (((uint32_t)(x) & CSR_MMSC_CFG2_FINV_MASK) >> CSR_MMSC_CFG2_FINV_SHIFT)
  5942. /*
  5943. * ZFH (RO)
  5944. *
  5945. * Indicates if the FP16 half-precision floating-point extension (Zfh) is supported or not.
  5946. * 0:The FP16 extension is not supported.
  5947. * 1:The FP16 extension is supported
  5948. */
  5949. #define CSR_MMSC_CFG2_ZFH_MASK (0x2U)
  5950. #define CSR_MMSC_CFG2_ZFH_SHIFT (1U)
  5951. #define CSR_MMSC_CFG2_ZFH_GET(x) (((uint32_t)(x) & CSR_MMSC_CFG2_ZFH_MASK) >> CSR_MMSC_CFG2_ZFH_SHIFT)
  5952. /*
  5953. * BF16CVT (RO)
  5954. *
  5955. * Indicates if the BFLOAT16 conversion extension
  5956. * is supported or not.
  5957. * 0:The BFLOAT16 conversion extension is not supported
  5958. * 1:The BFLOAT16 conversion extension is supported
  5959. */
  5960. #define CSR_MMSC_CFG2_BF16CVT_MASK (0x1U)
  5961. #define CSR_MMSC_CFG2_BF16CVT_SHIFT (0U)
  5962. #define CSR_MMSC_CFG2_BF16CVT_GET(x) (((uint32_t)(x) & CSR_MMSC_CFG2_BF16CVT_MASK) >> CSR_MMSC_CFG2_BF16CVT_SHIFT)
  5963. #endif /* HPM_CSR_H */