FreeCalypso > hg > freecalypso-tools
view target-utils/include/romvars.h @ 965:2969032bdfac
fcup-smsend[mult]: fix buglet in K&R C NULL pointer passing
The only 100% safe way to pass a NULL pointer as a function argument
in K&R C is to cast 0 to a pointer type; failing to do so may cause
mysterious bugs (invalid stack frames or garbage in argument registers)
on 64-bit machines. This issue has already been fixed in most of
FC host tools, but I just found some missed spots: passing of NULL UDH
to PDU encoding functions in fcup-smsend[mult] in the case of single
(not concatenated) SMS.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 01 Sep 2023 07:33:51 +0000 |
parents | e7502631a0f9 |
children |
line wrap: on
line source
/* * Our loadagent will always be loaded into Calypso targets by the on-chip * boot ROM operating in the UART download mode. The lowest IRAM address * at which we can load our code is 0x800750; somewhat lower at 0x800518 * the boot ROM downloader has a few variables which may have been intended * to be private to the boot ROM, but which are useful to us. For example, * by looking at these variables, we can see which of the two UARTs was * used to feed our code to the boot ROM, and use the same UART for * subsequent communication - without building multiple versions of our * loadagent or resorting to other ugliness. * * This header file defines the layout of the IRAM structure in question, * based on the disassembly of the boot ROM. */ #ifndef __ROMVARS_H #define __ROMVARS_H #include "types.h" struct boot_rom_vars { u8 baud_rate_code; u8 pad1[3]; u32 uart_timeout; u8 uart_id; u8 pll_config; u16 cs_ws_config; u8 clktcxo_13mhz; u8 rhea_cntl; u16 chksum_cmd; u16 chksum_accum; u16 pad2; u32 branch_addr; }; #endif /* include guard */