diff --git a/openbsc/include/openbsc/abis_rsl.h b/openbsc/include/openbsc/abis_rsl.h
index b27595e..100a6d1 100644
--- a/openbsc/include/openbsc/abis_rsl.h
+++ b/openbsc/include/openbsc/abis_rsl.h
@@ -31,6 +31,7 @@
 struct gsm_subscriber;
 struct gsm_bts_trx_ts;
 
+#define GSM48_LEN2PLEN(a)	(((a) << 2) | 1)
 
 int rsl_bcch_info(struct gsm_bts_trx *trx, uint8_t type,
 		  const uint8_t *data, int len);
diff --git a/openbsc/src/libbsc/abis_rsl.c b/openbsc/src/libbsc/abis_rsl.c
index 8e9258c..df76788 100644
--- a/openbsc/src/libbsc/abis_rsl.c
+++ b/openbsc/src/libbsc/abis_rsl.c
@@ -1332,8 +1332,6 @@
 	rsl_rf_chan_release(lchan, 1, SACCH_NONE);
 }
 
-#define GSM48_LEN2PLEN(a)	(((a) << 2) | 1)
-
 /* Format an IMM ASS REJ according to 04.08 Chapter 9.1.20 */
 static int rsl_send_imm_ass_rej(struct gsm_bts *bts,
 				unsigned int num_req_refs,
diff --git a/openbsc/src/libbsc/system_information.c b/openbsc/src/libbsc/system_information.c
index 62ee306..5490c83 100644
--- a/openbsc/src/libbsc/system_information.c
+++ b/openbsc/src/libbsc/system_information.c
@@ -25,6 +25,7 @@
 #include <string.h>
 #include <stdio.h>
 #include <netinet/in.h>
+#include <stdbool.h>
 
 #include <osmocom/core/bitvec.h>
 #include <osmocom/core/utils.h>
@@ -67,8 +68,8 @@
 	return 1;
 }
 
-static int use_arfcn(const struct gsm_bts *bts, const int bis, const int ter,
-			const int pgsm, const int arfcn)
+static inline int use_arfcn(const struct gsm_bts *bts, const bool bis, const bool ter,
+			const bool pgsm, const int arfcn)
 {
 	if (bts->force_combined_si)
 		return !bis && !ter;
@@ -135,9 +136,9 @@
 }
 
 /* generate a variable bitmap */
-static int enc_freq_lst_var_bitmap(uint8_t *chan_list,
+static inline int enc_freq_lst_var_bitmap(uint8_t *chan_list,
 				struct bitvec *bv, const struct gsm_bts *bts,
-				int bis, int ter, int min, int pgsm)
+				bool bis, bool ter, int min, bool pgsm)
 {
 	int i;
 
@@ -164,9 +165,9 @@
 }
 
 /* generate a frequency list with the range 512 format */
