Crossware

Table of Contents        Previous topic       Next topic       

C/C++ COMPILER->Pragmas->#pragma bss_seg



#pragma bss_seg( ["section-name"] )

The bss_seg pragma specifies the data section where uninitialised C data objects are placed.  Section name can be any valid string contant.  To avoid conflict with the default sections used by the compiler, avoid using names beginning with a double underscore.

Using #pragma bss_seg without a section-name string resets allocation to the default section.

Example:

#pragma bss_seg(MYBSS)

int i;

#pragma bss_seg()

int j;

i will be placed in code section MYBSS.  j will be placed in default bss section.

Note that only j will be initialised to zero by the initialisation routine as supplied.  The following example shows how you might initialise the data in section MYBSS to zero:

    section    MYBSS,data
    section    MYINIT,code
    XDEF      _init_my_bss
_init_my_bss
    move.l    #`size(MYBSS),d0
    beq.s    exit        * MYBSS is empty
    move.l    #MYBSS,a0
moredata
    clr.b    (a0)+        * zero fill
    subq.l    #1,d0
    bne.s    moredata
exit
    rts