From d1d10b58ab101ef76a2ed395ef0a2c8de6e37e64 Mon Sep 17 00:00:00 2001 From: thorpej Date: Fri, 9 Mar 2007 06:45:19 +0000 Subject: [PATCH] Make ipl_t and ipl_cookie_t 8-bit values. kmutex is now down to 12 bytes (from 20) on ARM. Approved by Matt Thomas. --- sys/arch/acorn26/include/intr.h | 4 ++-- sys/arch/arm/arm32/intr.c | 13 +++++++++---- sys/arch/arm/footbridge/footbridge_intr.h | 4 ++-- sys/arch/arm/include/arm32/psl.h | 8 ++++---- sys/arch/arm/include/mutex.h | 10 +++++----- sys/arch/evbarm/include/intr.h | 4 ++-- sys/arch/iyonix/include/intr.h | 4 ++-- sys/arch/zaurus/include/intr.h | 4 ++-- 8 files changed, 28 insertions(+), 23 deletions(-) diff --git a/sys/arch/acorn26/include/intr.h b/sys/arch/acorn26/include/intr.h index 70b9c80695a1..5a6a4428ba3c 100644 --- a/sys/arch/acorn26/include/intr.h +++ b/sys/arch/acorn26/include/intr.h @@ -1,4 +1,4 @@ -/* $NetBSD: intr.h,v 1.10 2007/02/16 02:53:43 ad Exp $ */ +/* $NetBSD: intr.h,v 1.11 2007/03/09 06:45:19 thorpej Exp $ */ /*- * Copyright (c) 1998, 2000 Ben Harris * All rights reserved. @@ -86,7 +86,7 @@ extern int raisespl(int); extern void lowerspl(int); extern int hardsplx(int); -typedef int ipl_t; +typedef uint8_t ipl_t; typedef struct { ipl_t _ipl; } ipl_cookie_t; diff --git a/sys/arch/arm/arm32/intr.c b/sys/arch/arm/arm32/intr.c index 08bab88692f2..c4dcfe7b21ce 100644 --- a/sys/arch/arm/arm32/intr.c +++ b/sys/arch/arm/arm32/intr.c @@ -1,4 +1,4 @@ -/* $NetBSD: intr.c,v 1.20 2007/02/20 04:14:23 matt Exp $ */ +/* $NetBSD: intr.c,v 1.21 2007/03/09 06:45:19 thorpej Exp $ */ /* * Copyright (c) 1994-1998 Mark Brinicombe. @@ -36,7 +36,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intr.c,v 1.20 2007/02/20 04:14:23 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intr.c,v 1.21 2007/03/09 06:45:19 thorpej Exp $"); #include "opt_irqstats.h" @@ -204,12 +204,17 @@ static const int ipl_to_spl_map[] = { }; int -ipl_to_spl(int ipl) +ipl_to_spl(ipl_t ipl) { + int spl; + KASSERT(ipl < __arraycount(ipl_to_spl_map)); KASSERT(ipl_to_spl_map[ipl]); - return ipl_to_spl_map[ipl] - 1; + spl = ipl_to_spl_map[ipl] - 1; + KASSERT(spl < 0x100); + + return spl; } #ifdef DIAGNOSTIC diff --git a/sys/arch/arm/footbridge/footbridge_intr.h b/sys/arch/arm/footbridge/footbridge_intr.h index 5db37aae6002..92bf3c9a1bd5 100644 --- a/sys/arch/arm/footbridge/footbridge_intr.h +++ b/sys/arch/arm/footbridge/footbridge_intr.h @@ -1,4 +1,4 @@ -/* $NetBSD: footbridge_intr.h,v 1.9 2006/12/21 15:55:22 yamt Exp $ */ +/* $NetBSD: footbridge_intr.h,v 1.10 2007/03/09 06:45:20 thorpej Exp $ */ /* * Copyright (c) 2001, 2002 Wasabi Systems, Inc. @@ -176,7 +176,7 @@ void _setsoftintr(int); #define spl0() (void)_spllower(IPL_NONE) #define spllowersoftclock() (void)_spllower(IPL_SOFTCLOCK) -typedef int ipl_t; +typedef uint8_t ipl_t; typedef struct { ipl_t _ipl; } ipl_cookie_t; diff --git a/sys/arch/arm/include/arm32/psl.h b/sys/arch/arm/include/arm32/psl.h index e5f7ff7c88b4..138401431ead 100644 --- a/sys/arch/arm/include/arm32/psl.h +++ b/sys/arch/arm/include/arm32/psl.h @@ -1,4 +1,4 @@ -/* $NetBSD: psl.h,v 1.9 2007/02/18 07:48:20 matt Exp $ */ +/* $NetBSD: psl.h,v 1.10 2007/03/09 06:45:20 thorpej Exp $ */ /* * Copyright (c) 1995 Mark Brinicombe. @@ -104,9 +104,9 @@ extern int current_spl_level; extern u_int spl_masks[_SPL_LEVELS + 1]; -typedef int ipl_t; +typedef uint8_t ipl_t; typedef struct { - int _spl; + uint8_t _spl; } ipl_cookie_t; int ipl_to_spl(ipl_t); @@ -115,7 +115,7 @@ static inline ipl_cookie_t makeiplcookie(ipl_t ipl) { - return (ipl_cookie_t){._spl = ipl_to_spl(ipl)}; + return (ipl_cookie_t){._spl = (uint8_t)ipl_to_spl(ipl)}; } static inline int diff --git a/sys/arch/arm/include/mutex.h b/sys/arch/arm/include/mutex.h index 7edba9d879c2..97b5f17db36f 100644 --- a/sys/arch/arm/include/mutex.h +++ b/sys/arch/arm/include/mutex.h @@ -1,4 +1,4 @@ -/* $NetBSD: mutex.h,v 1.2 2007/03/09 05:40:08 thorpej Exp $ */ +/* $NetBSD: mutex.h,v 1.3 2007/03/09 06:45:20 thorpej Exp $ */ /*- * Copyright (c) 2002, 2007 The NetBSD Foundation, Inc. @@ -84,7 +84,7 @@ struct kmutex { uintptr_t mtx_pad1; - uint32_t mtx_pad2[4]; + uint32_t mtx_pad2[2]; }; #else /* __MUTEX_PRIVATE */ @@ -93,9 +93,9 @@ struct kmutex { volatile uintptr_t mtx_owner; /* 0-3 */ __cpu_simple_lock_t mtx_interlock; /* 4 */ __cpu_simple_lock_t mtx_lock; /* 5 */ - uint8_t mtx_pad[2]; /* 6-7 XXX */ - ipl_cookie_t mtx_ipl; /* 8-11 */ - uint32_t mtx_id; /* 16-19 */ + ipl_cookie_t mtx_ipl; /* 6 */ + uint8_t mtx_pad; /* 7 */ + uint32_t mtx_id; /* 8-11 */ }; #if 0 diff --git a/sys/arch/evbarm/include/intr.h b/sys/arch/evbarm/include/intr.h index 4efd75b894a5..6799134822a6 100644 --- a/sys/arch/evbarm/include/intr.h +++ b/sys/arch/evbarm/include/intr.h @@ -1,4 +1,4 @@ -/* $NetBSD: intr.h,v 1.16 2007/02/16 02:53:45 ad Exp $ */ +/* $NetBSD: intr.h,v 1.17 2007/03/09 06:45:20 thorpej Exp $ */ /* * Copyright (c) 2001, 2003 Wasabi Systems, Inc. @@ -150,7 +150,7 @@ void _setsoftintr(int); #define splsoft() _splraise(IPL_SOFT) -typedef int ipl_t; +typedef uint8_t ipl_t; typedef struct { ipl_t _ipl; } ipl_cookie_t; diff --git a/sys/arch/iyonix/include/intr.h b/sys/arch/iyonix/include/intr.h index c69a044a9fa1..73a795162741 100644 --- a/sys/arch/iyonix/include/intr.h +++ b/sys/arch/iyonix/include/intr.h @@ -1,4 +1,4 @@ -/* $NetBSD: intr.h,v 1.6 2007/02/16 02:53:47 ad Exp $ */ +/* $NetBSD: intr.h,v 1.7 2007/03/09 06:45:20 thorpej Exp $ */ /* * Copyright (c) 2001, 2003 Wasabi Systems, Inc. @@ -136,7 +136,7 @@ void _setsoftintr(int); #define splsoft() _splraise(IPL_SOFT) -typedef int ipl_t; +typedef uint8_t ipl_t; typedef struct { ipl_t _ipl; } ipl_cookie_t; diff --git a/sys/arch/zaurus/include/intr.h b/sys/arch/zaurus/include/intr.h index 1b1e26dc0d34..b585b05b6a2f 100644 --- a/sys/arch/zaurus/include/intr.h +++ b/sys/arch/zaurus/include/intr.h @@ -1,4 +1,4 @@ -/* $NetBSD: intr.h,v 1.3 2007/02/16 02:53:52 ad Exp $ */ +/* $NetBSD: intr.h,v 1.4 2007/03/09 06:45:20 thorpej Exp $ */ /* * Copyright (c) 2001, 2003 Wasabi Systems, Inc. @@ -150,7 +150,7 @@ void _setsoftintr(int); #define splsoft() _splraise(IPL_SOFT) -typedef int ipl_t; +typedef uint8_t ipl_t; typedef struct { ipl_t _ipl; } ipl_cookie_t;