diff --git a/pic16bit/modpybled.c b/pic16bit/modpybled.c
index 1610dc5680296bb000a1d64d0a2d9d4606666913..797246d13c40e1588043b232c85bb0a8225d739e 100644
--- a/pic16bit/modpybled.c
+++ b/pic16bit/modpybled.c
@@ -46,7 +46,7 @@ void pyb_led_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t ki
     mp_printf(print, "LED(%u)", LED_ID(self));
 }
 
-STATIC mp_obj_t pyb_led_make_new(mp_obj_t type_in, mp_uint_t n_args, mp_uint_t n_kw, const mp_obj_t *args) {
+STATIC mp_obj_t pyb_led_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
     mp_arg_check_num(n_args, n_kw, 1, 1, false);
     mp_int_t led_id = mp_obj_get_int(args[0]);
     if (!(1 <= led_id && led_id <= NUM_LED)) {
diff --git a/pic16bit/modpybswitch.c b/pic16bit/modpybswitch.c
index 901e478cc9a454fe1e16900cca108667fcda827e..aa102e82172cfa04a0e91906f48efba2ea844a43 100644
--- a/pic16bit/modpybswitch.c
+++ b/pic16bit/modpybswitch.c
@@ -45,7 +45,7 @@ void pyb_switch_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t
     mp_printf(print, "Switch(%u)", SWITCH_ID(self));
 }
 
-STATIC mp_obj_t pyb_switch_make_new(mp_obj_t type_in, mp_uint_t n_args, mp_uint_t n_kw, const mp_obj_t *args) {
+STATIC mp_obj_t pyb_switch_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
     mp_arg_check_num(n_args, n_kw, 1, 1, false);
     mp_int_t sw_id = mp_obj_get_int(args[0]);
     if (!(1 <= sw_id && sw_id <= NUM_SWITCH)) {
@@ -60,7 +60,7 @@ mp_obj_t pyb_switch_value(mp_obj_t self_in) {
 }
 STATIC MP_DEFINE_CONST_FUN_OBJ_1(pyb_switch_value_obj, pyb_switch_value);
 
-mp_obj_t pyb_switch_call(mp_obj_t self_in, mp_uint_t n_args, mp_uint_t n_kw, const mp_obj_t *args) {
+mp_obj_t pyb_switch_call(mp_obj_t self_in, size_t n_args, size_t n_kw, const mp_obj_t *args) {
     mp_arg_check_num(n_args, n_kw, 0, 0, false);
     return pyb_switch_value(self_in);
 }
diff --git a/pic16bit/mpconfigport.h b/pic16bit/mpconfigport.h
index 97267b200b7d43f7ebd435b424454e9cf653e6b3..4921d7be2a07575fa0fe0a8388cb9c8944c24ac7 100644
--- a/pic16bit/mpconfigport.h
+++ b/pic16bit/mpconfigport.h
@@ -108,3 +108,7 @@ extern const struct _mp_obj_module_t pyb_module;
 #define MICROPY_MPHALPORT_H "pic16bit_mphal.h"
 #define MICROPY_HW_BOARD_NAME "dsPICSK"
 #define MICROPY_HW_MCU_NAME "dsPIC33"
+
+// XC16 toolchain doesn't seem to define these
+typedef int intptr_t;
+typedef unsigned int uintptr_t;
diff --git a/pic16bit/unistd.h b/pic16bit/unistd.h
index 5ed9cb41012069a28df137db156e9109ea6a0c62..cdd9fe0616e752fd80a863a0f08c81b7bb2a27c6 100644
--- a/pic16bit/unistd.h
+++ b/pic16bit/unistd.h
@@ -1,3 +1,5 @@
 // XC16 compiler doesn't seem to have unistd.h file
 
 #define SEEK_CUR 1
+
+typedef int ssize_t;