rem: buffer = (uchar_t *)p1275_cell2uint(cif[CIF_MIN_SIZE+0]);
add: buffer = (uchar_t *)(uintptr_t)p1275_cell2uint(cif[CIF_MIN_SIZE+0]);
context: polled_read(cell_t *cif){	uint_t				actual;	cons_polledio_t			*polled_io;	uint_t				in_args;	uint_t				out_args;	uchar_t				*buffer;	uint_t				buflen;	uchar_t				key;	/*	 * The number of arguments passed in by the firmware	 */	in_args = p1275_cell2uint(cif[CIF_NUMBER_IN_ARGS]);	/*	 * Calculate the location of the first out arg.  This location is	 * CIF_MIN_SIZE plus the in argument locations.	 */	out_args = CIF_MIN_SIZE + in_args;	/*	 * The firmware should pass in a pointer to a buffer, and the	 * number of characters it expects or expects to write.	 * If 2 arguments are not passed in, then return an error.	 */	if (in_args != 2) {		/*		 * Tell firmware how many arguments we are passing back.		 */		cif[CIF_NUMBER_OUT_ARGS] = p1275_uint2cell((uint_t)1);		/*		 * Tell the firmware that we cannot give it any characters.		 */		cif[out_args] = p1275_uint2cell(CIF_FAILURE);		return;	}	/*	 * Get the address of where to copy the characters into.	 */	buffer = (uchar_t *)p1275_cell2uint(cif[CIF_MIN_SIZE+0]);	/*	 * Get the length of the buffer that we can copy characters into.	 */	buflen = p1275_cell2uint(cif[CIF_MIN_SIZE+1]);	/*	 * Make sure there is enough room in the buffer to copy the	 * characters into.	 */	if (buflen == 0) {		/*		 * Tell the OBP that we cannot give it any characters.		 */		cif[CIF_NUMBER_OUT_ARGS] = p1275_uint2cell((uint_t)1);		/*		 * Tell the firmware that we cannot give it any characters.		 */		cif[out_args] = p1275_uint2cell(CIF_FAILURE);		return;	}	/*	 * Pass back whether or not the operation was a success or	 * failure plus the actual number of bytes in the buffer.	 * Tell firmware how many arguments we are passing back.	 */	cif[CIF_NUMBER_OUT_ARGS] = p1275_uint2cell((uint_t)2);	/*	 * Initialize the cif to be "no characters"	 */	cif[out_args+0] = p1275_uint2cell(CIF_SUCCESS);	cif[out_args+1] = p1275_uint2cell(CIF_NO_CHARACTERS);	/*	 * We check to see if there is an	 * input device that has been registered.	 */	polled_io = polled_input_device.polled_io;	if (polled_io == NULL) {		/*		 * The cif structure is already set up to return		 * no characters.		 */		return;	}	actual = 0;	/*	 * Obtain the characters	 */	while (polled_io->cons_polledio_ischar(		polled_io->cons_polledio_argument) == B_TRUE) {		/*		 * Make sure that we don't overrun the buffer.		 */		if (actual == buflen) {			break;		}		/*		 * Call down to the device to copy the input data into the		 * buffer.		 */		key = polled_io->cons_polledio_getchar(			polled_io->cons_polledio_argument);		*(buffer + actual) = key;		actual++;	}	/*	 * There is a special return code when there is no data.	 */	if (actual == 0) {		/*		 * The cif structure is already set up to return		 * no characters.		 */		return;	}	/*	 * Tell firmware how many characters we are sending it.	 */	cif[out_args+0] = p1275_uint2cell((uint_t)CIF_SUCCESS);	cif[out_args+1] = p1275_uint2cell((uint_t)actual);}