summaryrefslogtreecommitdiffstats
path: root/sys/dev/aic7xxx/aicasm
diff options
context:
space:
mode:
authorgibbs <gibbs@FreeBSD.org>1999-04-23 23:27:31 +0000
committergibbs <gibbs@FreeBSD.org>1999-04-23 23:27:31 +0000
commit405e2ed76987008c9283af7e5e8f94106999dca9 (patch)
tree3c3a9a4a68271153884366e104e709d26fa7cdca /sys/dev/aic7xxx/aicasm
parent998c74d3802aa5010ff231f96a8e7cc26020179a (diff)
downloadFreeBSD-src-405e2ed76987008c9283af7e5e8f94106999dca9.zip
FreeBSD-src-405e2ed76987008c9283af7e5e8f94106999dca9.tar.gz
Complete conversion to bus dma. This driver now works on the alpha.
aicasm_symbol.c: Correct an unaligned access problem. You can't rely on DB to store your data in an aligned fashion.
Diffstat (limited to 'sys/dev/aic7xxx/aicasm')
-rw-r--r--sys/dev/aic7xxx/aicasm/aicasm_symbol.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/sys/dev/aic7xxx/aicasm/aicasm_symbol.c b/sys/dev/aic7xxx/aicasm/aicasm_symbol.c
index f808e89..0704baa 100644
--- a/sys/dev/aic7xxx/aicasm/aicasm_symbol.c
+++ b/sys/dev/aic7xxx/aicasm/aicasm_symbol.c
@@ -25,7 +25,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: aicasm_symbol.c,v 1.4 1997/09/27 19:37:30 gibbs Exp $
+ * $Id: aicasm_symbol.c,v 1.5 1998/09/15 07:24:17 gibbs Exp $
*/
@@ -128,10 +128,10 @@ symtable_close()
DBT data;
while (symtable->seq(symtable, &key, &data, R_FIRST) == 0) {
- symbol_t *cursym;
+ symbol_t *stored_ptr;
- cursym = *(symbol_t **)data.data;
- symbol_delete(cursym);
+ memcpy(&stored_ptr, data.data, sizeof(stored_ptr));
+ symbol_delete(stored_ptr);
}
symtable->close(symtable);
}
@@ -145,9 +145,10 @@ symbol_t *
symtable_get(name)
char *name;
{
- DBT key;
- DBT data;
- int retval;
+ symbol_t *stored_ptr;
+ DBT key;
+ DBT data;
+ int retval;
key.data = (void *)name;
key.size = strlen(name);
@@ -176,7 +177,8 @@ symtable_get(name)
/* NOTREACHED */
}
}
- return (*(symbol_t **)data.data);
+ memcpy(&stored_ptr, data.data, sizeof(stored_ptr));
+ return (stored_ptr);
}
symbol_node_t *
@@ -327,7 +329,7 @@ symtable_dump(ofile)
while (symtable->seq(symtable, &key, &data, flag) == 0) {
symbol_t *cursym;
- cursym = *(symbol_t **)data.data;
+ memcpy(&cursym, data.data, sizeof(cursym));
switch(cursym->type) {
case REGISTER:
case SCBLOC:
OpenPOWER on IntegriCloud