###
### This file was automatically generated
###

from archinfo.arch import register_arch, Endness, Register

from .common import ArchPcode


class ArchPcode_PIC_18_LE_24_PIC_18(ArchPcode):
    name = 'PIC-18:LE:24:PIC-18'
    pcode_arch = 'PIC-18:LE:24:PIC-18'
    description = 'PIC-18'
    bits = 24
    ip_offset = 0x0
    sp_offset = 0x4
    bp_offset = sp_offset
    instruction_endness = Endness.LE
    register_list = [
        Register('sfrf60', 1, 0xf60),
        Register('sfrf61', 1, 0xf61),
        Register('sfrf62', 1, 0xf62),
        Register('sfrf63', 1, 0xf63),
        Register('sfrf64', 1, 0xf64),
        Register('sfrf65', 1, 0xf65),
        Register('sfrf66', 1, 0xf66),
        Register('sfrf67', 1, 0xf67),
        Register('sfrf68', 1, 0xf68),
        Register('sfrf69', 1, 0xf69),
        Register('sfrf6a', 1, 0xf6a),
        Register('rcsta2', 1, 0xf6b),
        Register('txsta2', 1, 0xf6c),
        Register('txreg2', 1, 0xf6d),
        Register('rcreg2', 1, 0xf6e),
        Register('spbreg2', 1, 0xf6f),
        Register('ccp5con', 1, 0xf70),
        Register('ccp5rl', 1, 0xf71),
        Register('ccpr5h', 1, 0xf72),
        Register('ccp4con', 1, 0xf73),
        Register('ccpr4l', 1, 0xf74),
        Register('ccpr4h', 1, 0xf75),
        Register('t4con', 1, 0xf76),
        Register('pr4', 1, 0xf77),
        Register('tmr4', 1, 0xf78),
        Register('sfrf79', 1, 0xf79),
        Register('sfrf7a', 1, 0xf7a),
        Register('sfrf7b', 1, 0xf7b),
        Register('sfrf7c', 1, 0xf7c),
        Register('sfrf7d', 1, 0xf7d),
        Register('sfrf7e', 1, 0xf7e),
        Register('sfrf7f', 1, 0xf7f),
        Register('porta', 1, 0xf80),
        Register('portb', 1, 0xf81),
        Register('portc', 1, 0xf82),
        Register('portd', 1, 0xf83),
        Register('porte', 1, 0xf84),
        Register('portf', 1, 0xf85),
        Register('portg', 1, 0xf86),
        Register('porth', 1, 0xf87),
        Register('portj', 1, 0xf88),
        Register('lata', 1, 0xf89),
        Register('latb', 1, 0xf8a),
        Register('latc', 1, 0xf8b),
        Register('latd', 1, 0xf8c),
        Register('late', 1, 0xf8d),
        Register('latf', 1, 0xf8e),
        Register('latg', 1, 0xf8f),
        Register('lath', 1, 0xf90),
        Register('latj', 1, 0xf91),
        Register('trisa', 1, 0xf92),
        Register('trisb', 1, 0xf93),
        Register('trisc', 1, 0xf94),
        Register('trisd', 1, 0xf95),
        Register('trise', 1, 0xf96),
        Register('trisf', 1, 0xf97),
        Register('trisg', 1, 0xf98),
        Register('trish', 1, 0xf99),
        Register('trisj', 1, 0xf9a),
        Register('sfrf9b', 1, 0xf9b),
        Register('memcon', 1, 0xf9c),
        Register('pie1', 1, 0xf9d),
        Register('pir1', 1, 0xf9e),
        Register('ipr1', 1, 0xf9f),
        Register('pie2', 1, 0xfa0),
        Register('pir2', 1, 0xfa1),
        Register('ipr2', 1, 0xfa2),
        Register('pie3', 1, 0xfa3),
        Register('pir3', 1, 0xfa4),
        Register('ipr3', 1, 0xfa5),
        Register('eecon1', 1, 0xfa6),
        Register('eecon2', 1, 0xfa7),
        Register('eedata', 1, 0xfa8),
        Register('eeadr', 1, 0xfa9),
        Register('eeadrh', 1, 0xfaa),
        Register('rcsta1', 1, 0xfab),
        Register('txsta1', 1, 0xfac),
        Register('txreg1', 1, 0xfad),
        Register('rcreg1', 1, 0xfae),
        Register('spbrg1', 1, 0xfaf),
        Register('pspcon', 1, 0xfb0),
        Register('t3con', 1, 0xfb1),
        Register('tmr3l', 1, 0xfb2),
        Register('tmr3h', 1, 0xfb3),
        Register('cmcon', 1, 0xfb4),
        Register('cvrcon', 1, 0xfb5),
        Register('sfrfb6', 1, 0xfb6),
        Register('ccp3con', 1, 0xfb7),
        Register('ccp3rl', 1, 0xfb8),
        Register('ccp3rh', 1, 0xfb9),
        Register('ccp2con', 1, 0xfba),
        Register('ccpr2', 2, 0xfbb),
        Register('ccpr2l', 1, 0xfbb),
        Register('ccpr2h', 1, 0xfbc),
        Register('ccp1con', 1, 0xfbd),
        Register('ccpr1', 2, 0xfbe),
        Register('ccpr1l', 1, 0xfbe),
        Register('ccpr1h', 1, 0xfbf),
        Register('adcon2', 1, 0xfc0),
        Register('adcon1', 1, 0xfc1),
        Register('adcon0', 1, 0xfc2),
        Register('adres', 2, 0xfc3),
        Register('adresl', 1, 0xfc3),
        Register('adresh', 1, 0xfc4),
        Register('sspcon2', 1, 0xfc5),
        Register('sspcon1', 1, 0xfc6),
        Register('sspstat', 1, 0xfc7),
        Register('sspadd', 1, 0xfc8),
        Register('sspbuf', 1, 0xfc9),
        Register('t2con', 1, 0xfca),
        Register('pr2', 1, 0xfcb),
        Register('tmr2', 1, 0xfcc),
        Register('t1con', 1, 0xfcd),
        Register('tmr1', 2, 0xfce),
        Register('tmr1l', 1, 0xfce),
        Register('tmr1h', 1, 0xfcf),
        Register('rcon', 1, 0xfd0),
        Register('wdtcon', 1, 0xfd1),
        Register('lvdcon', 1, 0xfd2),
        Register('osccon', 1, 0xfd3),
        Register('sfrfd4', 1, 0xfd4),
        Register('t0con', 1, 0xfd5),
        Register('tmr0', 2, 0xfd6),
        Register('tmr0l', 1, 0xfd6),
        Register('tmr0h', 1, 0xfd7),
        Register('status', 1, 0xfd8),
        Register('fsr2', 2, 0xfd9),
        Register('fsr2l', 1, 0xfd9),
        Register('fsr2h', 1, 0xfda),
        Register('plusw2', 1, 0xfdb),
        Register('preinc2', 1, 0xfdc),
        Register('postdec2', 1, 0xfdd),
        Register('postinc2', 1, 0xfde),
        Register('indf2', 1, 0xfdf),
        Register('bsr', 1, 0xfe0),
        Register('fsr1', 2, 0xfe1),
        Register('fsr1l', 1, 0xfe1),
        Register('fsr1h', 1, 0xfe2),
        Register('plusw1', 1, 0xfe3),
        Register('preinc1', 1, 0xfe4),
        Register('postdec1', 1, 0xfe5),
        Register('postinc1', 1, 0xfe6),
        Register('indf1', 1, 0xfe7),
        Register('wreg', 1, 0xfe8),
        Register('fsr0', 2, 0xfe9),
        Register('fsr0l', 1, 0xfe9),
        Register('fsr0h', 1, 0xfea),
        Register('plusw0', 1, 0xfeb),
        Register('preinc0', 1, 0xfec),
        Register('postdec0', 1, 0xfed),
        Register('postinc0', 1, 0xfee),
        Register('indf0', 1, 0xfef),
        Register('intcon3', 1, 0xff0),
        Register('intcon2', 1, 0xff1),
        Register('intcon', 1, 0xff2),
        Register('prod', 2, 0xff3),
        Register('prodl', 1, 0xff3),
        Register('prodh', 1, 0xff4),
        Register('tablat', 1, 0xff5),
        Register('tblptr', 3, 0xff6),
        Register('tblptrl', 1, 0xff6),
        Register('tblptrh', 1, 0xff7),
        Register('tblptru', 1, 0xff8),
        Register('pclat', 3, 0xff9),
        Register('pcl', 1, 0xff9),
        Register('pclath', 1, 0xffa),
        Register('pclatu', 1, 0xffb),
        Register('.stkptr', 1, 0xffc),
        Register('tos', 3, 0xffd),
        Register('tosl', 1, 0xffd),
        Register('tosh', 1, 0xffe),
        Register('tosu', 1, 0xfff),
        Register('pc', 3, 0x0, alias_names=('ip',)),
        Register('bad', 1, 0x3),
        Register('stkptr', 1, 0x4),
        Register('n', 1, 0x5),
        Register('ov', 1, 0x6),
        Register('z', 1, 0x7),
        Register('dc', 1, 0x8),
        Register('c', 1, 0x9),
        Register('ws', 1, 0xa),
        Register('statuss', 1, 0xb),
        Register('bsrs', 1, 0xc)
    ]

register_arch(['pic-18:le:24:pic-18'], 24, Endness.LE, ArchPcode_PIC_18_LE_24_PIC_18)
