142f0d1faSAndrew Turner /*-
242f0d1faSAndrew Turner * Copyright (c) 2015 Andrew Turner
342f0d1faSAndrew Turner * All rights reserved.
442f0d1faSAndrew Turner *
542f0d1faSAndrew Turner * Redistribution and use in source and binary forms, with or without
642f0d1faSAndrew Turner * modification, are permitted provided that the following conditions
742f0d1faSAndrew Turner * are met:
842f0d1faSAndrew Turner * 1. Redistributions of source code must retain the above copyright
942f0d1faSAndrew Turner * notice, this list of conditions and the following disclaimer.
1042f0d1faSAndrew Turner * 2. Redistributions in binary form must reproduce the above copyright
1142f0d1faSAndrew Turner * notice, this list of conditions and the following disclaimer in the
1242f0d1faSAndrew Turner * documentation and/or other materials provided with the distribution.
1342f0d1faSAndrew Turner *
1442f0d1faSAndrew Turner * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
1542f0d1faSAndrew Turner * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1642f0d1faSAndrew Turner * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1742f0d1faSAndrew Turner * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
1842f0d1faSAndrew Turner * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
1942f0d1faSAndrew Turner * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2042f0d1faSAndrew Turner * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2142f0d1faSAndrew Turner * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2242f0d1faSAndrew Turner * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2342f0d1faSAndrew Turner * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2442f0d1faSAndrew Turner * SUCH DAMAGE.
2542f0d1faSAndrew Turner *
2642f0d1faSAndrew Turner */
2742f0d1faSAndrew Turner
2842f0d1faSAndrew Turner #include "opt_platform.h"
2942f0d1faSAndrew Turner
3042f0d1faSAndrew Turner #include <sys/param.h>
3142f0d1faSAndrew Turner #include <sys/systm.h>
3230b72b68SRuslan Bukin #include <sys/devmap.h>
3342f0d1faSAndrew Turner
3442f0d1faSAndrew Turner #include <vm/vm.h>
3542f0d1faSAndrew Turner
3642f0d1faSAndrew Turner #include <machine/bus.h>
3742f0d1faSAndrew Turner #include <machine/platform.h>
3842f0d1faSAndrew Turner #include <machine/platformvar.h>
3942f0d1faSAndrew Turner
40a19c0b37SAndrew Turner #include <arm/qemu/virt_mp.h>
41a19c0b37SAndrew Turner
4242f0d1faSAndrew Turner #include "platform_if.h"
4342f0d1faSAndrew Turner
4442f0d1faSAndrew Turner /*
4542f0d1faSAndrew Turner * Set up static device mappings.
4642f0d1faSAndrew Turner */
4742f0d1faSAndrew Turner static int
virt_devmap_init(platform_t plat)4842f0d1faSAndrew Turner virt_devmap_init(platform_t plat)
4942f0d1faSAndrew Turner {
5042f0d1faSAndrew Turner
5130b72b68SRuslan Bukin devmap_add_entry(0x09000000, 0x100000); /* Uart */
5242f0d1faSAndrew Turner return (0);
5342f0d1faSAndrew Turner }
5442f0d1faSAndrew Turner
5542f0d1faSAndrew Turner static platform_method_t virt_methods[] = {
5642f0d1faSAndrew Turner PLATFORMMETHOD(platform_devmap_init, virt_devmap_init),
5742f0d1faSAndrew Turner
58a19c0b37SAndrew Turner #ifdef SMP
59a19c0b37SAndrew Turner PLATFORMMETHOD(platform_mp_start_ap, virt_mp_start_ap),
60a19c0b37SAndrew Turner #endif
61a19c0b37SAndrew Turner
6242f0d1faSAndrew Turner PLATFORMMETHOD_END,
6342f0d1faSAndrew Turner };
6442f0d1faSAndrew Turner
65cca48a59SAndrew Turner FDT_PLATFORM_DEF(virt, "virt", 0, "linux,dummy-virt", 1);
66*e94f204aSBjoern A. Zeeb
67*e94f204aSBjoern A. Zeeb static int
gem5_devmap_init(platform_t plat)68*e94f204aSBjoern A. Zeeb gem5_devmap_init(platform_t plat)
69*e94f204aSBjoern A. Zeeb {
70*e94f204aSBjoern A. Zeeb
71*e94f204aSBjoern A. Zeeb devmap_add_entry(0x1c090000, 0x100000); /* Uart */
72*e94f204aSBjoern A. Zeeb return (0);
73*e94f204aSBjoern A. Zeeb }
74*e94f204aSBjoern A. Zeeb
75*e94f204aSBjoern A. Zeeb static platform_method_t gem5_methods[] = {
76*e94f204aSBjoern A. Zeeb PLATFORMMETHOD(platform_devmap_init, gem5_devmap_init),
77*e94f204aSBjoern A. Zeeb
78*e94f204aSBjoern A. Zeeb PLATFORMMETHOD_END,
79*e94f204aSBjoern A. Zeeb };
80*e94f204aSBjoern A. Zeeb
81*e94f204aSBjoern A. Zeeb FDT_PLATFORM_DEF(gem5, "gem5", 0, "arm,vexpress", 1);
82