-static int enc_freq_lst_range(uint8_t *chan_list,
+static inline int enc_freq_lst_range(uint8_t *chan_list,
 				struct bitvec *bv, const struct gsm_bts *bts,
-				int bis, int ter, int pgsm)
+				bool bis, bool ter, bool pgsm)
 {
 	int arfcns[RANGE_ENC_MAX_ARFCNS];
 	int w[RANGE_ENC_MAX_ARFCNS];
@@ -226,15 +227,15 @@
 
 /* generate a cell channel list as per Section 10.5.2.1b of 04.08 */
 static int bitvec2freq_list(uint8_t *chan_list, struct bitvec *bv,
-			    const struct gsm_bts *bts, int bis, int ter)
+			    const struct gsm_bts *bts, bool bis, bool ter)
 {
-	int i, rc, min = -1, max = -1, pgsm = 0, arfcns = 0;
-
+	int i, rc, min = -1, max = -1, arfcns = 0;
+	bool pgsm = false;
 	memset(chan_list, 0, 16);
 
 	if (bts->band == GSM_BAND_900
 	 && bts->c0->arfcn >= 1 && bts->c0->arfcn <= 124)
-		pgsm = 1;
+		pgsm = true;
 	/* P-GSM-only handsets only support 'bit map 0 format' */
 	if (!bis && !ter && pgsm) {
 		chan_list[0] = 0;
@@ -327,12 +328,12 @@
 	}
 
 	/* then we generate a GSM 04.08 frequency list from the bitvec */
-	return bitvec2freq_list(chan_list, bv, bts, 0, 0);
+	return bitvec2freq_list(chan_list, bv, bts, false, false);
 }
 
 /* generate a cell channel list as per Section 10.5.2.1b of 04.08 */
 static int generate_bcch_chan_list(uint8_t *chan_list, struct gsm_bts *bts,
-	int si5, int bis, int ter)
+	bool si5, bool bis, bool ter)
 {
 	struct gsm_bts *cur_bts;
 	struct bitvec *bv;
@@ -422,7 +423,7 @@
 	si2->header.skip_indicator = 0;
 	si2->header.system_information = GSM48_MT_RR_SYSINFO_2;
 
-	rc = generate_bcch_chan_list(si2->bcch_frequency_list, bts, 0, 0, 0);
+	rc = generate_bcch_chan_list(si2->bcch_frequency_list, bts, false, false, false);
 	if (rc < 0)
 		return rc;
 	list_arfcn(si2->bcch_frequency_list, 0xce,
@@ -448,7 +449,7 @@
 	si2b->header.skip_indicator = 0;
 	si2b->header.system_information = GSM48_MT_RR_SYSINFO_2bis;
 
-	rc = generate_bcch_chan_list(si2b->bcch_frequency_list, bts, 0, 1, 0);
+	rc = generate_bcch_chan_list(si2b->bcch_frequency_list, bts, false, true, false);
 	if (rc < 0)
 		return rc;
 	n = list_arfcn(si2b->bcch_frequency_list, 0xce,
@@ -482,7 +483,7 @@
 	si2t->header.skip_indicator = 0;
 	si2t->header.system_information = GSM48_MT_RR_SYSINFO_2ter;
 
-	rc = generate_bcch_chan_list(si2t->ext_bcch_frequency_list, bts, 0, 0, 1);
+	rc = generate_bcch_chan_list(si2t->ext_bcch_frequency_list, bts, false, false, true);
 	if (rc < 0)
 		return rc;
 	n = list_arfcn(si2t->ext_bcch_frequency_list, 0x8e,
@@ -630,7 +631,7 @@
 	si5->rr_protocol_discriminator = GSM48_PDISC_RR;
 	si5->skip_indicator = 0;
 	si5->system_information = GSM48_MT_RR_SYSINFO_5;
-	rc = generate_bcch_chan_list(si5->bcch_frequency_list, bts, 1, 0, 0);
+	rc = generate_bcch_chan_list(si5->bcch_frequency_list, bts, true, false, false);
 	if (rc < 0)
 		return rc;
 	list_arfcn(si5->bcch_frequency_list, 0xce,
@@ -665,7 +666,7 @@
 	si5b->rr_protocol_discriminator = GSM48_PDISC_RR;
 	si5b->skip_indicator = 0;
 	si5b->system_information = GSM48_MT_RR_SYSINFO_5bis;
-	rc = generate_bcch_chan_list(si5b->bcch_frequency_list, bts, 1, 1, 0);
+	rc = generate_bcch_chan_list(si5b->bcch_frequency_list, bts, true, true, false);
 	if (rc < 0)
 		return rc;
 	n = list_arfcn(si5b->bcch_frequency_list, 0xce,
@@ -709,7 +710,7 @@
 	si5t->rr_protocol_discriminator = GSM48_PDISC_RR;
 	si5t->skip_indicator = 0;
 	si5t->system_information = GSM48_MT_RR_SYSINFO_5ter;
-	rc = generate_bcch_chan_list(si5t->bcch_frequency_list, bts, 1, 0, 1);
+	rc = generate_bcch_chan_list(si5t->bcch_frequency_list, bts, true, false, true);
 	if (rc < 0)
 		return rc;
 	n = list_arfcn(si5t->bcch_frequency_list, 0x8e,
