|
@@ -254,9 +254,13 @@ extern void remove_user_from_rm_stack ( userptr_t data, size_t size );
|
254
|
254
|
#define CODE_DEFAULT ".code32"
|
255
|
255
|
#endif
|
256
|
256
|
|
|
257
|
+/* LINE_SYMBOL: declare a symbol for the current source code line */
|
|
258
|
+#define LINE_SYMBOL _S2 ( OBJECT ) "__line_" _S2 ( __LINE__ ) ":"
|
|
259
|
+
|
257
|
260
|
/* TEXT16_CODE: declare a fragment of code that resides in .text16 */
|
258
|
261
|
#define TEXT16_CODE( asm_code_str ) \
|
259
|
262
|
".section \".text16\", \"ax\", @progbits\n\t" \
|
|
263
|
+ "\n" LINE_SYMBOL "\n\t" \
|
260
|
264
|
".code16\n\t" \
|
261
|
265
|
asm_code_str "\n\t" \
|
262
|
266
|
CODE_DEFAULT "\n\t" \
|
|
@@ -276,6 +280,7 @@ extern void remove_user_from_rm_stack ( userptr_t data, size_t size );
|
276
|
280
|
"push $1f\n\t" \
|
277
|
281
|
"call phys_call\n\t" \
|
278
|
282
|
".section \".text.phys\", \"ax\", @progbits\n\t"\
|
|
283
|
+ "\n" LINE_SYMBOL "\n\t" \
|
279
|
284
|
".code32\n\t" \
|
280
|
285
|
"\n1:\n\t" \
|
281
|
286
|
asm_code_str \
|