Lines Matching defs:s
32 static inline hwaddr bitband_addr(BitBandState *s, hwaddr offset)
34 return s->base | (offset & 0x1ffffff) >> 5;
40 BitBandState *s = opaque;
49 addr = bitband_addr(s, offset) & (-size);
50 res = address_space_read(&s->source_as, addr, attrs, buf, size);
65 BitBandState *s = opaque;
74 addr = bitband_addr(s, offset) & (-size);
75 res = address_space_read(&s->source_as, addr, attrs, buf, size);
88 return address_space_write(&s->source_as, addr, attrs, buf, size);
103 BitBandState *s = BITBAND(obj);
106 memory_region_init_io(&s->iomem, obj, &bitband_ops, s,
108 sysbus_init_mmio(dev, &s->iomem);
113 BitBandState *s = BITBAND(dev);
115 if (!s->source_memory) {
120 address_space_init(&s->source_as, s->source_memory, "bitband-source");
184 ARMv7MState *s = opaque;
188 mr = sysbus_mmio_get_region(SYS_BUS_DEVICE(&s->systick[attrs.secure]), 0);
197 ARMv7MState *s = opaque;
201 mr = sysbus_mmio_get_region(SYS_BUS_DEVICE(&s->systick[attrs.secure]), 0);
251 ARMv7MState *s = ARMV7M(obj);
256 memory_region_init(&s->container, obj, "armv7m-container", UINT64_MAX);
258 object_initialize_child(obj, "nvic", &s->nvic, TYPE_NVIC);
260 OBJECT(&s->nvic), "num-irq");
262 OBJECT(&s->nvic), "num-prio-bits");
264 object_initialize_child(obj, "systick-reg-ns", &s->systick[M_REG_NS],
271 for (i = 0; i < ARRAY_SIZE(s->bitband); i++) {
272 object_initialize_child(obj, "bitband[*]", &s->bitband[i],
276 s->refclk = qdev_init_clock_in(DEVICE(obj), "refclk", NULL, NULL, 0);
277 s->cpuclk = qdev_init_clock_in(DEVICE(obj), "cpuclk", NULL, NULL, 0);
282 ARMv7MState *s = ARMV7M(dev);
287 if (!s->board_memory) {
293 if (!clock_has_source(s->cpuclk)) {
298 memory_region_add_subregion_overlap(&s->container, 0, s->board_memory, -1);
300 s->cpu = ARM_CPU(object_new_with_props(s->cpu_type, OBJECT(s), "cpu",
307 object_property_set_link(OBJECT(s->cpu), "memory", OBJECT(&s->container),
309 if (object_property_find(OBJECT(s->cpu), "idau")) {
310 object_property_set_link(OBJECT(s->cpu), "idau", s->idau,
313 if (object_property_find(OBJECT(s->cpu), "init-svtor")) {
314 if (!object_property_set_uint(OBJECT(s->cpu), "init-svtor",
315 s->init_svtor, errp)) {
319 if (object_property_find(OBJECT(s->cpu), "init-nsvtor")) {
320 if (!object_property_set_uint(OBJECT(s->cpu), "init-nsvtor",
321 s->init_nsvtor, errp)) {
325 if (object_property_find(OBJECT(s->cpu), "vfp")) {
326 if (!object_property_set_bool(OBJECT(s->cpu), "vfp", s->vfp, errp)) {
330 if (object_property_find(OBJECT(s->cpu), "dsp")) {
331 if (!object_property_set_bool(OBJECT(s->cpu), "dsp", s->dsp, errp)) {
335 object_property_set_bool(OBJECT(s->cpu), "start-powered-off",
336 s->start_powered_off, &error_abort);
340 * MPU regions for Secure vs NonSecure. QEMU's CPU implementation doesn't
343 if (arm_feature(&s->cpu->env, ARM_FEATURE_M_SECURITY) &&
344 s->mpu_ns_regions != s->mpu_s_regions) {
346 "mpu-ns-regions and mpu-s-regions properties must have the same value");
349 if (s->mpu_ns_regions != UINT_MAX &&
350 object_property_find(OBJECT(s->cpu), "pmsav7-dregion")) {
351 if (!object_property_set_uint(OBJECT(s->cpu), "pmsav7-dregion",
352 s->mpu_ns_regions, errp)) {
361 s->cpu->env.nvic = &s->nvic;
362 s->nvic.cpu = s->cpu;
364 if (!qdev_realize(DEVICE(s->cpu), NULL, errp)) {
369 if (!sysbus_realize(SYS_BUS_DEVICE(&s->nvic), errp)) {
373 /* Alias the NVIC's input and output GPIOs as our own so the board
377 qdev_pass_gpios(DEVICE(&s->nvic), dev, NULL);
378 qdev_pass_gpios(DEVICE(&s->nvic), dev, "SYSRESETREQ");
379 qdev_pass_gpios(DEVICE(&s->nvic), dev, "NMI");
427 memory_region_init_io(&s->defaultmem, OBJECT(s), &ppb_default_ops, s,
429 memory_region_add_subregion_overlap(&s->container, 0xe0000000,
430 &s->defaultmem, -1);
433 sbd = SYS_BUS_DEVICE(&s->nvic);
435 qdev_get_gpio_in(DEVICE(s->cpu), ARM_CPU_IRQ));
437 memory_region_add_subregion(&s->container, 0xe000e000,
439 if (arm_feature(&s->cpu->env, ARM_FEATURE_V8)) {
441 memory_region_init_io(&s->sysreg_ns_mem, OBJECT(s),
450 s->sysreg_ns_mem.disable_reentrancy_guard = true;
451 memory_region_add_subregion(&s->container, 0xe002e000,
452 &s->sysreg_ns_mem);
459 * it has an immediate source (the ARMv7M's clock object) but not
463 if (clock_has_source(s->refclk)) {
464 qdev_connect_clock_in(DEVICE(&s->systick[M_REG_NS]), "refclk",
465 s->refclk);
467 qdev_connect_clock_in(DEVICE(&s->systick[M_REG_NS]), "cpuclk", s->cpuclk);
468 if (!sysbus_realize(SYS_BUS_DEVICE(&s->systick[M_REG_NS]), errp)) {
471 sysbus_connect_irq(SYS_BUS_DEVICE(&s->systick[M_REG_NS]), 0,
472 qdev_get_gpio_in_named(DEVICE(&s->nvic),
475 if (arm_feature(&s->cpu->env, ARM_FEATURE_M_SECURITY)) {
481 object_initialize_child(OBJECT(dev), "systick-reg-s",
482 &s->systick[M_REG_S], TYPE_SYSTICK);
483 if (clock_has_source(s->refclk)) {
484 qdev_connect_clock_in(DEVICE(&s->systick[M_REG_S]), "refclk",
485 s->refclk);
487 qdev_connect_clock_in(DEVICE(&s->systick[M_REG_S]), "cpuclk",
488 s->cpuclk);
490 if (!sysbus_realize(SYS_BUS_DEVICE(&s->systick[M_REG_S]), errp)) {
493 sysbus_connect_irq(SYS_BUS_DEVICE(&s->systick[M_REG_S]), 0,
494 qdev_get_gpio_in_named(DEVICE(&s->nvic),
498 memory_region_init_io(&s->systickmem, OBJECT(s),
499 &v7m_systick_ops, s,
502 memory_region_add_subregion_overlap(&s->container, 0xe000e010,
503 &s->systickmem, 1);
504 if (arm_feature(&s->cpu->env, ARM_FEATURE_V8)) {
505 memory_region_init_io(&s->systick_ns_mem, OBJECT(s),
506 &v7m_sysreg_ns_ops, &s->systickmem,
513 s->systick_ns_mem.disable_reentrancy_guard = true;
514 memory_region_add_subregion_overlap(&s->container, 0xe002e010,
515 &s->systick_ns_mem, 1);
519 if (cpu_isar_feature(aa32_ras, s->cpu)) {
521 &s->ras, TYPE_ARMV7M_RAS);
522 sbd = SYS_BUS_DEVICE(&s->ras);
526 memory_region_add_subregion_overlap(&s->container, 0xe0005000,
530 for (i = 0; i < ARRAY_SIZE(s->bitband); i++) {
531 if (s->enable_bitband) {
532 Object *obj = OBJECT(&s->bitband[i]);
533 sbd = SYS_BUS_DEVICE(&s->bitband[i]);
540 OBJECT(s->board_memory), &error_abort);
545 memory_region_add_subregion(&s->container, bitband_output_addr[i],
548 object_unparent(OBJECT(&s->bitband[i]));
566 DEFINE_PROP_UINT32("mpu-s-regions", ARMv7MState, mpu_s_regions, UINT_MAX),
629 error_report("Could not load kernel '%s'", kernel_filename);