Path: blob/master/arch/blackfin/mach-common/dpmc_modes.S
10817 views
/*1* Copyright 2004-2008 Analog Devices Inc.2*3* Licensed under the GPL-2 or later.4*/56#include <linux/linkage.h>7#include <asm/blackfin.h>8#include <mach/irq.h>9#include <asm/dpmc.h>1011.section .l1.text1213ENTRY(_sleep_mode)14[--SP] = ( R7:0, P5:0 );15[--SP] = RETS;1617call _set_sic_iwr;1819P0.H = hi(PLL_CTL);20P0.L = lo(PLL_CTL);21R1 = W[P0](z);22BITSET (R1, 3);23W[P0] = R1.L;2425CLI R2;26SSYNC;27IDLE;28STI R2;2930call _test_pll_locked;3132R0 = IWR_ENABLE(0);33R1 = IWR_DISABLE_ALL;34R2 = IWR_DISABLE_ALL;3536call _set_sic_iwr;3738P0.H = hi(PLL_CTL);39P0.L = lo(PLL_CTL);40R7 = w[p0](z);41BITCLR (R7, 3);42BITCLR (R7, 5);43w[p0] = R7.L;44IDLE;45call _test_pll_locked;4647RETS = [SP++];48( R7:0, P5:0 ) = [SP++];49RTS;50ENDPROC(_sleep_mode)5152ENTRY(_hibernate_mode)53[--SP] = ( R7:0, P5:0 );54[--SP] = RETS;5556R3 = R0;57R0 = IWR_DISABLE_ALL;58R1 = IWR_DISABLE_ALL;59R2 = IWR_DISABLE_ALL;60call _set_sic_iwr;61call _set_dram_srfs;62SSYNC;6364P0.H = hi(VR_CTL);65P0.L = lo(VR_CTL);6667W[P0] = R3.L;68CLI R2;69IDLE;70.Lforever:71jump .Lforever;72ENDPROC(_hibernate_mode)7374ENTRY(_sleep_deeper)75[--SP] = ( R7:0, P5:0 );76[--SP] = RETS;7778CLI R4;7980P3 = R0;81P4 = R1;82P5 = R2;8384R0 = IWR_ENABLE(0);85R1 = IWR_DISABLE_ALL;86R2 = IWR_DISABLE_ALL;8788call _set_sic_iwr;89call _set_dram_srfs; /* Set SDRAM Self Refresh */9091P0.H = hi(PLL_DIV);92P0.L = lo(PLL_DIV);93R6 = W[P0](z);94R0.L = 0xF;95W[P0] = R0.l; /* Set Max VCO to SCLK divider */9697P0.H = hi(PLL_CTL);98P0.L = lo(PLL_CTL);99R5 = W[P0](z);100R0.L = (CONFIG_MIN_VCO_HZ/CONFIG_CLKIN_HZ) << 9;101W[P0] = R0.l; /* Set Min CLKIN to VCO multiplier */102103SSYNC;104IDLE;105106call _test_pll_locked;107108P0.H = hi(VR_CTL);109P0.L = lo(VR_CTL);110R7 = W[P0](z);111R1 = 0x6;112R1 <<= 16;113R2 = 0x0404(Z);114R1 = R1|R2;115116R2 = DEPOSIT(R7, R1);117W[P0] = R2; /* Set Min Core Voltage */118119SSYNC;120IDLE;121122call _test_pll_locked;123124R0 = P3;125R1 = P4;126R3 = P5;127call _set_sic_iwr; /* Set Awake from IDLE */128129P0.H = hi(PLL_CTL);130P0.L = lo(PLL_CTL);131R0 = W[P0](z);132BITSET (R0, 3);133W[P0] = R0.L; /* Turn CCLK OFF */134SSYNC;135IDLE;136137call _test_pll_locked;138139R0 = IWR_ENABLE(0);140R1 = IWR_DISABLE_ALL;141R2 = IWR_DISABLE_ALL;142143call _set_sic_iwr; /* Set Awake from IDLE PLL */144145P0.H = hi(VR_CTL);146P0.L = lo(VR_CTL);147W[P0]= R7;148149SSYNC;150IDLE;151152call _test_pll_locked;153154P0.H = hi(PLL_DIV);155P0.L = lo(PLL_DIV);156W[P0]= R6; /* Restore CCLK and SCLK divider */157158P0.H = hi(PLL_CTL);159P0.L = lo(PLL_CTL);160w[p0] = R5; /* Restore VCO multiplier */161IDLE;162call _test_pll_locked;163164call _unset_dram_srfs; /* SDRAM Self Refresh Off */165166STI R4;167168RETS = [SP++];169( R7:0, P5:0 ) = [SP++];170RTS;171ENDPROC(_sleep_deeper)172173ENTRY(_set_dram_srfs)174/* set the dram to self refresh mode */175SSYNC;176#if defined(EBIU_RSTCTL) /* DDR */177P0.H = hi(EBIU_RSTCTL);178P0.L = lo(EBIU_RSTCTL);179R2 = [P0];180BITSET(R2, 3); /* SRREQ enter self-refresh mode */181[P0] = R2;182SSYNC;1831:184R2 = [P0];185CC = BITTST(R2, 4);186if !CC JUMP 1b;187#else /* SDRAM */188P0.L = lo(EBIU_SDGCTL);189P0.H = hi(EBIU_SDGCTL);190R2 = [P0];191BITSET(R2, 24); /* SRFS enter self-refresh mode */192[P0] = R2;193SSYNC;194195P0.L = lo(EBIU_SDSTAT);196P0.H = hi(EBIU_SDSTAT);1971:198R2 = w[P0];199SSYNC;200cc = BITTST(R2, 1); /* SDSRA poll self-refresh status */201if !cc jump 1b;202203P0.L = lo(EBIU_SDGCTL);204P0.H = hi(EBIU_SDGCTL);205R2 = [P0];206BITCLR(R2, 0); /* SCTLE disable CLKOUT */207[P0] = R2;208#endif209RTS;210ENDPROC(_set_dram_srfs)211212ENTRY(_unset_dram_srfs)213/* set the dram out of self refresh mode */214#if defined(EBIU_RSTCTL) /* DDR */215P0.H = hi(EBIU_RSTCTL);216P0.L = lo(EBIU_RSTCTL);217R2 = [P0];218BITCLR(R2, 3); /* clear SRREQ bit */219[P0] = R2;220#elif defined(EBIU_SDGCTL) /* SDRAM */221222P0.L = lo(EBIU_SDGCTL); /* release CLKOUT from self-refresh */223P0.H = hi(EBIU_SDGCTL);224R2 = [P0];225BITSET(R2, 0); /* SCTLE enable CLKOUT */226[P0] = R2227SSYNC;228229P0.L = lo(EBIU_SDGCTL); /* release SDRAM from self-refresh */230P0.H = hi(EBIU_SDGCTL);231R2 = [P0];232BITCLR(R2, 24); /* clear SRFS bit */233[P0] = R2234#endif235SSYNC;236RTS;237ENDPROC(_unset_dram_srfs)238239ENTRY(_set_sic_iwr)240#if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) || defined(CONFIG_BF561) || \241defined(CONFIG_BF538) || defined(CONFIG_BF539) || defined(CONFIG_BF51x)242P0.H = hi(SIC_IWR0);243P0.L = lo(SIC_IWR0);244P1.H = hi(SIC_IWR1);245P1.L = lo(SIC_IWR1);246[P1] = R1;247#if defined(CONFIG_BF54x)248P1.H = hi(SIC_IWR2);249P1.L = lo(SIC_IWR2);250[P1] = R2;251#endif252#else253P0.H = hi(SIC_IWR);254P0.L = lo(SIC_IWR);255#endif256[P0] = R0;257258SSYNC;259RTS;260ENDPROC(_set_sic_iwr)261262ENTRY(_test_pll_locked)263P0.H = hi(PLL_STAT);264P0.L = lo(PLL_STAT);2651:266R0 = W[P0] (Z);267CC = BITTST(R0,5);268IF !CC JUMP 1b;269RTS;270ENDPROC(_test_pll_locked)271272.section .text273274ENTRY(_do_hibernate)275[--SP] = ( R7:0, P5:0 );276[--SP] = RETS;277/* Save System MMRs */278R2 = R0;279P0.H = hi(PLL_CTL);280P0.L = lo(PLL_CTL);281282#ifdef SIC_IMASK0283PM_SYS_PUSH(SIC_IMASK0)284#endif285#ifdef SIC_IMASK1286PM_SYS_PUSH(SIC_IMASK1)287#endif288#ifdef SIC_IMASK2289PM_SYS_PUSH(SIC_IMASK2)290#endif291#ifdef SIC_IMASK292PM_SYS_PUSH(SIC_IMASK)293#endif294#ifdef SIC_IAR0295PM_SYS_PUSH(SIC_IAR0)296PM_SYS_PUSH(SIC_IAR1)297PM_SYS_PUSH(SIC_IAR2)298#endif299#ifdef SIC_IAR3300PM_SYS_PUSH(SIC_IAR3)301#endif302#ifdef SIC_IAR4303PM_SYS_PUSH(SIC_IAR4)304PM_SYS_PUSH(SIC_IAR5)305PM_SYS_PUSH(SIC_IAR6)306#endif307#ifdef SIC_IAR7308PM_SYS_PUSH(SIC_IAR7)309#endif310#ifdef SIC_IAR8311PM_SYS_PUSH(SIC_IAR8)312PM_SYS_PUSH(SIC_IAR9)313PM_SYS_PUSH(SIC_IAR10)314PM_SYS_PUSH(SIC_IAR11)315#endif316317#ifdef SIC_IWR318PM_SYS_PUSH(SIC_IWR)319#endif320#ifdef SIC_IWR0321PM_SYS_PUSH(SIC_IWR0)322#endif323#ifdef SIC_IWR1324PM_SYS_PUSH(SIC_IWR1)325#endif326#ifdef SIC_IWR2327PM_SYS_PUSH(SIC_IWR2)328#endif329330#ifdef PINT0_ASSIGN331PM_SYS_PUSH(PINT0_MASK_SET)332PM_SYS_PUSH(PINT1_MASK_SET)333PM_SYS_PUSH(PINT2_MASK_SET)334PM_SYS_PUSH(PINT3_MASK_SET)335PM_SYS_PUSH(PINT0_ASSIGN)336PM_SYS_PUSH(PINT1_ASSIGN)337PM_SYS_PUSH(PINT2_ASSIGN)338PM_SYS_PUSH(PINT3_ASSIGN)339PM_SYS_PUSH(PINT0_INVERT_SET)340PM_SYS_PUSH(PINT1_INVERT_SET)341PM_SYS_PUSH(PINT2_INVERT_SET)342PM_SYS_PUSH(PINT3_INVERT_SET)343PM_SYS_PUSH(PINT0_EDGE_SET)344PM_SYS_PUSH(PINT1_EDGE_SET)345PM_SYS_PUSH(PINT2_EDGE_SET)346PM_SYS_PUSH(PINT3_EDGE_SET)347#endif348349PM_SYS_PUSH(EBIU_AMBCTL0)350PM_SYS_PUSH(EBIU_AMBCTL1)351PM_SYS_PUSH16(EBIU_AMGCTL)352353#ifdef EBIU_FCTL354PM_SYS_PUSH(EBIU_MBSCTL)355PM_SYS_PUSH(EBIU_MODE)356PM_SYS_PUSH(EBIU_FCTL)357#endif358359#ifdef PORTCIO_FER360PM_SYS_PUSH16(PORTCIO_DIR)361PM_SYS_PUSH16(PORTCIO_INEN)362PM_SYS_PUSH16(PORTCIO)363PM_SYS_PUSH16(PORTCIO_FER)364PM_SYS_PUSH16(PORTDIO_DIR)365PM_SYS_PUSH16(PORTDIO_INEN)366PM_SYS_PUSH16(PORTDIO)367PM_SYS_PUSH16(PORTDIO_FER)368PM_SYS_PUSH16(PORTEIO_DIR)369PM_SYS_PUSH16(PORTEIO_INEN)370PM_SYS_PUSH16(PORTEIO)371PM_SYS_PUSH16(PORTEIO_FER)372#endif373374PM_SYS_PUSH16(SYSCR)375376/* Save Core MMRs */377P0.H = hi(SRAM_BASE_ADDRESS);378P0.L = lo(SRAM_BASE_ADDRESS);379380PM_PUSH(DMEM_CONTROL)381PM_PUSH(DCPLB_ADDR0)382PM_PUSH(DCPLB_ADDR1)383PM_PUSH(DCPLB_ADDR2)384PM_PUSH(DCPLB_ADDR3)385PM_PUSH(DCPLB_ADDR4)386PM_PUSH(DCPLB_ADDR5)387PM_PUSH(DCPLB_ADDR6)388PM_PUSH(DCPLB_ADDR7)389PM_PUSH(DCPLB_ADDR8)390PM_PUSH(DCPLB_ADDR9)391PM_PUSH(DCPLB_ADDR10)392PM_PUSH(DCPLB_ADDR11)393PM_PUSH(DCPLB_ADDR12)394PM_PUSH(DCPLB_ADDR13)395PM_PUSH(DCPLB_ADDR14)396PM_PUSH(DCPLB_ADDR15)397PM_PUSH(DCPLB_DATA0)398PM_PUSH(DCPLB_DATA1)399PM_PUSH(DCPLB_DATA2)400PM_PUSH(DCPLB_DATA3)401PM_PUSH(DCPLB_DATA4)402PM_PUSH(DCPLB_DATA5)403PM_PUSH(DCPLB_DATA6)404PM_PUSH(DCPLB_DATA7)405PM_PUSH(DCPLB_DATA8)406PM_PUSH(DCPLB_DATA9)407PM_PUSH(DCPLB_DATA10)408PM_PUSH(DCPLB_DATA11)409PM_PUSH(DCPLB_DATA12)410PM_PUSH(DCPLB_DATA13)411PM_PUSH(DCPLB_DATA14)412PM_PUSH(DCPLB_DATA15)413PM_PUSH(IMEM_CONTROL)414PM_PUSH(ICPLB_ADDR0)415PM_PUSH(ICPLB_ADDR1)416PM_PUSH(ICPLB_ADDR2)417PM_PUSH(ICPLB_ADDR3)418PM_PUSH(ICPLB_ADDR4)419PM_PUSH(ICPLB_ADDR5)420PM_PUSH(ICPLB_ADDR6)421PM_PUSH(ICPLB_ADDR7)422PM_PUSH(ICPLB_ADDR8)423PM_PUSH(ICPLB_ADDR9)424PM_PUSH(ICPLB_ADDR10)425PM_PUSH(ICPLB_ADDR11)426PM_PUSH(ICPLB_ADDR12)427PM_PUSH(ICPLB_ADDR13)428PM_PUSH(ICPLB_ADDR14)429PM_PUSH(ICPLB_ADDR15)430PM_PUSH(ICPLB_DATA0)431PM_PUSH(ICPLB_DATA1)432PM_PUSH(ICPLB_DATA2)433PM_PUSH(ICPLB_DATA3)434PM_PUSH(ICPLB_DATA4)435PM_PUSH(ICPLB_DATA5)436PM_PUSH(ICPLB_DATA6)437PM_PUSH(ICPLB_DATA7)438PM_PUSH(ICPLB_DATA8)439PM_PUSH(ICPLB_DATA9)440PM_PUSH(ICPLB_DATA10)441PM_PUSH(ICPLB_DATA11)442PM_PUSH(ICPLB_DATA12)443PM_PUSH(ICPLB_DATA13)444PM_PUSH(ICPLB_DATA14)445PM_PUSH(ICPLB_DATA15)446PM_PUSH(EVT0)447PM_PUSH(EVT1)448PM_PUSH(EVT2)449PM_PUSH(EVT3)450PM_PUSH(EVT4)451PM_PUSH(EVT5)452PM_PUSH(EVT6)453PM_PUSH(EVT7)454PM_PUSH(EVT8)455PM_PUSH(EVT9)456PM_PUSH(EVT10)457PM_PUSH(EVT11)458PM_PUSH(EVT12)459PM_PUSH(EVT13)460PM_PUSH(EVT14)461PM_PUSH(EVT15)462PM_PUSH(IMASK)463PM_PUSH(ILAT)464PM_PUSH(IPRIO)465PM_PUSH(TCNTL)466PM_PUSH(TPERIOD)467PM_PUSH(TSCALE)468PM_PUSH(TCOUNT)469PM_PUSH(TBUFCTL)470471/* Save Core Registers */472[--sp] = SYSCFG;473[--sp] = ( R7:0, P5:0 );474[--sp] = fp;475[--sp] = usp;476477[--sp] = i0;478[--sp] = i1;479[--sp] = i2;480[--sp] = i3;481482[--sp] = m0;483[--sp] = m1;484[--sp] = m2;485[--sp] = m3;486487[--sp] = l0;488[--sp] = l1;489[--sp] = l2;490[--sp] = l3;491492[--sp] = b0;493[--sp] = b1;494[--sp] = b2;495[--sp] = b3;496[--sp] = a0.x;497[--sp] = a0.w;498[--sp] = a1.x;499[--sp] = a1.w;500501[--sp] = LC0;502[--sp] = LC1;503[--sp] = LT0;504[--sp] = LT1;505[--sp] = LB0;506[--sp] = LB1;507508[--sp] = ASTAT;509[--sp] = CYCLES;510[--sp] = CYCLES2;511512[--sp] = RETS;513r0 = RETI;514[--sp] = r0;515[--sp] = RETX;516[--sp] = RETN;517[--sp] = RETE;518[--sp] = SEQSTAT;519520/* Save Magic, return address and Stack Pointer */521P0.H = 0;522P0.L = 0;523R0.H = 0xDEAD; /* Hibernate Magic */524R0.L = 0xBEEF;525[P0++] = R0; /* Store Hibernate Magic */526R0.H = .Lpm_resume_here;527R0.L = .Lpm_resume_here;528[P0++] = R0; /* Save Return Address */529[P0++] = SP; /* Save Stack Pointer */530P0.H = _hibernate_mode;531P0.L = _hibernate_mode;532R0 = R2;533call (P0); /* Goodbye */534535.Lpm_resume_here:536537/* Restore Core Registers */538SEQSTAT = [sp++];539RETE = [sp++];540RETN = [sp++];541RETX = [sp++];542r0 = [sp++];543RETI = r0;544RETS = [sp++];545546CYCLES2 = [sp++];547CYCLES = [sp++];548ASTAT = [sp++];549550LB1 = [sp++];551LB0 = [sp++];552LT1 = [sp++];553LT0 = [sp++];554LC1 = [sp++];555LC0 = [sp++];556557a1.w = [sp++];558a1.x = [sp++];559a0.w = [sp++];560a0.x = [sp++];561b3 = [sp++];562b2 = [sp++];563b1 = [sp++];564b0 = [sp++];565566l3 = [sp++];567l2 = [sp++];568l1 = [sp++];569l0 = [sp++];570571m3 = [sp++];572m2 = [sp++];573m1 = [sp++];574m0 = [sp++];575576i3 = [sp++];577i2 = [sp++];578i1 = [sp++];579i0 = [sp++];580581usp = [sp++];582fp = [sp++];583584( R7 : 0, P5 : 0) = [ SP ++ ];585SYSCFG = [sp++];586587/* Restore Core MMRs */588589PM_POP(TBUFCTL)590PM_POP(TCOUNT)591PM_POP(TSCALE)592PM_POP(TPERIOD)593PM_POP(TCNTL)594PM_POP(IPRIO)595PM_POP(ILAT)596PM_POP(IMASK)597PM_POP(EVT15)598PM_POP(EVT14)599PM_POP(EVT13)600PM_POP(EVT12)601PM_POP(EVT11)602PM_POP(EVT10)603PM_POP(EVT9)604PM_POP(EVT8)605PM_POP(EVT7)606PM_POP(EVT6)607PM_POP(EVT5)608PM_POP(EVT4)609PM_POP(EVT3)610PM_POP(EVT2)611PM_POP(EVT1)612PM_POP(EVT0)613PM_POP(ICPLB_DATA15)614PM_POP(ICPLB_DATA14)615PM_POP(ICPLB_DATA13)616PM_POP(ICPLB_DATA12)617PM_POP(ICPLB_DATA11)618PM_POP(ICPLB_DATA10)619PM_POP(ICPLB_DATA9)620PM_POP(ICPLB_DATA8)621PM_POP(ICPLB_DATA7)622PM_POP(ICPLB_DATA6)623PM_POP(ICPLB_DATA5)624PM_POP(ICPLB_DATA4)625PM_POP(ICPLB_DATA3)626PM_POP(ICPLB_DATA2)627PM_POP(ICPLB_DATA1)628PM_POP(ICPLB_DATA0)629PM_POP(ICPLB_ADDR15)630PM_POP(ICPLB_ADDR14)631PM_POP(ICPLB_ADDR13)632PM_POP(ICPLB_ADDR12)633PM_POP(ICPLB_ADDR11)634PM_POP(ICPLB_ADDR10)635PM_POP(ICPLB_ADDR9)636PM_POP(ICPLB_ADDR8)637PM_POP(ICPLB_ADDR7)638PM_POP(ICPLB_ADDR6)639PM_POP(ICPLB_ADDR5)640PM_POP(ICPLB_ADDR4)641PM_POP(ICPLB_ADDR3)642PM_POP(ICPLB_ADDR2)643PM_POP(ICPLB_ADDR1)644PM_POP(ICPLB_ADDR0)645PM_POP(IMEM_CONTROL)646PM_POP(DCPLB_DATA15)647PM_POP(DCPLB_DATA14)648PM_POP(DCPLB_DATA13)649PM_POP(DCPLB_DATA12)650PM_POP(DCPLB_DATA11)651PM_POP(DCPLB_DATA10)652PM_POP(DCPLB_DATA9)653PM_POP(DCPLB_DATA8)654PM_POP(DCPLB_DATA7)655PM_POP(DCPLB_DATA6)656PM_POP(DCPLB_DATA5)657PM_POP(DCPLB_DATA4)658PM_POP(DCPLB_DATA3)659PM_POP(DCPLB_DATA2)660PM_POP(DCPLB_DATA1)661PM_POP(DCPLB_DATA0)662PM_POP(DCPLB_ADDR15)663PM_POP(DCPLB_ADDR14)664PM_POP(DCPLB_ADDR13)665PM_POP(DCPLB_ADDR12)666PM_POP(DCPLB_ADDR11)667PM_POP(DCPLB_ADDR10)668PM_POP(DCPLB_ADDR9)669PM_POP(DCPLB_ADDR8)670PM_POP(DCPLB_ADDR7)671PM_POP(DCPLB_ADDR6)672PM_POP(DCPLB_ADDR5)673PM_POP(DCPLB_ADDR4)674PM_POP(DCPLB_ADDR3)675PM_POP(DCPLB_ADDR2)676PM_POP(DCPLB_ADDR1)677PM_POP(DCPLB_ADDR0)678PM_POP(DMEM_CONTROL)679680/* Restore System MMRs */681682P0.H = hi(PLL_CTL);683P0.L = lo(PLL_CTL);684PM_SYS_POP16(SYSCR)685686#ifdef PORTCIO_FER687PM_SYS_POP16(PORTEIO_FER)688PM_SYS_POP16(PORTEIO)689PM_SYS_POP16(PORTEIO_INEN)690PM_SYS_POP16(PORTEIO_DIR)691PM_SYS_POP16(PORTDIO_FER)692PM_SYS_POP16(PORTDIO)693PM_SYS_POP16(PORTDIO_INEN)694PM_SYS_POP16(PORTDIO_DIR)695PM_SYS_POP16(PORTCIO_FER)696PM_SYS_POP16(PORTCIO)697PM_SYS_POP16(PORTCIO_INEN)698PM_SYS_POP16(PORTCIO_DIR)699#endif700701#ifdef EBIU_FCTL702PM_SYS_POP(EBIU_FCTL)703PM_SYS_POP(EBIU_MODE)704PM_SYS_POP(EBIU_MBSCTL)705#endif706PM_SYS_POP16(EBIU_AMGCTL)707PM_SYS_POP(EBIU_AMBCTL1)708PM_SYS_POP(EBIU_AMBCTL0)709710#ifdef PINT0_ASSIGN711PM_SYS_POP(PINT3_EDGE_SET)712PM_SYS_POP(PINT2_EDGE_SET)713PM_SYS_POP(PINT1_EDGE_SET)714PM_SYS_POP(PINT0_EDGE_SET)715PM_SYS_POP(PINT3_INVERT_SET)716PM_SYS_POP(PINT2_INVERT_SET)717PM_SYS_POP(PINT1_INVERT_SET)718PM_SYS_POP(PINT0_INVERT_SET)719PM_SYS_POP(PINT3_ASSIGN)720PM_SYS_POP(PINT2_ASSIGN)721PM_SYS_POP(PINT1_ASSIGN)722PM_SYS_POP(PINT0_ASSIGN)723PM_SYS_POP(PINT3_MASK_SET)724PM_SYS_POP(PINT2_MASK_SET)725PM_SYS_POP(PINT1_MASK_SET)726PM_SYS_POP(PINT0_MASK_SET)727#endif728729#ifdef SIC_IWR2730PM_SYS_POP(SIC_IWR2)731#endif732#ifdef SIC_IWR1733PM_SYS_POP(SIC_IWR1)734#endif735#ifdef SIC_IWR0736PM_SYS_POP(SIC_IWR0)737#endif738#ifdef SIC_IWR739PM_SYS_POP(SIC_IWR)740#endif741742#ifdef SIC_IAR8743PM_SYS_POP(SIC_IAR11)744PM_SYS_POP(SIC_IAR10)745PM_SYS_POP(SIC_IAR9)746PM_SYS_POP(SIC_IAR8)747#endif748#ifdef SIC_IAR7749PM_SYS_POP(SIC_IAR7)750#endif751#ifdef SIC_IAR6752PM_SYS_POP(SIC_IAR6)753PM_SYS_POP(SIC_IAR5)754PM_SYS_POP(SIC_IAR4)755#endif756#ifdef SIC_IAR3757PM_SYS_POP(SIC_IAR3)758#endif759#ifdef SIC_IAR0760PM_SYS_POP(SIC_IAR2)761PM_SYS_POP(SIC_IAR1)762PM_SYS_POP(SIC_IAR0)763#endif764#ifdef SIC_IMASK765PM_SYS_POP(SIC_IMASK)766#endif767#ifdef SIC_IMASK2768PM_SYS_POP(SIC_IMASK2)769#endif770#ifdef SIC_IMASK1771PM_SYS_POP(SIC_IMASK1)772#endif773#ifdef SIC_IMASK0774PM_SYS_POP(SIC_IMASK0)775#endif776777[--sp] = RETI; /* Clear Global Interrupt Disable */778SP += 4;779780RETS = [SP++];781( R7:0, P5:0 ) = [SP++];782RTS;783ENDPROC(_do_hibernate)784785786