1296077Sadrian#!/bin/sh
2296077Sadrian#
3300250Sadrian# Copyright (c) 2015-2016 Landon Fuller <landon@landonf.org>
4296077Sadrian# Copyright (c) 2004-2005 Poul-Henning Kamp.
5296077Sadrian# All rights reserved.
6296077Sadrian#
7296077Sadrian# Redistribution and use in source and binary forms, with or without
8296077Sadrian# modification, are permitted provided that the following conditions
9296077Sadrian# are met:
10296077Sadrian# 1. Redistributions of source code must retain the above copyright
11296077Sadrian#    notice, this list of conditions and the following disclaimer.
12296077Sadrian# 2. Redistributions in binary form must reproduce the above copyright
13296077Sadrian#    notice, this list of conditions and the following disclaimer in the
14296077Sadrian#    documentation and/or other materials provided with the distribution.
15296077Sadrian#
16296077Sadrian# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17296077Sadrian# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18296077Sadrian# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19296077Sadrian# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20296077Sadrian# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21296077Sadrian# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22296077Sadrian# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23296077Sadrian# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24296077Sadrian# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25296077Sadrian# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26296077Sadrian# SUCH DAMAGE.
27296077Sadrian#
28296077Sadrian# $FreeBSD$
29296077Sadrian#
30296077Sadrian# Generate the bhnd resource macros at the bottom of dev/bhnd/bhnd.h
31296077Sadrian#
32296077Sadrian# Derived from PHK's tools/bus_macros.sh
33296077Sadrian#
34296077Sadrian
35296077Sadrianmacro () {
36296077Sadrian	n=${1}
37296077Sadrian	bus_n=$(echo $n | tr "[:lower:]" "[:upper:]")
38296077Sadrian
39296077Sadrian	shift
40296077Sadrian	echo -n "#define bhnd_bus_${n}(r"
41296077Sadrian	for i
42296077Sadrian	do
43296077Sadrian		echo -n ", ${i}"
44296077Sadrian	done
45296077Sadrian	echo ") \\"
46296077Sadrian	echo "    ((r)->direct) ? \\"
47296077Sadrian	echo -n "	bus_${n}((r)->res"
48296077Sadrian	for i
49296077Sadrian	do
50296077Sadrian		echo -n ", (${i})"
51296077Sadrian	done
52296077Sadrian	echo ") : \\"
53299239Sadrian	echo "	BHND_BUS_${bus_n}( \\"
54299239Sadrian	echo "	    device_get_parent(rman_get_device((r)->res)),	\\"
55296077Sadrian	echo -n "	    rman_get_device((r)->res), (r)"
56296077Sadrian	for i
57296077Sadrian	do
58296077Sadrian		echo -n ", (${i})"
59296077Sadrian	done
60296077Sadrian	echo ")"
61296077Sadrian
62296077Sadrian}
63296077Sadrian
64296077Sadrianmacro barrier o l f
65296077Sadrian
66296077Sadrianfor w in 1 2 4 #8
67296077Sadriando
68296077Sadrian	# macro copy_region_$w so dh do c
69296077Sadrian	# macro copy_region_stream_$w ?
70296077Sadrian	# macro peek_$w
71299239Sadrian	for s in "" stream_
72296077Sadrian	do
73296077Sadrian		macro read_$s$w o
74299239Sadrian		macro read_multi_$s$w o d c
75300250Sadrian		macro read_region_$s$w o d c
76296077Sadrian		macro write_$s$w o v
77299239Sadrian		macro write_multi_$s$w o d c
78300250Sadrian		macro write_region_$s$w o d c
79296077Sadrian	done
80300250Sadrian	
81300250Sadrian	# set_(multi_)?_stream is not supported on ARM/ARM64, and so for
82300250Sadrian	# simplicity, we don't support their use with bhnd resources.
83300250Sadrian	# 
84300250Sadrian	# if that changes, these can be merged back into the stream-eanbled
85300250Sadrian	# loop above.
86300250Sadrian	for s in ""
87300250Sadrian	do
88300250Sadrian		macro set_multi_$s$w o v c
89300250Sadrian		macro set_region_$s$w o v c
90300250Sadrian	done
91296077Sadriandone
92