Lines Matching +full:cpu +full:- +full:intc

32 #include "hw/qdev-properties.h"
33 #include "hw/qdev-properties-system.h"
38 #include "exec/exec-all.h"
50 /* CPU */
51 SuperHCPU *cpu; member
80 struct intc_desc intc; member
85 return s->cpu->env.features & SH_FEATURE_BCR3_AND_BCR4; in has_bcr3_and_bcr4()
117 return (s->portdira & s->pdtra) | /* CPU */ in porta_lines()
118 (s->periph_portdira & s->periph_pdtra) | /* Peripherals */ in porta_lines()
119 (~(s->portdira | s->periph_portdira) & s->portpullupa); /* Pullups */ in porta_lines()
124 return (s->portdirb & s->pdtrb) | /* CPU */ in portb_lines()
125 (s->periph_portdirb & s->periph_pdtrb) | /* Peripherals */ in portb_lines()
126 (~(s->portdirb | s->periph_portdirb) & s->portpullupb); /* Pullups */ in portb_lines()
137 trace_sh7750_porta(prev, currenta, s->pdtra, s->pctra); in porta_changed()
148 trace_sh7750_portb(prev, currentb, s->pdtrb, s->pctrb); in portb_changed()
182 return s->bcr2; in sh7750_mem_readw()
187 return s->bcr3; in sh7750_mem_readw()
191 return s->pcr; in sh7750_mem_readw()
195 return s->rfcr++; in sh7750_mem_readw()
218 return s->bcr1; in sh7750_mem_readl()
223 return s->bcr4; in sh7750_mem_readl()
231 return s->cpu->env.mmucr; in sh7750_mem_readl()
233 return s->cpu->env.pteh; in sh7750_mem_readl()
235 return s->cpu->env.ptel; in sh7750_mem_readl()
237 return s->cpu->env.ttb; in sh7750_mem_readl()
239 return s->cpu->env.tea; in sh7750_mem_readl()
241 return s->cpu->env.tra; in sh7750_mem_readl()
243 return s->cpu->env.expevt; in sh7750_mem_readl()
245 return s->cpu->env.intevt; in sh7750_mem_readl()
247 return s->ccr; in sh7750_mem_readl()
249 scc = SUPERH_CPU_GET_CLASS(s->cpu); in sh7750_mem_readl()
250 return scc->pvr; in sh7750_mem_readl()
252 scc = SUPERH_CPU_GET_CLASS(s->cpu); in sh7750_mem_readl()
253 return scc->cvr; in sh7750_mem_readl()
255 scc = SUPERH_CPU_GET_CLASS(s->cpu); in sh7750_mem_readl()
256 return scc->prr; in sh7750_mem_readl()
287 s->bcr2 = mem_value; in sh7750_mem_writew()
293 s->bcr3 = mem_value; in sh7750_mem_writew()
296 s->pcr = mem_value; in sh7750_mem_writew()
306 s->pdtra = mem_value; in sh7750_mem_writew()
311 s->pdtrb = mem_value; in sh7750_mem_writew()
316 s->rfcr = mem_value; in sh7750_mem_writew()
319 s->gpioic = mem_value; in sh7750_mem_writew()
340 s->bcr1 = mem_value; in sh7750_mem_writel()
346 s->bcr4 = mem_value; in sh7750_mem_writel()
357 s->pctra = mem_value; in sh7750_mem_writel()
358 s->portdira = portdir(mem_value); in sh7750_mem_writel()
359 s->portpullupa = portpullup(mem_value); in sh7750_mem_writel()
364 s->pctrb = mem_value; in sh7750_mem_writel()
365 s->portdirb = portdir(mem_value); in sh7750_mem_writel()
366 s->portpullupb = portpullup(mem_value); in sh7750_mem_writel()
371 cpu_sh4_invalidate_tlb(&s->cpu->env); in sh7750_mem_writel()
373 s->cpu->env.mmucr = mem_value & ~MMUCR_TI; in sh7750_mem_writel()
377 if ((s->cpu->env.pteh & 0xff) != (mem_value & 0xff)) { in sh7750_mem_writel()
378 tlb_flush(CPU(s->cpu)); in sh7750_mem_writel()
380 s->cpu->env.pteh = mem_value; in sh7750_mem_writel()
383 s->cpu->env.ptel = mem_value; in sh7750_mem_writel()
386 s->cpu->env.ptea = mem_value & 0x0000000f; in sh7750_mem_writel()
389 s->cpu->env.ttb = mem_value; in sh7750_mem_writel()
392 s->cpu->env.tea = mem_value; in sh7750_mem_writel()
395 s->cpu->env.tra = mem_value & 0x000007ff; in sh7750_mem_writel()
398 s->cpu->env.expevt = mem_value & 0x000007ff; in sh7750_mem_writel()
401 s->cpu->env.intevt = mem_value & 0x000007ff; in sh7750_mem_writel()
404 s->ccr = mem_value; in sh7750_mem_writel()
454 * stolen from linux/arch/sh/kernel/cpu/sh4/setup-sh7750.c
516 /* SH7750, SH7750S, SH7751 and SH7091 all have 4-channel DMA controllers */
529 /* SH7750R and SH7751R both have 8-channel DMA controllers */
642 ret = cpu_sh4_read_mmaped_itlb_addr(&s->cpu->env, addr); in sh7750_mmct_read()
645 ret = cpu_sh4_read_mmaped_itlb_data(&s->cpu->env, addr); in sh7750_mmct_read()
652 ret = cpu_sh4_read_mmaped_utlb_addr(&s->cpu->env, addr); in sh7750_mmct_read()
655 ret = cpu_sh4_read_mmaped_utlb_data(&s->cpu->env, addr); in sh7750_mmct_read()
685 cpu_sh4_write_mmaped_itlb_addr(&s->cpu->env, addr, mem_value); in sh7750_mmct_write()
688 cpu_sh4_write_mmaped_itlb_data(&s->cpu->env, addr, mem_value); in sh7750_mmct_write()
696 cpu_sh4_write_mmaped_utlb_addr(&s->cpu->env, addr, mem_value); in sh7750_mmct_write()
699 cpu_sh4_write_mmaped_utlb_data(&s->cpu->env, addr, mem_value); in sh7750_mmct_write()
713 SH7750State *sh7750_init(SuperHCPU *cpu, MemoryRegion *sysmem) in sh7750_init() argument
721 s->cpu = cpu; in sh7750_init()
722 s->periph_freq = 60000000; /* 60MHz */ in sh7750_init()
723 memory_region_init_io(&s->iomem, NULL, &sh7750_mem_ops, s, in sh7750_init()
726 memory_region_init_alias(&s->iomem_1f0, NULL, "memory-1f0", in sh7750_init()
727 &s->iomem, 0x1f000000, 0x1000); in sh7750_init()
728 memory_region_add_subregion(sysmem, 0x1f000000, &s->iomem_1f0); in sh7750_init()
730 memory_region_init_alias(&s->iomem_ff0, NULL, "memory-ff0", in sh7750_init()
731 &s->iomem, 0x1f000000, 0x1000); in sh7750_init()
732 memory_region_add_subregion(sysmem, 0xff000000, &s->iomem_ff0); in sh7750_init()
734 memory_region_init_alias(&s->iomem_1f8, NULL, "memory-1f8", in sh7750_init()
735 &s->iomem, 0x1f800000, 0x1000); in sh7750_init()
736 memory_region_add_subregion(sysmem, 0x1f800000, &s->iomem_1f8); in sh7750_init()
738 memory_region_init_alias(&s->iomem_ff8, NULL, "memory-ff8", in sh7750_init()
739 &s->iomem, 0x1f800000, 0x1000); in sh7750_init()
740 memory_region_add_subregion(sysmem, 0xff800000, &s->iomem_ff8); in sh7750_init()
742 memory_region_init_alias(&s->iomem_1fc, NULL, "memory-1fc", in sh7750_init()
743 &s->iomem, 0x1fc00000, 0x1000); in sh7750_init()
744 memory_region_add_subregion(sysmem, 0x1fc00000, &s->iomem_1fc); in sh7750_init()
746 memory_region_init_alias(&s->iomem_ffc, NULL, "memory-ffc", in sh7750_init()
747 &s->iomem, 0x1fc00000, 0x1000); in sh7750_init()
748 memory_region_add_subregion(sysmem, 0xffc00000, &s->iomem_ffc); in sh7750_init()
750 memory_region_init_io(&s->mmct_iomem, NULL, &sh7750_mmct_ops, s, in sh7750_init()
751 "cache-and-tlb", 0x08000000); in sh7750_init()
752 memory_region_add_subregion(sysmem, 0xf0000000, &s->mmct_iomem); in sh7750_init()
754 sh_intc_init(sysmem, &s->intc, NR_SOURCES, in sh7750_init()
758 sh_intc_register_sources(&s->intc, in sh7750_init()
762 cpu->env.intc_handle = &s->intc; in sh7750_init()
766 dev->id = g_strdup("sci"); in sh7750_init()
773 memory_region_init_alias(alias, OBJECT(dev), "sci-a7", mr, in sh7750_init()
776 qdev_connect_gpio_out_named(dev, "eri", 0, s->intc.irqs[SCI1_ERI]); in sh7750_init()
777 qdev_connect_gpio_out_named(dev, "rxi", 0, s->intc.irqs[SCI1_RXI]); in sh7750_init()
778 qdev_connect_gpio_out_named(dev, "txi", 0, s->intc.irqs[SCI1_TXI]); in sh7750_init()
779 qdev_connect_gpio_out_named(dev, "tei", 0, s->intc.irqs[SCI1_TEI]); in sh7750_init()
783 dev->id = g_strdup("scif"); in sh7750_init()
791 memory_region_init_alias(alias, OBJECT(dev), "scif-a7", mr, in sh7750_init()
794 qdev_connect_gpio_out_named(dev, "eri", 0, s->intc.irqs[SCIF_ERI]); in sh7750_init()
795 qdev_connect_gpio_out_named(dev, "rxi", 0, s->intc.irqs[SCIF_RXI]); in sh7750_init()
796 qdev_connect_gpio_out_named(dev, "txi", 0, s->intc.irqs[SCIF_TXI]); in sh7750_init()
797 qdev_connect_gpio_out_named(dev, "bri", 0, s->intc.irqs[SCIF_BRI]); in sh7750_init()
801 s->periph_freq, in sh7750_init()
802 s->intc.irqs[TMU0], in sh7750_init()
803 s->intc.irqs[TMU1], in sh7750_init()
804 s->intc.irqs[TMU2_TUNI], in sh7750_init()
805 s->intc.irqs[TMU2_TICPI]); in sh7750_init()
807 if (cpu->env.id & (SH_CPU_SH7750 | SH_CPU_SH7750S | SH_CPU_SH7751)) { in sh7750_init()
808 sh_intc_register_sources(&s->intc, in sh7750_init()
813 if (cpu->env.id & (SH_CPU_SH7750R | SH_CPU_SH7751R)) { in sh7750_init()
814 sh_intc_register_sources(&s->intc, in sh7750_init()
819 if (cpu->env.id & (SH_CPU_SH7750R | SH_CPU_SH7751 | SH_CPU_SH7751R)) { in sh7750_init()
820 sh_intc_register_sources(&s->intc, in sh7750_init()
823 tmu012_init(sysmem, 0x1e100000, 0, s->periph_freq, in sh7750_init()
824 s->intc.irqs[TMU3], in sh7750_init()
825 s->intc.irqs[TMU4], in sh7750_init()
829 if (cpu->env.id & (SH_CPU_SH7751_ALL)) { in sh7750_init()
830 sh_intc_register_sources(&s->intc, in sh7750_init()
835 if (cpu->env.id & (SH_CPU_SH7750S | SH_CPU_SH7750R | SH_CPU_SH7751_ALL)) { in sh7750_init()
836 sh_intc_register_sources(&s->intc, in sh7750_init()
841 sh_intc_register_sources(&s->intc, in sh7750_init()
849 sh_intc_toggle_source(&s->intc.sources[IRL], 1, 0); /* enable */ in sh7750_irl()
850 return qemu_allocate_irq(sh_intc_set_irl, &s->intc.sources[IRL], 0); in sh7750_irl()